1、以下程序(来源:
http://blog.csdn.net/hackbuteer1/article/details/7926592)
-
int 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);
-
return 0;
-
}
经编译链接生成可执行文件tt.exe,若运行时输入以下命令行 tt 12 345 678,则程序运行的输出结果是()
A、136 B、12345 C、12345678 D、12
解析:主函数的第一个参数argc为整型参数,记下从命令行输入参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素分别指向命令行输入的各字符串。在本例中argc的值为4,argv[0]指向字符串“tt”,argv[1]指向字符串“12”,argv[2]指向字符串“345”, argv[3]指向字符串“678”。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加argv[i]-‘0’,即第i个参数字符串的首字符减去‘0’。 一个数字字符减去‘0’字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择A。
2、16、若已定义:int a[9],*p = a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()
A、++p B、a+1 C、p+1 D、a++
3、26、设a=1,b=2,则(a++)+b 和 a+++b 这两个表达式的值分别是()
A、4 , 4
B、3 , 4
C、4 , 3
D、3 , 3
a+++b=(a++)+b;因为++的优先级比+高
阅读(685) | 评论(0) | 转发(0) |