C语言选择题题库2 下载本文

B.可以对字符型数组进行整体输入、输出 C.可以对整体数组进行整体输入、输出

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 22.有以下程序:

#include#defineN 6 main(){char c[N];int i=0;for(;i

输入以下3行,每行输入都是在第1列开始,代表1个回车键符: a b cdef 则程序输出的结果是(C)

A.abcdef B.abcdef C.ab cd D.a b cdef 23.以下程序的输出结果是(D) #include“stdio.h”#include“string.h”main(){int k;char w[][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”,};for(k=1;k<3;k++)printf(“%s\\n”,&w[k][k]);} A.ABCD FGH KL B.ABCD EFG IJ M C.EFG JK O D.FGH KL

24.设有:static char str[]=“Beijing”;则执行:printf(“%d\\n”,strlen (stecpy (str,“China”)));后的输出结果是(A)

A.5 B.7 C.12 D.14

25.当执行下面程序输入:ABC时,输出结果是(A)

#include“stdio.h”#include“string.h”main(){char ss[10]=“12345”;strcat(ss,“6789”);gets(ss);printf(“%s\\n”,ss);}

A.ABC B.ABC9 C.123456ABC D.ABC456789 26.请选出以下语句的输出结果是(A) printf(“%d\\n”,strlen(“\\t\\”\\065\\xff“\\n”));

