一、单选 共20题 (共计20分)
第1题 (1.0分) 题号:7144 难度:中 第8章
若有以下程序
#include <stdio.h>
void sp(int *a)
{ int b=2;
*a = *a * 2; printf("%d,", *a);
a=&b; *a = *a * 2; printf("%d,", *a);
}
main()
{ int k=3;
sp(&k); printf("%d\n", k);
}
则程序的输出结果是
A:6,12,12
B:6,4,3
C:6,4,6
D:9,4,9
第2题 (1.0分) 题号:7213 难度:中 第8章
有以下程序
#include <stdio.h>
main()
{
char c[2][5]={"6938","8254" }, *p[2];
int i, j, s=0;
for( i=0; i<2; i++ ) p[i]=c[i];
for( i=0; i<2; i++ )
for( j=0; p[i][j]>0 ; j+=2 ) s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
程序运行后的输出结果是
A:6938
B:9824
C:4528
D:6385
第3题 (1.0分) 题号:7112 难度:中 第8章
若有以下程序
#include <stdio.h>
void sp(int *a)
{ int b=2;
a=&b; *a = *a * 2; printf("%d,", *a);
}
main()
{ int k=3, *p=&k;
sp(p); printf("%d,%d\n", k, *p);
}
则程序的输出结果是
A:4,3,3
B:4,3,4
C:6,3,6
D:6,6,6
第4题 (1.0分) 题号:7058 难度:中 第8章
有以下程序
#include <stdio.h>
#include <string.h>
void fun(char *s[], int n)
{ char *t; int i, j;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (strlen(s[i]) > strlen(s[j]))
{ t = s[i]; s[i] = s[j]; s[j] = t; }
}
main()
{ char *ss[]={"bcc","bbcc","xy", "aaaacc", "aabcc"};
fun(ss, 5); printf("%s,%s\n", ss[0],ss[4]);
}
程序的运行结果是
A:aaaacc,xy
B:xy,aaaacc
C:bcc,aabcc
D:aabcc,bcc
第5题 (1.0分) 题号:7003 难度:中 第8章
有以下程序
#include <stdio.h>
struct S{ int n; int a[20]; };
void f(int *a, int n)
{
int i;
for (i=0; i<n-1; i++)
a[i]+=i;
}
main()
{
int i;
struct S s={10, {2,3,1,6,8,7,5,4,10,9}};
f(s.a, s.n);
for (i=0; i<s.n; i++)
printf("%d,", s.a[i]);
}
程序运行后的输出结果是
A:2,3,1,6,8,7,5,4,10,9,
B:3,4,2,7,9,8,6,5,11,10,
C:2,4,3,9,12,12,11,11,18,9,
D:1,2,3,6,8,7,5,4,10,9,
第6题 (1.0分) 题号:7229 难度:中 第8章
以下叙述中正确的是
A:int* p1; int ** p2; int *p3;都是合法的定义指针变量的语句
B:指针变量只能通过求地址运算符(&) 来获得地址值
C:语句p=NULL;与p=\0;是等价的语句
D:语句p=NULL;执行后,指针p指向地址为0的存储单元
第7题 (1.0分) 题号:7182 难度:中 第8章
以下fun函数的功能是将形参s所指字符串内容颠倒过来
void fun( char *s )
{ int i, j, k;
for( i=0, j=strlen(s) __________ ; i<j; i++,j-- )
{ k=s[i]; s[i]=s[j]; s[j]=k; }
}
在横线处应填入的内容是
A:1
B:-1
C:0
D:,k=0
第8题 (1.0分) 题号:6863 难度:中 第8章
有以下程序:
#include <stdio.h>
#include <stdlib.h>
main()
{ int *a,*b,*c;
a=b=c=(int *)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf("%d,%d,%d\n",*a,*b,*c);
}
程序运行后的输出结果是().
A:1,1,3
B:2,2,3
C:1,2,3
D:3,3,3
第9题 (1.0分) 题号:7268 难度:中 第8章
在32位编译器上,设有定义
char *str1 = "Hello", str2[] = "Hello"; ,
则以下语句
printf("%d %d", sizeof(str1), sizeof(str2));
的输出结果是
A:5 6
B:5 5
C:6 6
D:4 6
第10题 (1.0分) 题号:7332 难度:中 第8章
有以下程序
#include <stdio.h>
#include <stdlib.h>
void fun( int *p1, int *p2, int *s)
{ s=( int*)calloc(1,sizeof(int));
*s=*p1+*p2;
free(s);
}
main()
{ int a[2]={1,2}, b[2]={40,50},*q=a;
fun(a,b,q);
printf("%d\n", *q);
}
程序运行后的输出结果是
A:42
B:41
C:1
D:0