C语言基础知识综合练习题.docx
《C语言基础知识综合练习题.docx》由会员分享,可在线阅读,更多相关《C语言基础知识综合练习题.docx(29页珍藏版)》请在冰豆网上搜索。
C语言基础知识综合练习题
一、C语言基本知识和基本语句
(一)选择题
1.设a,b和c都是int型变量,且a=3,b=4,c=5则下面的表达式中,值为零的表达式是()。
A)‘a’&&’b’B)a<=b
C)a||b+c&&b-cD)!
((a
C||1)
2.设ch是char型变量,其值为A字符,且有表达式:
ch=(ch>=‘A’&&ch<=‘Z’)?
(ch+32):
ch,则表达式ch的值是()字符。
A)AB)aC)ZD)z
3.若x和y都是int型变量,x=100,y=200,且有程序段:
printf(“%d”,(x,y));则输出结果是()。
A)200B)100C)100,200D)输出格式不够,输出不确定的值
4.C语言中最简单的数据类型包括()。
A)整型、实型、逻辑型B)整型、单精度型、双精度、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
5.C语言中,运算对象必须是整型的运算符是()。
A)%B)/C)%和/D)**
6.数学关系x≥y≥z,它对应C语言表达式是()。
A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
7.以下说法中正确的是()。
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
8.设intx=10,y=3,z;则语句printf(“%d\n”,z=(x%y,x/y));的输出结果是()。
A)1B)0C)4D)3
9.C语言表达式10!
=9的值是()。
A)trueB)非零值C)0D)1
10.合法的C语言字符常量是()。
A)’\t’B)“A”C)65D)A
11.若int类型数据占两个字节,则下列语句的输出为()。
intk=-1;
printf(“%d,%u\n”,k,k);
A)-1,-1B)–1,32767C)–1,32768D)–1,65535
12.组成C语言程序的是()。
A)子程序B)过程C)函数D)主程序和子程序
13.以下的选项中,正确的赋值语句是()。
A)i++;B)a=1,b=2;C)a=b=5D)y=int(x);
14.以下不符合C语言语法的语句是()。
A)i++;B)i=j=5;C)k=2*4,k*4;D)y=float(i)
15.下列程序的输出结果是()。
main()
{inta=9;
a+=a-=a+a;
printf(“%d\n”,a);}
A)18B)9C)–18D)–9
16.下列语句的输出结果是()。
printf(“%d\n”,(int)(2.5+3.0)/3);
A)有语法错误不能通过编译B)2C)1D)0
17.下列程序的输出是()。
main()
{inta=7,b=5;
printf(“%d\n”,b=b/a);}
A)有语法错误不能通过编译B)2C)1D)0
18.请阅读程序()。
main()
{inta;floatb,c;
scanf(“%2d%3f%4f”,&a,&b,&c);
printf(“\na=%d,b=%f,c=%f\n”,a,b,c);}
若运行时从键盘上输入9876543210(CR表示回车),则上面程序的输出结果是()。
A)a=98,b=765,c=4321B)a=10,b=432,c=8765
C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0
19.以下程序的输出结果是()。
main()
{inta=-1,b=4,k;
k=(++a<0)&&!
(b--<=0);
printf(“%d%d%d\n”,k,a,b);}
A)104B)103C)003D)004
20.下列程序的输出结果是()。
main()
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;j=a++;k=b;
printf(“i=%d,j=%d,k=%d\n”,i,j,k);}
A)i=2,j=1,k=3B)i=1,j=1,k=2C)i=4,j=2,k=4D)i=1,j=1,k=3
(二)填空题
1.在C语言中,double类型数据占个字节;char类型数据占个字节。
2.设C语言中,int类型数据占2个个字节,则long类型数据占个字节;unsignedint类型数据占个字节;short类型数据占个字节;
3.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.37))值的数据类型为
4.假设m是一个三位数,从左到右用a,b,c表示每一位的数字,若从左到右数字是bac的三位数,则在C语言中用m表示bac的表达式是
二、C语言选择和循环结构
1.在C语言中,能代表逻辑值“真”的是()。
A)trueB)大于0的数C)非0整数D)非0的数
2.若给定条件表达式(M)?
(a++):
(a--);则其中表达式M
A)和(M==0)等价B)和(M==1)等价
C)和(M!
=0)等价D)和(M!
=1)等价
3.在C语言的if语句中,用作判断的表达式是()。
A)关系表达式B)逻辑表达式C)算术表达式D)任意表达式
4.若变量已正确定义,则以下程序段的输出为()。
inta=2;b=3;
printf(a>b?
“***a=%d”:
“###b=%d”,b);
A)没有正确的输出格式控制B)***a=2
C)###b=3D)***a=2####b=3
5.以下程序段的输出结果为()。
inta=1;b=2,c=2,t=0;
while(a
printf(“%d,%d,%d”,a,b,c);
A)1,2,0B)2,1,0C)1,2,1D)2,1,3
6.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是()。
if(x>y)z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
7.以下程序的运行结果是()。
main()
{intm=5;
if(m++>5)printf(“%d\n”,m);
elseprintf(“%d\n”,m--);}
A)4B)5C)6D)7
8.以下不正确的语句是()。
A)if(x>y);
B)if(x=y)&&(x!
=0)x+=y;
C)if(x!
=y)scanf(“%d”,&x);elsescanf(“%d”,&y);
D)if(x9.若w、x、y、z、m均为int型变量,则执行下面语句后的m值是()。
w=1;x=2;y=3;z=4;
m=(ww:
x;
m=(mm:
y;
m=(mm:
z;
A)1B)2C)3D)4
10.下面有关for循环的正确描述是()。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体中,可包含多条语句,但必须用花括号括起来
11.若i为整数变量,则以下循环执行的次数是()。
for(i=2;i==0;)printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
12.执行语句for(i=1;i++<4;);后变量i的值是()。
A)3B)4C)5D)不定
13.以下正确的说法是()。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体和switch语句体使用break语句
C)在循环体使用break语句或continue语句的作用相同
D)在多层循环嵌套中退出时,只能使用goto语句
14.以下程序的功能是判断输入的年份是否是闰年。
请在填入正确容
main()
{inty,f;
scanf(“%d”,&y);
if(y%400==0)f=1;
elseif(①)f=1;
else②;
if(f)printf(“%dis”,y);
elseprintf(“%disnot”,y);
printf(“aleapyear\n”);}
15.有四个数a,b,c,d要求按从大到小的顺序输出请在填入正确容
main()
{inta,b,c,d,t;
scanf(“%d%d%d%d”,&a,&b,&c,&d);
if(a
if(①){t=a;a=d;d=t;}
if(aif(②){t=b;b=c;c=t;}
if(bif(cprintf(“%d%d%d%d\n”,a,b,c,d);}
16.以下程序的功能是()。
从键盘输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
main()
{floatx,amax,amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while(①)
{if(x>amax)amax=x;
if(②)amin=x;
scanf(“%f”,&x);}
printf(“\namax=%f\namin=%f\n”,amax,amin);
}
17.以下程序的功能是计算1-3+5-7+……-99+101的值,请填空。
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{①;s=s+t;②;}
printf(“%d\n”,s);
}
或:
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{s=s+t*i;③;}
printf(“%d\n”,s);
}
18.若用0至9之间不同的三个数构成一个三位数,下面程序统计出共有多少种方法。
请填空。
main()
{inti,j,k,count=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if(①)continue;
elsefor(k=0;k<=9;k++)
if(②)count++;
printf(“%d”,count);
}
19.下面的程序功能是打印100以个位数为6,且能被3整除的所有数。
请填空。
main()
{inti,j;
for(i=0;①;i++)
{j=i*10+6;
if(②)continue;
printf(“%d”,j);}}
三、C语言数组练习
(一)选择题
1.以下对C语言字符数组的描述错误的是()。
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句过赋值运算符“=”对字符数组整体赋值字符串
D)不可以用关系运算符对字符数组中的字符串进行比较
2.不能把字符串Hell0!
赋给数组b的语句是()。
A)charb[10]={‘H’,’e’,’l’,’l’,’o’,’!
’};
B)charb[10];b=”Hello!
”;
C)charb[10]={‘H’,’e’,’l’,’l’,’o’,’!
’,’\0’};
D)charb[10]=“Hello!
”;
3.合法数组定义是()。
A)inta[]=”string”;B)inta[5]={0,1,2,3,4,5};
C)chara=”string”;D)chara[]={0,1,2,3,4,5};
4.以下能对二维数组a进行正确初始化的语句是()。
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}};
5.若有说明inta[3][4]={0};则下面正确的叙述是()。
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其不一定为0
D)数组a中各元素都可得到初值0
6.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
A)整型常量B)整型表达式
C)整型常量和整型表达式D)任何类型的表达式
7.以下对一维整型数组a的正确说明是()。
A)inta(10);B)intn=10,a[n];
C)intn;D)#defineSIZE10
scanf(“%d”,&n);inta[SIZE];
inta[n];
8.若有说明inta[10];则对a数组元素的正确引用是()。
A)a[10]B)a[3.5]C)a(5)D)a[10-10]
9.以下对二维数组a的正确说明是()。
A)inta[3][];B)floata(3,4);
C)doublea[1][4];D)floata(3)(4);
10.若有说明inta[3][4];则对a数组元素的正确引用是()。
A)a[2][4]B)a[1,3]C)a[1+1][0]D)a
(2)
(1)
11.若有说明inta[3][4];则对a数组元素的非法引用是()。
A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4]
12.对inta[10]={6,7,8,9,10};说明语句的正确理解是()。
A)将5个初值依次赋给a[1]至a[5],其余元素赋0值;
B)将5个初值依次赋给a[0]至a[4],其余元素赋0值;
C)将5个初值依次赋给a[6]至a[10],其余元素赋0值;
D)因为数组长度与初值的个数不相同,所以此语句不正确;
13.定义如下变量和数组intk;inta[3][3]={1,2,3,4,5,6,7,8,9};
则执行for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);语句的输出结果是()。
A)357B)369C)159D)147
14.判断字符串a和b是否相等,应当使用()。
A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))
15.判断字符串s1是否大于字符串s2,应当使用()。
A)if(s1>s2)B)if(strcmp(s1,s2))
C)if(strcmp(s2,s1)>0)D)if(strcmp(s1,s2)>0)
16.下面程序段的功能是将字符串s中所有的字符c删除。
请选择填空。
#include
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!
=‘\0’;i++)
if(s[i]!
=‘c’);
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]
17.有两个字符型数组a,b,则以下正确的输入格式是()。
A)gets(a,b);B)scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&a,&b);D)gets(“a”),gets(“b”);
18.对两个数组a和b进行如下初始化,
chara[]={‘A’,’B’,’C’,’D’,’E’,’F’};
charb[]=”ABCDEF”;
则以下叙述正确的是()。
A)a与b数组完全相同B)a与b数组长度相同
C)a与b中都存放字符串D)b数组比a数组长度长
(二)填空题
1.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其它元素不变。
请填空。
#include
main()
{chara[]=“labchmfye”,t;
inti,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;
)
if(
)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);printf(“\n”);}
2.下面程序以每行4个数据的形式输出a数组,请填空。
#defineN20
main()
{inta[N],i;
for(i=0;i);
for(i=0;i{if(
)
printf(“%3d”,a[i]);}
printf(“\n”);}
3.下面程序是分别求出矩阵a的两条对角线上的元素之和。
请填空。
main()
{inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,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(①;②;j--)
if((i+j)==2)sum2=sum2+a[i][j];
printf(“sum1=%d,sum2=%d\n”,sum1,sum2);}
4.下面程序功能是检查一个二维数组是否对称(即对所有ij都有a[i][j]=a[j][i])。
请填空。
main()
{inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
inti,j,found=0;
for(j=0;j<4;j++)
for(①;i<4;i++)
if(a[j][i])!
=a[i][j]
{②;break;}
if(found)printf(“no”);
elseprintf(“yes”);}
5.下面的程序段将输出computer,请填空。
charc[]=“It’sacomputer”;
for(i=0;①;i++)
{②;printf(“%c”,c[j]);}
6.下面的程序功能是在三个字符串中找出最小的。
请填空。
#include
#include
main()
{chars[20],str[3][20];inti;
for(i=0;i<3;i++)gets(str[i]);
strcpy(s,①);
if(strcmp(str[2],s)<0)strcpy(s,str[2]);
printf(“%s\n”,②);}
7.若有定义inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是①,a[2][1]得到的初值是②。
8.设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。
请填空。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
intk,s,i;floatave;
for(k=s=i=0;i<10;i++)
{if(a[i]%2!
=0)①;
s+=②;
k++;}
if(k!
=0){ave=(float)s/k;printf(“%d,%f\n”,k,ave);}}
9.下面程序段的运行结果是()。
charx[]=”theteacher”;i=0;
while(x[++i]!
=‘\0’)
if(x[i-1]==‘t’)printf(“%c”,x[i]);
10.下面程序段是输出两个字符串中对应字符相等的字符。
请填空。
charx[]=”programming”;
chary[]=”Fortran”;
inti=0;
while(x[i]!
=‘\0’&&y[i]!
=‘\0’)
{if(x[i]==y[i])printf(“%c”,);
elsei++;}…
四、C语言函数与编译预处理练习
(一)选择题
1.有以下函数调用语句,其实参数的个数是()。
fun(a+b,(x,y),fun(n+k,d,(a,b)));
A)3B)4C)5D)6
2.C语言规定,程序中各函数之间()。
A)既允许直接递归调用又允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用但不允许间接递归调用
D)不允许直接递归调用但允许间接递归调用
3.C语言中,函数的隐含存储类别是()。
A)autoB)staticC)externD)无存储类别
4.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()。
A)externB)registe