第七章 指 针 ·9·
C. abc+abc=defdef D. abcabcdefdef 39.以下程序的输出结果是(D)。
#include \stdio.h\ #include \string.h\ main()
{
char b1[8]=\abcdefg\, b2[8], *pb=b1+3; while( --pb>=b1) strcpy(b2, pb); printf(\%d\\n\, strlen(b2));
}
A. 8 B. 3 C. 1 D. 7 40.有以下程序
#include \string.h\ #include \stdio.h\
main() {
char *p=\abcde\\0fghjik\\0\; printf(\%d\\n\, strlen(p));
}
程序运行后的输出结果是(D)。
A. 12 B. 15 C. 6 D. 5 41.有以下程序
void ss( char *s, char t) {
while (*s)
{ if (*s==t) *s=t-'a'+'A'; s++; } }
main()
{
char str[100]=\abcddfefdbd\, c='d'; ss(str, c);
printf(\%s\\n\, str1);
}
程序运行后的输出结果是(B)。 A.ABCDDEFEDBD B. abcDDfefDbD C. abcAAfefAbA D. Abcddfefdbd 42.以下程序调用findmax函数返回数组中的最大值。在下面划线处应填入的是(B)。 #include \stdio.h\
findmax( int *a, int n) {
int *p, *s;
for (p=a, s=a; p-a 第七章 指 针 ·10· return (*s); } main() { int x[5]={12,21,13,6,18}; printf(\%d\\n\, findmax(x,5)); } A. p>s B. *p>*s C. a[p]>a[s] D. p-a>p-s 43.有以下程序 #include \stdio.h\ #include \malloc.h\ main() { char *q, *p; p=(char*) malloc (sizeof(char) *20); /*为指针p分配一个地址*/ q=p; scanf(\%s%s\, p, q); printf(\%s %s\\n\, p, q); } 若从键盘输入:abc def↙,则输出结果是:A A. def def B. abc def C. abc d D. d d 44.下面程序的运行结果是(D)。 #include \stdio.h\ #include \string.h\ fun( char *s) { char t[10]; s=t; strcpy(t, \example\); } main() { char *s; fun(s); puts(s); } A.example└┘└┘└┘ B.example└┘└┘ C.example D.不确定的值 45.下列程序段的输出结果是(A)。 #include \stdio.h\ void fun( int *x, int *y) { printf(\%d%d\, *x, *y); *x=3; *y=4; 第七章 指 针 ·11· } main() { int x=1, y=2; fun(&y, &x); printf(\%d %d\, x, y); } A. 2 1 4 3 B. 1 2 1 2 C. 1 2 3 4 D. 2 1 1 2 46.下列程序的输出结果是(C)。 #include \stdio.h\ main() { char a[10]={9,8,7,6,5,4,3,2,1,0}, *p=a+5; printf(\%d\, *--p); } A. 非法 B. a[4]的地址 C. 5 D. 3 47.有以下程序 #include \stdio.h\ #include \string.h\ main(int argc, char *argv[]) { int m, length=0; for (m=1;m } 程序编译连接后生成的可执行文件是file.exe,若执行时输入带参数的命令行是: file 1234 567 89↙ 则运行结果是(D)。 A. 22 B. 17 C. 12 D. 9 48.有以下函数: char *fun(char *s) { … return s; } 该函数的返回值是(B)。 A. 无确定值 B. 形参s中存放的地址值 C. 一个临时存储单元的地址 D. 形参s自身的地址值 49.假定下列程序的可执行文件名为file.exe,则在该程序所在的子目录下输入命令行: file girl boy↙ 后,程序的输出结果是(B)。 #include \stdio.h\ main(int argc, char *argv[]) { int m; 第七章 指 针 ·12· if (argc<=0) return; for (m=1; m } A. girl boy B. gb C. gir D. girlboy 50.设有一个名为file的C源程序,且已知命令行为:file girl boy student,则可得到 以下运行结果的C源程序为(B)。 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); } 7.2 填空题 1. 设有定义:int a, *p=&a; 以下语句将利用指针变量p读写变量a中的内容,请将语句补 充完整。 scanf(\%d\, 【p】 ); printf(\%d\\n\, 【*p】 ); 2. 请填空: W p c 建立如图所示存储结构所需的说明语句是【n=&c】。 建立如图所示给c输入数据的输入语句是【sacnf(“%d”,n)】。 建立如图所示存储结构所需的赋值语句是【*n=w】。