发布时间 : 星期六 文章C期末考试复习题2(1)更新完毕开始阅读f405c744e53a580216fcfed8
(1) int a[4]={5,3,8,9};其中 a[3]的值为( D )。
A. 5 B. 3 C. 8 D. 9
(2) 以下 4 个数组定义中,(D )是错误的。
A. int a[7]; B.int n=5; long b[n]; C. char c[5]; D. int n,d[7];
(3) 对字符数组进行初始化,( B )形式是错误。
A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[10 ]={ '1', '2', '3', '\\0'}; D. char c4[ ]=\
(5) 在数组中,数组名表示( A. )。
A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址
(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B )。 int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};
A. 1,12 B. 0,11 C. 1,11 D. 0,12
(7) 若有以下说明,则数值为 4 的表达式是( D )。
int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d=4, g=3 A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c]
(8) 设有定义:char s[12] = \; 则printf( \ 的输出是( A. 6 B. 7 C. 11 D. 12
(9) 设有定义:char s[12] = \ 则printf(\\sizeof(s)); 的输出是( A. 6 B. 7 C. 11 D. 12
(10) 合法的数组定义是( A)。
A. char a[ ]= \\; B. int a[5] ={0,1,2,3,4,5}; C. char a= \\; D. char a[ ]={0,1,2,3,4,5}
(11) 下面的程序中哪一行有错误( D )。 #include
float array[5]={0.0}; //第A行
int i;
for(i=0;i<5;i++)
scanf(\ for(i=1;i<5;i++)
array[0]=array[0]+array[i];//第B行
printf(\ //第C行 } }
A. 第A行 B. 第B行 C. 第C行 D. 没有 (12) 下面哪一项是不正确的字符串赋值或赋初值的方式( C )。
C A. char *str; str=\ B. char str[7]={'s','t','r','i','n','g'}; ;str1=\
D. char str1[]=\
A )。 D)。 C. char str1[10]
(13) 若有以下说明和语句,则输出结果是哪一项( C )。 (strlen(s)为求字符串s的长度的函数)
char s[12]=\book!\ printf(\ A. 12 B. 8 C. 7 D. 11
(14) 若有以下说明和语句,则输出结果是( C )。 char str[]=\ printf(\
A. 字符串中有非法字符 B. \\\ C. \ D. \
(15)若有以下语句,则下面 是正确的描述。 char x[]=\
char y[]={'1', '2','3','4','5','6'}; (B )
A. x数组与y数组长度相同。 B. x数组长度大于y数组长度。 C. x数组长度小于y数组长度。 D. x数组和y数组的赋值是非法的。
(16)在C 语言中,引用数组元素时,其数组下标的数据类型允许是。C A)整型常量
B)整型表达式
C)整型常量或整型表达式 D)任何类型的表达式
(17)以下对一维整型数组a 的正确说明是。 D A)inta(10); B)int n=10,a[n]; C) int n;
D) #define SIZE 10 scanf(“%d”,&n);
int a[SIZE];
int a[n];
(18)若有说明:int a[10];则对a 数组元素的正确引用是。 C A)a[10] B)a[3.5] C)a(5) D)a[10-10] (19)在C 语言中,一维数组的定义方式为:类型说明符数组名; (C) A)[整型常量表达式]
B)[整型表达式] C)[整型常量] 或[整型表达式]
D)[常量]
(20)以下能对一维数组a 进行正确初始化的语句是。 ( C) A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0};
D)int a[10]=”10*1”;
(21)下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)1 main() 2 {
3 float a[3]={3*0}; 4 int i;
5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“%d\\n”,a[0]);
8 }
A)第3 行有错误 B)第7 行有错误 C)第5 行有错误
D)没有错误
(A) 。
(22)下面程序中有错误9*/的行是(每行程序前面的数字表示行号)。(D) 1 main() 2 {
3 float a[3]={1}; 4 int i;
5 scanf(“%d”,&a);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 8 } A)3
(23)下面程序(每行程序前面的数字表示行号)。 (D) 1 main() 2 { 3
float a[3]={0}; 4 int i;
5 for(i=0;i<3;i++) scanf(“%f”,&a[i]); 6 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 7 printf(“%f\\n”,a[0]); 8 }
A)没有错误 C)第5 行有错误
(24)对以下说明语句的正确理解是。 (B) int a[10]={6,7,8,9,10}; A)将5 个初值依次赋给a[1]至a[5] B)将5 个初值依次赋给a[0]至a[4] C)将5 个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
B)第3 行有错误 D)第6 行有错误
B)6
C)7
D)5
printf(“a[0]=%d\\n”,a[0]);
1.变量的指针,其含义是指该变量的____B_____. a)值 b)地址 c)名 d)一个标志
2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是___D__. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point
3.若有说明;int *p,m=5,n;以下正确的程序段的是_____D___. a)p=&n; b)p=&n;
scanf(\c)scanf(\ d)p=&n; *p=n; *p=m;
4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____B____. main() {
int *p,*q,a,b; p=&a;
printf(“input a:”); scanf(“%d”,*p); ?? }
a)*p表示的是指针变量p的地址
b)*p表示的是变量a的值,而不是变量a的地址 c)*p表示的是指针变量p的值 d)*p只能用来说明p是一个指针变量
5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是_____D___. voidprint_value(int *x) { printf(“%d\\n”,++*x);} a)23b)24 c)25 d)26
6.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A A) *p=&a;scanf(\,p);
B) p=(long *)malloc(8);scanf(\,p); C) scanf(\,p=&a); D) scanf(\,&a);
7.有以下程序B #include
{ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;
printf(\}
程序运行后的输出结果是 A)1,2,1,2 C)2,1,2,1
B)1,2,2,1 D)2,1,1,2