有一个名为file1的C 源程序,已知命令行为:FILE1 CHINA BEIJING SHANGHAI,则可得到以下运行结果的C源程序为()。 CHINA BEIJING SHANGHAI

有一个名为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(argc1) 
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