A.5 B.14 C.8 D.输出项不合法,无正常输出 27.下述程序的输出结果是(A) main(){char s[]=“-12345”;int k=0,sign,m;if(s[k]==‘+’||s[k]==‘-’)sign=s[k++]==‘+’?1:-1;for(m=0;s[k]>=‘0’&&s[k]<=‘9’;k++)m=m*10+s[k]-‘0';printf(“resault=%d”,sign*m);} A.resault=-12345 B.resault=12345 C.resault=-10000 D.resault=10000()

28。定义如下数组s:chars [40];若准备将字符串“This is a string”记录下来,(B)是错误的输入语句。

A.gets(s+2); B.scanf(“ s”,s); C.for (i=0;i<17;i++) s[i]=getchar( ); D.while((c=getchar()!=\\n) s[i++]=c;

29.当执行下面的程序时,如果输入ABC,则输出结果是(A) #include“stdio.h”#include“string.h” main(){char ss[10]=“1,2,3,4,5”;gets(ss);strcat (ss,“6789”);printf(“%s\\n”,ss);}

A.ABC6789 B.ABC67 C.12345ABCC6 D.ABC456789 30.有以下程序:

#include“stdio.h” void change (int k[]){k[0]=k [5];} main (){int x[10]={1,2,3,4,5,6,7,8,9,10},n=0;while (n<=4)【change (&x[n];n++;}for(n=0;n<5;n++) printf (“%d”,x[n]); printf(“\\n”);}程序运行后输出结果是(A)

A.678910 B.13579 C.12345 D.62345

31.有以下程序: #include“stdio.h” int fun(int x[],int n){staticint sum=0,i;for(i=0;i

#include“stdio.h”void sort(int a[],int n){int i,j,t;for(i=0;i

#include“stdio.h” void sum (int a[]){a[0]=a[-1]+a[1];}main (){int a[10]={1,2,3,4,5,6,7,8,9,10};sum (&a [2]);printf(“%d\\n”,a [2]);}程序运行后输出结果是(A) A.6 B.7 C.5 D.8 34.有以下程序: #include“stdio.h” #define N 20 fun(int a [],int n,int m){int i;for(i=m;i>=n;i--)a [i+1]=a[i];} main (){int i,a[N]={1,2,3,4,5,6,7,8,9,10};fun (a,2,9);for(i=0;i<5;i++) printf(“%d”,a[i]);}程序运行后输出结果是(C)

A.10234 B.12344 C.12334 D.12234 35.有以下程序: #include“stdio.h” intf(int b[][4]){int i,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}return s} main( ){int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,8,12},{3,2,1,0}};程序运行后输出结果是(D) A.12 B.11 C.18 D.16 二、填空题。

1.下面程序每行4个数据的形式输出a数组,请填空。 #define N 20 main( ){int a[N],i;for(i=0;i

【1】m=100;m<1000【2】m/10-x*10【3】a[i]=m

3.设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。 main( ){int a[10],b[10],i;for(i=0;i<10;i++)scanf(“%d”,&a[i]);for(【1】;i<10;i++)【2】;for(i=1;i<10;i++){printf(“=”,b[i];if(【3】==0)printf(“\\n”);}} 【1】i=1【2】b[i]=a[i]+a[i-1]【3】i%3

4.下面程序的功能是统计年龄在16-31岁之间的学生人数。请填空。

main(){int a[30],n,age,i;for(i=0;i<30;i++) a[i]=0;printf(“Enter the number of the students

(<30)\\n”);scanf(“%d”,&n);printf(“Enter the age of each student:\\n”);for(i=o;i

5.设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。 main(){int a[10]={1,2,3,4,5,6,7,8,9,10};int k,s,j;float ave;for(k=s=j=0;j<10;j++){if(a[j]%2!=0)【1】;s+=【2】;k++;}if(k!=0){ave=s/k;printf(“%d,%f\\n”,k,ave);}} 【1】continue【2】a[i]

6.以下程序的功能是:从键盘输入若干学生成绩,统计出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main( ){float x [1000],sum=0.0,ave,a;int n=0,i;printf(“Enter mark:\\n”);scanf(“%f”,&a);while(a>=0.0 && n<1000){sum+=【1】;x [n]=【2】;n++;scanf(“%f”,&a);} ave=【3】;printf (\”);for(i=0;i

7.在C语言中,二维数组元素在内存中的存放顺序是按行存放。

8.若二维数组a有m列,则计算任一元素a[i] [j]在数组中的位置的 公式为:ixm+j+1 。 9.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a [1][2]得到的初始值是 0,a [2][1]得到的初始值是 6。

10.下面程序可求出矩阵a的两条对角线的元素之和。请填空。

main(){int a [3][3]={1,3,6,7,9,11,14,15,17};int sum1=0;int sum2=0,i,j;for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum1=sum1+a [i][j];for (i=0;i<3;i++) for(【1】;【2】;j--) if((i+j)==2)sum2=sum2+a[i][j];printf(“sum1=%d,sum2=%d\\n”,sum1,sum2);} 【1】i=j+1【2】found=1

12.以下程序是求矩阵a,b的和,结果存人矩阵c中并按矩阵形式输出。请填空。 main(){int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};int b [3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};int i,j,c[3][4];for(i=0;i<3;i++) for(j=0;j<4;j++) c [i][j]=【1】;for(i=0;i<3;i++){for (j=0;j<4;j++) printf (“=”,c[i][j]);【2】}} 【1】a[i][j]+b[i][j]【2】printf(“\\n”) 13.字符串“ab\\n\\012\\\\”的长度是 9。 14.下面程序段将输出computer,请填空。 char c[]=“It's a computer”;for(i=0;【1】;i++){【2】;printf(“%c”,c[j]);} 【1】i<=7【2】j=i+7

15.下面程序段的功能是在三个字符串中找出最小的。请填空。

#include“stdio.h”#include“string.h” main(){char s [20],str [3][20];int j;for(j=0;j<3;j++) gets(str[j];strcpy(s,【1】);if(strcmp(str[2],s)<0) strcpy(s,str [2]);printf(“%s\\n”,【2】);} 【1】(strcmp (str[0],str[1])<0str[0]:str[1])【2】s 16.下面程序段的运行结果是 he。 char x[]=“the teacher”;i=0;while(x[++i]!=‘\\0’)if(x[i-10]==‘t')printf(“%c”,x[i]); 17.下面invert函数的功能是将一个字符串str的内容颠倒过来。填空题。

#include void invert (char str[]){int i,j【1】;for(i=0,j=strlen(str)【2】;i

18.若以定义:int a[10],i;以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1,2,3,4,5,6,7,8,9,10;在第二个循环中使a数组前10个元素中的值对称折叠,变成

1,2,3,4,5,5,4,3,2,1。请填空。

fun(int a[]){int i;for(i=1;i<=10;i++)【1】=i;for(i=0;i<5;i++)【2】=a[i];} 【1】a[i-1]【2】a[9-i]

第六章 指针 一、选择题

1.以下定义语句中正确的是(C)

A.char a=‘A’b=‘B'; B.float a=b=10.0; C.int a=10,*b=&a; D.float *a,b=&a; 2.若有定义:int x=0,*p&x;则语句printf(“%d\\n”,*p);的输出结果是(B) A.随机值 B.0 C.x的地址 D.p的地址 3.设有定义:“int n1=0,n2,*p=&n2,*&n1;”以下赋值语句中与“n2=n1;”语句等价的是(A) A.*p=*q; B.p=q; C.*p=&n1; D.p=*q; 4.已有定义,int k=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B)

A.k= *ptr1+ *ptr2; B.ptr2=k; C.ptr1=ptr2 D.k= *ptr1*( *ptr2); 5.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是(D) A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a D.&a,&*point,point

6.若需建立如图所示的存储结构,且已有说明float*p,m=3.14;则正确的赋值语句是(B) A.p=m B.p=&m; C.*p=m D.*p=&m

7.若有说明:int*p,m=5,n;以下正确的程序段是(D) A.p=&n;scanf(“%d,&p”); B.p=&n;scanf(“%d”,*p); C.scanf(“%d”,&n);*p=n; D.p=&n;*p=m;

8.若有说明:int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是(C) A.p1=&m;p2=&p1; B.p1=&m;p2=&n;*p1= *p2; C.p1=&m;p2=p1; D.p1=&m;*p2=*p1; 9.有如下程序段:

int *p,a=10,b=1;p=&a;a=*p+b; 执行该程序段后,a的值为(B) A.12 B.11 C.10 D.编译出错 10.设char *s=“\\ta\\o17bc”;则指针变量s指向的字符串所占的字节数是(C) A.9 B.5 C.6 D.7

11.下面程序段中,for循环的执行次数是(B)。 char *s=“\\ta\\o17bc”;for(;* s!=‘\\0';s++)printf(“*”); A.9 B.5 C.6 D.7 12.下面程序段的运行结果是(C) char *s=“abcde”;s+=2;printf(“%d”,s);

A.cde B.字符‘c' C.字符‘c'的地址 D.无确定的输出结果

13.设p1和p2是指向同一个字符中的指针变量,c为字符变量,则以下不能正确执行的赋值语句是(B)

A.c=*p1+ *p2; B.p2=c;

C.p1=p2; D.c=*p1*(*p2); 14.设有下面的程序段: