user-0 提问: 新手自学C，9道C问题，麻烦大神

回复:
user: user-0
content: 第2题是哪个printf不懂..为什么指针format可以在那打字符串 第3题完全不懂 第4题的A选项不是t可以覆盖上去s吗..难道是因为越界问题 第5题不懂.. 第6题是在倒数第三局q后面填的..那里要填c..那c跟D有何其区别..为什么我填D会错 第7、8、9题应该和第5题一样都是main的带参数。。不懂

user: user-0
content: 1．以下正确的程序段是（）。 A． char s[20];                               B． char *s; scanf("%s", &s);                             scanf("%s", s); C． char s[20];                               D． char s[20], *t=s; scanf("%s", &s[2]);                           scanf("%s", t[2]); 第一题后面有数字括号不知怎么发上去没了..我选的是D..答案是C..如果是C那不是和A一样..D的话t[2]不是相当于给地址了吗    引用 3 楼 paschen 的回复:第一题确实没答案，A和C是一样的，写成scanf("%c", &s); 就对了  另外楼主哪些地方看不懂需要解释

user: user-1
content: 第一题确实没答案，A和C是一样的，写成scanf("%c", &s); 就对了  另外楼主哪些地方看不懂需要解释

user: user-2
content: 为什么我觉得1没有答案

user: user-1
content: 引用 5 楼 ddyyuan 的回复:第2题是哪个printf不懂..为什么指针format可以在那打字符串 第3题完全不懂 第4题的A选项不是t可以覆盖上去s吗..难道是因为越界问题 第5题不懂.. 第6题是在倒数第三局q后面填的..那里要填c..那c跟D有何其区别..为什么我填D会错 第7、8、9题应该和第5题一样都是main的带参数。。不懂  第二题 等价于printf("%s, m=%d, n=%d\n", "m*=n", m,n);  你问题太多了，先看书啊，都很基础的，再不行你在电脑上调试，一步步看程序怎么运行。。

user: user-1
content: 引用 4 楼 ddyyuan 的回复:1．以下正确的程序段是（）。 A． char s[20];                               B． char *s; scanf("%s", &s);                             scanf("%s", s); C． char s[20];                               D． char s[20], *t=s; scanf("%s", &s[2]);                           scanf("%s", t[2]); 第一题后面有数字括号不知怎么发上去没了..我选的是D..答案是C..如果是C那不是和A一样..D的话t[2]不是相当于给地址了吗    [quote=引用 3 楼 paschen 的回复:] 第一题确实没答案，A和C是一样的，写成scanf("%c", &s); 就对了  另外楼主哪些地方看不懂需要解释[/quote]  是选C   D的t[2]只是一个字符，而不是这个字符的地址，B的s没分配内存

user: user-0
content: 如下题,答案我都知道,希望有详细易懂的解释  1．以下正确的程序段是（）。 A． char s;                               B． char *s; scanf("%s", &s);                             scanf("%s", s); C． char s;                               D． char s, *t=s; scanf("%s", &s);                           scanf("%s", t);  2．下面程序段的运行结果是（）。 #include "stdio.h" main() {     int m=10, n=20;     char *format="%s, m=%d, n=%d\n";     m*=n;     printf(format, "m*=n", m,n); } A． format, "m*=n", m, n                      B． format, "m*=n" C． m*=n, m=200, n=20                        D． 以上结果都不对  3．下面程序的功能是将八进制正整数字符串转换为十进制整数。请选择填空。 #include "stdio.h" #include "string.h"     main()     {         char *t, s;         int n;         t=s;         gets(t);         n=【1】;         while (【2】!= '\0') n=n*8+*t-'0';         printf("%d\n", n);     }     【1】A． 0           B． *t              C． *t-'0'             D． *t+'0'     【2】A． *t          B． *t++            C． *(++t)              D． t  4．以下正确的程序段是（）。 A． char s="12345", t="6543d21";    strcpy( s,t); B． char s, *t="12345";   strcat(s,t); C． char s=" ", *t="12345"; strcat(s, t); D． char *s="12345", *t="54321";  strcat (s,t);  5．不合法的main函数命令行参数表示形式是：（）。     A． main( int a, char *c)                  B． main(int argc, char *argv)     C． main( int arc, char **arv)               D． main( int argv, char*argc)  6．下面程序的功能是统计字串sub在母串s中出现的次数。请选择填空。 #include "stdio.h" #include "string.h"     main()b     {         char s, sub;//字符串函数         int n;         gets(s);         gets(sub);         printf("%d\n", count(s,sub));     }     int count( char *p, char *q)     {         int m, n, k, num=0;         for (m=0; p; m++)             for (【1】, k=0; q==p; k++, n++)  //b  c                 if(q=='\0')                 { num++;  break;}         return (num);     }     【1】A． n=m+1        B． n=m            C． n=0              D． n=1     【2】A． k             B． k++            C． k+1              D． ++k   #include "stdio.h" #include "string.h"     main(int argc, char *argv)     {            int m, length=0;         for (m=1;m<argc; m++)  length+=strlen(argv);         printf("%d\n", length);     }   7.  程序编译连接后生成的可执行文件是file.out，若执行时输入带参数的命令行是：     ./file.out 1234  567  89↙     则运行结果是（）     A． 22              B． 17               C． 12             D． 9   8.假定下列程序的可执行文件名为file.out，则在该程序所在的子目录下输入命令行：     ./file.out  girl  boy↙     后，程序的输出结果是（）。 #include "stdio.h"     main(int argc, char *argv)     {            int m;         if (argc<=0) return;         for (m=1; m<argc ; m++)             printf("%c", *argv);     }     A． girl  boy        B． gb             C． gir              D． girlboy   9．设有一个名为file的C源程序，且已知命令行为：file  girl  boy  student， 则可得到以下运行结果的C源程序为（）     girl     boy     student     A． main( int argc, char *argv)     {           while (--argc>1)             printf("%s%c", *argv, (argc>1)? '\n'：' ');     }     B． main( int a, char * b)     {          while (a-->1)             printf("%s\n", *++b);     }     C． main( int argc, char *argv)     {           while (++argc>0)             printf("%s%c", *++argv, (argc>1) ? ' ' ：'\n');     }     D． main(int argc, char *argv)     {          while (argc>1)             printf("%s", *++argv);      }