有以下程序: main(int argc, char *argv[]) { int n=0,i; for (i=1; i<argc; i++) n=n*10+*argv[i]-’0’; printf("%d\n",n);

admin2009-01-15  20

问题 有以下程序:     main(int argc, char *argv[])    { int n=0,i;      for (i=1; i<argc; i++)  n=n*10+*argv-’0’;      printf("%d\n",n);    }    编译连接后生成可执行文件tt.exe。若运行时输入以下命令行    tt 12 345 678    程序运行后的输出结果是(  )。

选项 A、12
B、12345
C、12345678
D、136

答案8

解析 因为题目给出的命令行为tt 12 345 678,所以main函数的两个参数分别为4和 {"tt","12","345","678")。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加*argv-’0’,即第i个参数字符串的首字符减去’0’。一个数宁字符减去,O字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择D。
转载请注明原文地址:https://kaotiyun.com/show/fQXp777K
0

最新回复(0)