C语言试题选择题及答案.docx
《C语言试题选择题及答案.docx》由会员分享,可在线阅读,更多相关《C语言试题选择题及答案.docx(30页珍藏版)》请在冰豆网上搜索。
![C语言试题选择题及答案.docx](https://file1.bdocx.com/fileroot1/2023-1/31/cf6cbaac-a5c7-4e6b-b9ee-6f52ed769a4a/cf6cbaac-a5c7-4e6b-b9ee-6f52ed769a4a1.gif)
C语言试题选择题及答案
★第1题:
阅读程序,选择程序的运行结果___A___。
#include
main()
{intx;
x=try(5);
printf(“%d\n”,x);
}
try(intn)
{if(n>0)return(n*try(n-2));
elsereturn
(1);
}
A. 15
B. 120
C. 1
D. 前面3个答案均是错误的
第2题:
在下列结论中,只有一个是正确的,它是___A___。
A. 递归函数中的形式参数是自动变量
B. 递归函数中的形式参数是外部变量
C. 递归函数中的形式参数是静态变量
D. 递归函数中的形式参数可以根据需要自己定义存储类型
★第3题:
阅读程序,选择程序的输出结果__A___。
#include
f(intx,inty)
{return(y-x);
}
main()
{int(*g)(int,int);
inta=5,b=6,c=2;
g=f;
c=(*g)(a,b);
printf(“%d\n”,c);
}
A. 1
B. 2
C. 3
D. 前面3个答案均是错误的
第4题:
阅读程序,选择程序的输出结果__D___。
#include
char*p=”abcdefghijklmnopq”;
main()
{while(*p++!
=’e’);
printf(“%c\n”,*p);
}
A. c
B. d
C. e
D. f
★第6题:
阅读程序,选择程序的输出结果___D___。
#include
voidprtv(int*x)
{printf(”%d\n”,++*x);
}
main()
{inta=25;
prtv(&a);
}
A. 23
B. 24
C. 25
D. 26
第7题:
阅读程序,选择程序的输出结果___B___。
#include
main()
{staticchara[]=”language”,b[]=”program”;
char*ptr1=a,*ptr2=b;
intk;
for(k=0;k<7;k++)
if(*(ptr1+k)==*(ptr2+k))
printf(”%c”,*(ptr1+k));
}
A. gae
B. ga
C. language
D. 有语法错误
★第8题:
函数调用strcat(strcpy(str1,str2),str3)的功能是__C___。
A. 将串str1复制到串str2中,然后再连接到str3之后
B. 将串str1连接到串str2之后,再复制到str3之中
C. 将串str2复制到串str1中,然后再将串str3连接到串str1之后
D. 将串str2复制到串str1中,再将串str1连接到str3之后
★第9题:
设有以下程序段,则在main函数中使用语句__D___是无意义的。
main()
{intmin();
inta,b,c,(*p)();
p=min;
…
}
min(x,y)
intx,y;
{
…
}
A. printf(”%d\n”,min(a,b));
B. c=min(a,b);
C. c=(*p)(a,b);
D. p++;
第10题:
已知staticinta[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__A___。
A. *(a+1)
B. *(a[1]+2)
C. a[1]+3
D. a[0][0]
第11题:
已知inti,x[3][4];则不能将x[1][1]的值赋给变量i的语句是___C___。
A. i=*(*(x+1)+1)
B. i=x[1][1]
C. i=*(*(x+1))
D. i=*(x[1]+1)
★第12题:
当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是___C____.
A. c=b=a;
B. (a=c)||(b=c);
C. (a=c)&&(b=c);
D. a=c=b;
第13题:
函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。
能正确执行此功能的函数是___D___。
A. funa(int*x,int*y)
{int*p;
*p=x;*x=*y;*y=*p;
}
B. funb(intx,inty)
{intt;
t=x;x=y;y=t;
}
C. func(int*x,int*y)
{*x=*y;*y=*x;
}
D. fund(int*x,int*y)
{*x=*x+*y;*y=*x-*y;*x=*x-*y;
}
第14题:
已知intx[]={1,3,5,7,9,11},*ptr=x;则不能正确引用数组元素的语句是___B___。
A. *(ptr--)
B. *(--ptr)
C. *(ptr++)
D. *(++ptr)
第15题:
已知int*ptr1,*ptr2;均指向同一个int类型一维数组中的不同元素,k为int类型变量,则下面错误的赋值语句是___B___。
A. k=*ptr1+*ptr2;
B. ptr2=k;
C. ptr1=ptr2;
D. k=*ptr1*(*ptr2);
★第16题:
已知chars1[10],*s2=”ab\0cdef”;则执行语句strcpy(s1,s2);后,变量s1的内容为___A____。
A. ab
B. cdef
C. ab\0cdef
D. 内容不定
第17题:
以下有关宏替换叙述中,错误的是___D___。
A. 宏替换不占用运行时间
B. 宏无类型名
C. 宏替换只是字符替换
D. 宏名必须用大写字母表示
★第18题:
C语言主函数main最多允许有___B___个参数。
A. 1
B. 2
C. 0
D. 3
★第19题:
C语言的编译系统对宏定义是___D___。
A. 在程序运行时进行替换处理
B. 在程序连接时进行处理
C. 和源程序中其他C语句同时进行编译的
D. 在对源程序中其他成分正式编译之前进行处理的
第20题:
已知int**p;则变量p是___B___。
A. 指向int的指针
B. 指向指针的指针
C. int型变量
D. 以上3种说法均是错误的
★第21题:
已知inti;char*s=”a\045+045\’b”;执行语句for(i=0;*s++;i++);之后,变量i的结果是__B___。
A. 7
B. 8
C. 9
D. 以上3个答案都是错误的
第22题:
已知inti=0,j=1,*p=&i,*q=&j;错误的语句是___D___。
A. i=*&j;
B. p=&*&i;
C. j=*p++;
D. i=*&q;
第23题:
已知inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是___A___。
A. p+=2,*(p++)
B. p+=2,*++p
C. p+=3,*p++
D. p+=2,++*p
★第24题:
已知inta[3][4],*p=a;p+=6;那么*p和__D___的值相同。
A. *(a+6)
B. *(&a[0]+6)
C. *(a[1]+2)
D. *(&a[0][0]+6)
第25题:
已知inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]=a,*p=a[0];则以下能够正确表示数组元素a[1][2]的表达式是__D___。
A. *((ptr+1)[2])
B. *(*(p+5))
C. (*ptr+1)+2
D. *(*(a+1)+2)
第26题:
已知char**s;正确的语句是__B___。
A. s=”computer”;
B. *s=”computer”;
C. **s=”computer”;
D. *s=’A’;
★第27题:
已知chars[20]=”programming”,*ps=s;则不能引用字母o的表达式是__A___。
A. ps+2
B. s[2]
C. ps[2]
D. ps+=2,*ps
第28题:
已知charb[5],*p=b;则正确的赋值语句是__C__。
A. b=”abcd”;
B. *b=”abcd”;
C. p=”abcd”;
D. *p=”abcd”;
★第29题:
已知chars[100];inti;则在下列引用数组元素的语句中,错误的表示形式是___D___.
A. s[i+10]
B. *(s+i)
C. *(i+s)
D. *((s++)+i)
第30题:
已知chars[10],*p=s;则下列语句中,错误的语句是__B___。
A. p=s+5;
B. s=p+s;
C. s[2]=p[4]
D. *p=s[0];
第31题:
(103)
以下程序的输出结果是___D___。
#include
main()
{
intx=10,y=10;
printf(“%d%d\n”,x--,--y);
}
A. 1010
B. 99
C. 910
D. 109
第32题:
已知double*p[6];它的含义是___C___。
A. p是指向double类型变量的指针
B. p是double类型数组
C. p是指针数组
D. p是数组指针
★第33题:
说明语句int*(*p)();的含义是___D___。
A. p是一个指向int型数组的指针
B. p是指针变量,它构成了指针数组
C. p是一个指向函数的指针,该函数的返回值是一个整型
D. p是一个指向函数的指针,该函数的返回值是一个指向整型的指针
第34题:
已知inta,*p=&a;则下列函数调用中错误的是___D___。
A. scanf(”%d”,&a);
B. scanf(”%d”,p);
C. printf(”%d”,a);
D. printf(”%d”,p);
第35题:
已知int*p,a;则语句p=&a;中的运算符&的含义是___D___。
A. 位与运算
B. 逻辑与运算
C. 取指针内容
D. 取变量地址
第36题:
下面程序的功能是将字符串s中所有的字符“c”删除。
请选择填空。
#include
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!
=’\0’;i++)
if(s[i]!
=’c’)___A____
s[j]!
=’\0’;
puts(s);
}
A. s[j++]=s[i];
B. s[++j]=s[i];
C. s[j]=s[i];j++;
D. s[j]=s[i]
第37题:
阅读下列程序,选择程序的运行结果___B___。
#include
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf(“%d\n”,k);
}
A. 20
B. 21
C. 22
D. 23
★第38题:
下述程序的输出结果是__A___。
#include
main()
{printf(“%f”,2.5+1*7%2/4);
}
A. 2.500000
B. 2.750000
C. 3.375000
D. 3.000000
★第39题:
下面程序的输出结果是___B___。
#include
main()
{printf(“%d\n”,NULL);
}
A. -1
B. 0
C. 1
D. 程序是错误的
第40题:
在下面的程序段中,每行前面的数字表示行号,则下面程序___D___。
1main()
2{
3inta[3];
4inti;
5for(i=0;i<3;i++)scanf(“%d”,&a[i]);
6for(i=1;i<3;i++)a[0]=a[0]+a[i];
7printf(“%f\n”,a);
8}
A. 没有错误
B. 第5行有错误
C. 第6行有错误
D. 第7行有错误
★第41题:
在下面的程序段中,每行前面的数字表示行号,则下面程序___C___。
1main()
2{
3floata[10];
4inti;
5for(i=0;i<3;i++)scanf(“%d”,&a[i]);
6for(i=1;i<3;i++)a[0]=a[0]+a[i];
7printf(“%f\n”,a[0]);
8}
A. 没有错误
B. 第3行有错误
C. 第5行有错误
D. 第7行有错误
★第42题:
下面程序段的运行结果是__B__。
charc[]=”\t\v\\\0will\n”;
printf(“%d”,strlen(c));
A. 14
B. 3
C. 9
D. 字符串中有非法字符,输出值不确定
第43题:
下面程序段的运行结果是___D___(其中~表示空格)。
chara[7]=”abcdef”,b[4]=”ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A. ~
B. \0
C. e
D. f
第44题:
若要求:
如果字符串s1大于字符串s2则要执行if语句的语句1,应当使用___D___。
A. if(s1>s2)
B. if(strcmp(s1>s2))
C. if(strcmp(s2>s1)>0)
D. if(strcmp(s1>s2)>0)
第45题:
已知chara[20],b[20];则以下正确的输入语句是___B___。
A. gets(a,b);
B. scanf(“%s%s”,a,b);
C. scanf(“%s%s”,&a,&b);
D. gets(“a”),gets(“b”);
第46题:
若二维数组a由m列,则在a[i][j]之前的元素个数为___B____。
A. j*m+i
B. i*m+j
C. i*m+j-1
D. i*m+j+1
第47题:
下列数组说明语句中错误的是___B___。
A. doublex[5]={2.0,4.0,6.0,8.0,10.0};
B. inty[5]={0,1,3,5,7,9};
C. charc1[]={’1’,’2’,’3’,’4’,’5’};
D. charc2[]={’\x10’,’\xa’,’\x8’};
第48题:
在C语言中,二维数组元素在内存中的存放顺序是__A___。
A. 按行存放
B. 按列存放
C. 由用户自己定义
D. 由编译器决定
★第49题:
已知staticinta[3][4];则数组a中个元素__B___。
A. 可在程序的运行阶段得到初值0
B. 可在程序的编译阶段得到初值0
C. 不能得到确定的初值
D. 可在程序的编译或运行阶段得到初值0
★第50题:
语句typedeflongclass的作用是___D___。
A. 建立了一种新的数据类型
B. 定义了一个整型变量
C. 定义了一个长整型变量
D. 定义了一个新的数据类型标识符
第51题:
已知staticinta[3][4]={0};则下面正确的叙述是__D___。
A. 只有元素a[0][0]可以得到初值0
B. 此说明语句是错误的
C. 数组a中每个元素都可得到初值,但其值不一定为0
D. 数组a中每个元素均可得到初至0
第52题:
以下能对外部的二维数组a进行初始化错误的语句是___C___。
A. inta[2][3]={0};
B. inta[][3]={{1,2},{0}};
C. inta[2][3]={{1,2},{3,4},{5,6}};
D. inta[][3]={1,2,3,4,5,6};
★第53题:
以下能对外部的二维数组a进行正确初始化的语句是__B___。
A. inta[2][]={{1,0,1},{5,2,3}};
B. inta[][3]={{1,2,3},{4,5,6}};
C. inta[2][4]={{1,2,3},{4,5},{6}};
D. inta[3][]={{1,0,1},{},{1,1}};
★第54题:
(105)
为了求i的3次方,请选择一个表达式填入___D____,使程序可以正确执行。
#defineCUBE(x)(x*x*x)
main()
{inti=4;
print(“\n%d”,CUBE());
}
A. i*i*i
B. x*x*x
C. x
D. i
第55题:
已知inta[10];则对a数组元素的正确引用是__D___。
A. a[10]
B. a[3.5]
C. a(5)
D. a[10-10]
★第56题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是__C___。
A. 整型常量
B. 整型表达式
C. 整型常量或整型表达式
D. 任何类型的表达式
★第57题:
已知charstr[]=”ab\n\012\\\””;则执行语句:
printf(“%d”,strlen(str));的结果是___C____.
A. 3
B. 4
C. 6
D. 12
第58题:
下面关于字符串的说明中,错误的是__A___。
A. charstr[7]=”FORTRAN”;
B. charstr[]=”FORTRAN”;
C. char*str=”FORTRAN”;
D. charstr[]={’F’,’O’,’R’,’T’,’R’,’A’,’N’,’\0’};
第59题:
以下程序段的输出是___A____。
staticchara[]=“-12345”;
intk=0,symbol,m;
if(a[k]==’+’||a[k]=’-’)
symbol=(a[k++]==’+’)?
1:
-1;
for(m=0;a[k]>=’0’&&a[k]<=’9’;k++)
m=m*10+a[k]-‘0’;
printf(“number=%d\n”,symbol*m);
A. number=-12345
B. number=12345
C. number=-10000
D. number=10000
第60题:
已知charstr1[10],str2[10]={“books”};则在程序中能够将字符串“books”赋给数组str1的正确语句是___B___。
A. str1={“books”};
B. strcpy(str1,str2);
C. str1=str2
D. strcpy(str2,str1);
★第61题:
若有以下语句,则正确的描述是___B___。
staticcharx[]=“12345”;
staticchary[]={‘1’,‘2’,‘3’,‘4’,‘5’};
A. x数组和y数组的长度相同
B. x数组长度大于y数组长度
C. x数组长度小于y数组长度
D. x数组等价于y数组
第62题:
在下述对C语言字符数组的描述中错误的是___C___。
A. 字符数组可以存放字符串
B. 字符数组中的字符串可以进行整体输入/输出
C. 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D. 字符数组的下标从0开始
第63题:
要说明一个有10个int元素的数组,应当选择语句___A____。
A. inta[10];
B. inta[2,5];
C. inta[];
D. int*a[10];
★第64题:
已知chars[5],c;registercharb;则调用函数scanf的正确语句是___D___。
A. scanf(“%s%c”,s,c);
B. scanf(“%d%c”,&b,&c);
C. scanf(“%d%c”,b,&c);
D. scanf(“%s%c”,s,&c);
第65题:
错误的说明语句是__D___。
A. staticcharword[]={‘T’,‘u’,‘r’,‘b’,‘o’,‘\0’};
B. staticcharword[]={“Turbo\0”};
C. staticcharword[]=“Turbo\0”;
D. staticcharword[]=‘Turbo\0’;
★第66题:
请选择下列程序的运行结果___A___。
#include
intd=1;
fun(intp)
{intd=5;
d+=p++;
printf(“%d”,d);
}
main()
{inta=3;
fun(a);
d+=a++;
printf(“%d”,d);
}
A. 84
B. 96
C. 94
D. 85
第67题:
请选择下列程序的运行结果__D___。
#include
try()
{stati