有一个名为file1的C 源程序,已知命令行为:FILE1 CHINA BEIJING SHANGHAI,则可得到以下运行结果的C源程序为()。
CHINA BEIJING SHANGHAI
A) main(int argc,char *argv[] ) {while (--argc>0)
printf(“%s%c”,*++argv,(argc>1)?‟ „:‟\n‟);} B) main(int argc,char *argv[]) {while(argc1)
printf(“%s\n”,*argv);}
C) main(int argc,char *argv[]) {while(argc>0)
printf(“%s%c\n”,*++argv,(argc>1)?‟ „:‟\n‟);}
D) main(int argc,char *argv[ ]) {while(argc>1) {++argv;
printf(“%s\n”,*argv); --argc;} }
选A
简单一看就知道选A了。
B、C、D的共同问题是,每次printf都输出换行符,显然题目中三个单词是不换行的
再说A的过程:
命令行参数中的数量和参数,都包含可执行文件名。所以根据输入,可以知道argc 为 4
循环先使得argc减去1,这样就只循环三次,只处理三个输入参数
printf("%s%c",这是输出字符串,然后输出空格或者回车,具体输出哪个,看argc的值,由于初始为3,所以前两次都输出空格, 最后一次1大于1,所以输出回车。从而满足题目要求
FILE1 CHINA BEIJING SHANGHAI
这么输入的话,argc=4, argv[0]=FILE1
argv[1] = CHINA
argv[2]=BEIJING
argv[3]=SHAGNHAI
选A