问大家一个C语言问题。下面的将字符转换成数值是怎么转换的啊,看不懂,请大家帮帮忙啊,

作者&投稿:延侧 (若有异议请与网页底部的电邮联系)
问大家一个c语言的问题~

if(!(num %5))是说num除5有没余数,而!为非的意思,整体来说就是if(!(num %5))如果没有余数,所以能整除,所以输入:printf("
该数能被 5 整除
");
else
printf("
该数不能被 5 整除
");
意思是:不然就输入不能整除!printf("
该数不能被 5 整除
");

我也是刚学,汗!不正确别打我!

#include #include void main(){ int number;double cost,price,total;printf("please enter number and price");scanf("%d,%lf",&number,&price);//是scanf,不是printf,输入的时候记得以逗号分开,不是空格if (number>=500) cost=0.15;else if (number>=300) cost=0.10;else if (number>=100) cost=0.075;else if (number>=50) cost=0.05;else cost=0;total=price*number*(1-cost);printf("total=%10.2f
",total);}目测,你的结果是因为你的逗号是中文的……
VC++6.0运行结果

num=num*10+(str[i]-'0');
这一句实现了字符串到数字的转化。
首先:char型都有个ASCII码值,str[i]-'0'就把数字字符便成了相应的数字值。

再者:num=num*10+每次读到一个数字,就把num乘10,再加上这个数字,由于是从高位读取的,就还原出了这个数。就像23可以分解成:2*10+3一样,逐步分解的反向操作,就合成了数字。

循环中其他语句都是为了判断数字的正负符号。

再在if (flag==1) num=-num;的时候把正数变成负数。

num=num*10+(str[i]-'0'); /*将字符转换成数值*/
是因为,c语言中字符是以ascII码形式存放的,它可以作为数值进行加减运算,而且字符'0'至'9'是连续的,也就是说字符'1'与字符'0'做差后其值为数字1;
所以(str[i]-'0')是求出当前位的数值.NUM=NUM*10是因为每多一个数,说明它前面的数位将高一位.这样,我们先看一下它的执行过程:
表 达 式: i str[i] (str[i]-'0') num
第一次循环 0 '-' 不执行 0
第二次 1 '1' 1 1
... 2 '6' 6 16
... 3 '8' 8 168
... 4 '8' 8 1688
... 5 '\0' 退出

原理楼上4位已经说得很明白了,我来代码吧.
还有,你是想问字符串转数字吧?
字符转的方法: char c = '1'; int n = c - '0'; n 就是 1

字符串的:

#include <iostream>
using namespace std;

int StrToInt( char *s )
{
char *p = s;
int i = 0, k = 1;
while( *s ) s++;
s--;
while( s >= p )
{
i += (*s - '0')* k ;
k *= 10;
s --;
}
return i;
}
int main()
{
cout<< StrToInt( "1234" ) <<endl;
return 0;
}

num=num*10+(str[i]-'0'); /*将字符转换成数值*/

关键就是这一句,str[i]-'0'是在计算字符str[i]和字符'0'的ASCII码的差,如果str[i]是一个数字字符,那么这个差就正好等于str[i]所表示的数字。

问大家一个C语言问题。下面的将字符转换成数值是怎么转换的啊,看不懂...
答:这一句实现了字符串到数字的转化。首先:char型都有个ASCII码值,str[i]-'0'就把数字字符便成了相应的数字值。再者:num=num*10+每次读到一个数字,就把num乘10,再加上这个数字,由于是从高位读取的,就还原出了这个数。就像23可以分解成:2*10+3一样,逐步分解的反向操作,就合成了数字。循...

想问大家一个简单的C程序设计题,题如下: 就是利用C语言,把输入的几个...
答:题目:对10个数进行排序 1.程序分析:可以利用 选择 法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。2.程序源代码:defineN10 main(){inti,j,min,tem,a[N];/*inputdata*/ printf("pleaseinputtennum:\n");for(i=0;i...

问大家一道C语言的题目
答:return 1;}

问大家一个C语言的问题
答:因为你申请的字符串没有给结束符! while((ch = getchar()) != '\n') { arr = (char *) realloc (arr,sizeof(char)*lenarr); arr[lenarr-1] = ch; lenarr++; } arr[lenarr-1] ='\0';//加上结束符 lenarr--; printf("Please input the first num : "); while((ch...

25.问大家一道c语言题,如图25是怎么算的,每个for都要运行吗
答:三个for循环重叠运行多少次,单次t++。i循环次数:4次 i取值1,2,3,4 j循环次数:2次 j取值1,3 k循环次数:3次 k取值10,6,2 所以for循环次数4乘2乘3次数24次 答案是B

问大家一个c语言中关于if问句的问题
答:(number>=500) cost=0.15;else if (number>=300) cost=0.10;else if (number>=100) cost=0.075;else if (number>=50) cost=0.05;else cost=0;total=price*number*(1-cost);printf("total=%10.2f\n",total);}目测,你的结果是因为你的逗号是中文的……VC++6.0运行结果 ...

C语言,问大家个题目,main(){int x=12,y=x++;printf(“%d,%d,%d\n...
答:x=12;y=x++=12 x=13.printf先从右向左运算。再从左向右输出 所以 y++=12 y=13 x++=13 x=14 x+y=13+14=27 所以是27.13.12

问大家一个关于C语言的问题!急!!!
答:顺便说一下,答案肯定是B,上楼是错的。第一次循环k=1,豪无疑问,所以第一次打印出来的k为1.但在第一次打印k之后,k++又使k加了1,所以k=2.当第一次循环结束,进入第二次循环时,K++又使K加了1,所以k=3;所以第二次打印出来,k=3,第二次打印k之后,k++又使k 加了1,所以k=4;当进入...

问大家一道C语言的题?
答:printf("%d,%d",a,b);//结果a=7,b=14 原因是先优先计算第一个(++a)令a=6,接着计算第二个(++a),此时a=7;再计算a+a,由于a=7,所以b=14;b=(++a)+(++a)+(++a)的算法相同 b=(++a)+(++a)+(++a)//a=5 b=a+(++a)+(++a) //a=6 b=a+a+(++a) //a=7 b=14...

问大家一道C语言题
答:这个过程是传值,也就是将值传递给形参 &a是a的地址值,在函数调用时,初始化形参int *x,也就是指针 因此函数体中x存放a的地址,也就是x指向了a 因此后面++*x实际上是将a加上了1 所以输出26