C语言试题.docx
《C语言试题.docx》由会员分享,可在线阅读,更多相关《C语言试题.docx(73页珍藏版)》请在冰豆网上搜索。
C语言试题
C语言程序设计试题集(第1套)
一、单项选择题(每题2分,共20分)
1、以下叙述不正确的是
A)C程序由函数构成
B)一个C程序至少包含一个main函数
C)main函数可以调用main函数
D)main函数是每个程序执行的起始点
2、C程序中能直接让机器执行的文件是
A)编辑后的.c源文件
B)通过编译的.obj文件
C)通过连接的.exe文件
D)编辑后的.bak文件
3、假设定义变量如下:
intx;
floaty;
以下输入语句中哪个是正确的?
A)scanf(“%f%d”,&y,&x);B)scanf(“%f%d”,y,x);
C)scanf(“%f%f”,&y,&x);D)scanf(“%d%d”,&y,&x);
4、已知:
inta[][3]={1,2,3,4,5,6};则数组a的第一维的大小是
A)2B)3C)4D)无确定值
5、.如果switch表达式是char变量code,下面哪一个case子句是合法的。
A)case“3”:
B)case‘3’:
C)case3:
D)case=3:
6、能正确表示”x的值在[1,10]和[200,210]范围内”的表达式是
A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
7、C语言中while和do-while循环的主要区别是
do-while循环至少无条件执行一次,而while循环可能一次也不执行
while循环控制条件比do-while循环控制条件严格
do-while循环允许从外部转到循环体内,而while循环不允许
do-while的循环体可以是复合语句,而while循环不可以是复合语句
8、下面哪一项函数的头部是有效的?
one(intaintb)
intthisone(charx)
charanother(inta,b)
doubleyetanother
9、若有定义charx[]="12345";chary[]={'1','2','3','4','5'};则
A)x数组与y数组的长度相同B)x数组长度大于y的长度
C)x数组长度小于y数组长度D)x数组等价于y数组
10、二维数组的第一个元素的行下标和列下标是
A)1,1B)0,1C)1,0D)0,0
二、填空题(每空3分,共30分)
1、如果a=4,b=3,那么,在执行语句a=b;之后,a、b的值分别是
(1)
2、语句:
if(6>5)printf(“#”);
printf(“$”);
输出
(2)
3、for(sum=j=0;j<=10;++j)sum+=j;循环结束后sum的值等于(3)
4、长度为10的int类型数组和长度为3的double类型数组,哪一个数组占用的内存空间多(4)
5、字符数组a)chara[]=“one”;占多少内存字节(5)
6、如果ch<‘A’或ch>‘Z’,那么,表达式ch>=‘A’&&ch<=‘Z’的值是(6)
7、编写C语句,交换a、b的值(7)
8、为了使用库函数getchar(),必须在程序中包含命令(8)
9、设intnumbers[5]={17,25,30,56,58};编写C的for语句,将数组numbers中的每个元素减去3。
使用变量i跟踪下标。
(9)
10、设有函数定义:
设有函数定义:
intmax(intx,inty)
{intz;
z=x>y?
x∶y;
return(z);
}
语句printf(“%d”,max(max(2,3),4));输出什么?
(10)
三、阅读下列程序,写出运行结果(每题5分,共20分)
1、
#include
voidmain()
{ chara=’A’;
printf(“%c\n",a+32);
}
2、
#include
voidmain()
{intx=3,y;
if(x<0)y=-1;
elseif(x>0)y=1;
elsey=0;
printf(“x=%d,y=%d\n”,x,y);
}
3、
#include
voidmain()
{intf1,f2;
intj;
f1=1;f2=1;
for(j=1;j<=4;j++){
printf(″%d%d″,f1,f2);
f1=f1+f2;
f2=f2+f1;
}
}
4、
#include
voidmain()
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
for(i=0;i<2;i++){
for(j=0;j<3;j++)b[j][i]=a[i][j];
}
printf("arrayb:
\n");
for(i=0;i<3;i++){
for(j=0;j<2;j++)printf("%5d",b[i][j]);
printf("\n");
}
}
四、编写程序(共30分,每题10分)
1、从键盘上输入两个整数,比较两个数的大小,并输出较大者
2、编写程序,打印如下图案:
*
**
***
****
*****
3、编写程序,求一维数组中最大元素,数据自定。
C语言程序设计试题集(第2套)
单项选择题(30分,每题2分)
1.用C语言编写的代码程序______。
A、可立即执行B、是一个源程序
C、经过编译即可执行D、经过编译解释才能执行
2.C语言中用于结构化程序设计的三种基本结构是______。
A、顺序结构、选择结构、循环结构B、if、switch、break
C、for、while、do-whileD、if、for、continue
3.以下选项中合法的实型常数是______。
A、5E2.0B、E-3C、.2E0D、1.3E
4.假定x和y为double型,则表达式x=2,y=x+3/2的值是______。
A、3.500000B、3C、2.000000D、3.000000
5.ch是字符型变量,下面不正确的赋值语句是______。
A、ch=65;B、ch="a";C、ch='\n';D、ch=9+'0';
6.下列有关C语言程序书写格式的说法哪个是错误的?
A、C程序的书写格式比较自由,一个语句可以占多行,一行也可以有多个语句。
B、C语句必须要有分号。
C、C语言程序的标识符必须使用小写字母。
D、用{}括起来的部分,通常表示了程序的某一层次结构,称为块。
7.下面程序段所表示的数学函数关系是______。
x=-1;
if(a!
=0)
if(a>0)x=1;
elsex=0;
-1(a<0) 1(a<0)
A、x=0(a=0)B、x=-1(a=0)
1(a>0)0(a>0)
0(a<0)-1(a<0)
C、x=-1(a=0) D、x=1(a=0)
1(a>0)0(a>0)
8.以下关于do-while循环的不正确描述是______。
A)do-while的循环体至少执行一次
B)do-while的循环体可以是复合语句
C)在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
9.以下程序执行后sum的值是______。
A)15B)14C)不确定D)0
main()
{inti,sum=0;
for(i=1;i<6;i++)sum+=i;
printf("%d\n",sum);
}
10.若有说明语句:
inta[][3]={1,2,3,4,5,6};则a数组第一维的大小是。
A.1B.2C.3D.无确定值
11.C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是______。
A、float型B、long型C、int型D、double型
12.下面正确的函数定义形式为
A、doublefun(intx;inty)
B、doublefun(intx,inty);
C、doublefun(intx,y)
D、doublefun(intx,inty)
13.以下程序运行后,输出结果是______。
#defineADD(x)x+x
main()
{intm=1,n=2,s=3;
s=S+ADD(m+n);
printf("s=%d\n",s);
}
A、s=8 B、s=9 C、s=6 D、s=18
14.若有定义:
intx,*p;则以下正确的赋值表达式是
A、p=&xB、p=xC、*p=&xD、p=*x
15.以下变量a,b,c均为double型且已正确赋值,不能正确地表示数学式子
的C语言表达式是
A、2*(1/(a*b*c)) B、2/a*b*cC、2/a*1/b*1/cD、2/a/b/c
程序填空题(20分,每空2分)
1.以下程序的功能是:
输入三个整数n1、n2、n3,将最大的数输出。
请填空。
main()
{intn1,n2,n3,temp;
scanf("%d%d%d",&n1,&n2,&n3);
if(n2 {temp=n2;n2=n3;n3=temp;}
if(n1 {temp=n1;①;②;}
printf("%d\n",n1);
}
2.编写打印整数1~10的平方的函数。
请填空。
main()
{inti;
for(i=1;i③;i++)
printf(“%d\n”,square(i));
}
square(intn)
{return(④);}
3.求数组所有元素累加和。
请填空。
main()
{intsum,i,j,k,a[2][2][2]={1,2,3,4,5,6,7,8};
sum=⑤;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
sum=⑥;
printf("%d",sum);
}
4.以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=⑦;
f=⑧;
}
returnm;}
main()
{printf(“m=%d\n”,fun(10));
}
5.将以下含有switch语句的程序段改写成对应的含有嵌套if语句的程序段,请填空。
含有switch语句的程序段:
ints,t,m;
t=(int)(s/10);
switch(t)
{case10:
m=5;break;
case9:
m=4;break;
case8:
m=3;break;
case7:
m=2;break;
case6:
m=1;break;
default:
m=0;
}
含有嵌套if语句的程序段:
ints,m;
if(s<60||s>110)m=0;
elseif(s<70)m=1;
elseif(s<80)m=2;
elseif(s<90)m=3;
elseif(s<100)⑨;
else⑩;
三.程序运行结果题(20分,每题4分)
1.写出程序运行的结果:
main()
{
inta=2,b=3;
floatx=3.5,y=2.5,p;
p=(float)(a+b)/2+(int)x%(int)y;
printf("p=%f\n",p);
}
2.写出程序运行的结果:
main()
{
inti,j;
i=3;
j=6;
printf("%d,%d\n",i++,j--);
printf("%d,%d\n",++i,--j);
}
3.写出程序运行的结果:
main()
{intnumber=0;
while(number<=1)
{printf(“*%d,”,number);
number++;}
printf(“**%d\n”,number);
}
4.写出程序运行的结果:
main()
{chars[]="abcdefg";
inti;
for(i=1;i<7;i+=2)
printf("%c",s[i]);
}
5.写出程序运行的结果:
intast(intx,inty,int*cp,int*dp)
{*cp=x+y;*dp=x-y;}
main()
{inta=4,b=3,c,d;
ast(a,b,&c,&d);
printf("%d%d\n",c,d);
}
四.程序设计题(30分,每题10分)
参考知识:
C语言数的范围:
int型和short型为-32768~32767,long型为-2147483648~2147483647,单精度实数为-3.4×10-38~3.4×1038(7位有效数字),双精度实数为-1.7×10-308~1.7×10308(15位有效数字),长双精度实数为-1.2×10-4932~1.2×104932(18位有效数字)。
1.输入一个华氏温度f,然后计算,最后输出对应的摄氏温度c。
换算公式为:
C=5*(F-32)/9
要求输出保留2位小数。
2.已知
x(x<1)
y=2x-1(1<=x<10)
3x-11(x>=10)
用scanf函数输入x的值,求y值。
3.编写一个循环结构的程序,求1!
+2!
+3!
+4!
+5!
+6!
+7!
+8!
+9!
+10!
的值。
C语言程序设计试题集(第3套)
一、单项选择题(每题2分,共20分)
1、下列语言中,CPU能直接识别的是
A)自然语言B)高级语言C)汇编语言D)机器语言
2、以下所列的C标识符中,错误的是
A)examp1B)RS686C)2mixD)first_exam
3、下面哪个是不合法的赋值语句
A)x+=2;B)x=y=z=0;C)x+y=z;D)m+=m/=2;
4、设intage,count;doubleprice,weight;下面哪个语句是正确的
A)scanf(“%lf”,&price);
B)scanf(“%d”,age);
C)printf(“%d”,&count);
D)printf(“%d”,weight);
5、下面哪一项不是程序的控制结构?
A)循环B)选择C)顺序D)排序
6、指出下面语句的执行结果
if(5<3)printf(“*”);
elseif(7==8)printf(“&”);
elseprintf(“$”);
A)*B)&C)$D)以上全不是
7、选出最佳答案
s=0;
for(j=0;j<5;++j)s=2*s+j;
s最后的值是什么?
A)11B)4C)26D)22
8、下面哪一项是对函数voiddisplay(void);的调用?
A)calldisplay();B)display();C)display()D)display;
9、下面哪个说法是错误的?
数组中的所有元素具有相同的名称
数组中的所有元素具有相同的数据类型
数组中的所有元素具有相同的下标
数组中的元素在内存是连续存放的
10、二维数组的第一个元素的行下标和列下标是
A)0,0B)0,1C)1,0D)1,1
二、填空题(每空2分,共20分)
1、编写C表达式:
b2-4ac
(1)
2、编写C语句,声明int变量来存储4个整数
(2)
3、假定intx=5,y;,在执行语句“y=x++;”后,x,y的值是(3)
4、将复合赋值语句x*=5-z;写成等效的简单赋值语句(4)
5、编写C语句,该语句显示12.3的平方根(5)
6、编写C语句,如果gender是’M’,那么输出Male(6)
7、假设输入:
3845714–1,下面代码的输出是什么?
(7)
sum=0;
scanf(“%d”,&num);
while(num!
=-1){
sum+=num;
scanf(“%d”,&num);
}
printf(“%d”,sum);
8、为了使用库函数sqrt(),必须在程序中包含命令(8)
9、设intnumbers[5]={17,25,30,56,58};编写C的while语句,将数组numbers中的每个元素减去数字3。
使用变量i跟踪下标,假设变量的初值为0。
(9)
10、设有函数定义:
设有函数定义:
ints(intone)
{intj;
intp=1;
for(j=1;j<=3;++j)p=p*one;
returnp;
}
语句printf(“%d”,s
(2));输出什么?
(10)
三、程序分析填空题(每空3分,共30分)
从键盘输入一个大写字母,要求改用小写字母输出。
#include
voidmain()
{ chara;
printf(“请输入一个大写字母:
”);
a=getchar();
printf(“对应的小写字母是:
%c",
(1));
}
2、判断是否是闰年,闰年的条件:
能被4整除而不能被100整除,或能被400整除的公元年。
#include
voidmain()
{intyear,leap;
scanf("%d",&year);
if(
(2))leap=1;
elseleap=0;
if(leap)printf("%dis",year);
elseprintf("%disnot",year);
printf("aleapyear.\n");
}
3、求1到100的和
#include
voidmain()
{inti,sum;
(3)
do{
sum=sum+i;
(4);
}while(i<=100);
printf("%d\n″,sum);
}
4、打印Fibonicci数列前20项:
1,1,2,3,5,8…数学表示:
f(0)=f
(1)=1,f(n)=f(n-2)+f(n-1)
#include
voidmain()
{
intf[20]=(5);
for(i=2;i<20;i++)(6);
for(i=0;i<20;i++)printf(“%10d”,f[i]);
}
5、有一个3×4的矩阵,要求编程序以求出其中值最大元素及其所在的行号和列号。
#include
voidmain()
{inti,j,row=0,colum=0,max;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;(6);i++)
for(j=0;(7);j++)
if(a[i][j]>max){
max=a[i][j];
row=(8);
colum=(9);
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
6、在主函数中输入一个整数,调用函数isprime()判是否素数并输出相关信息。
#include
#include
intisprime(int);
voidmain()
{intm;
printf("pleaseenteranumber:
");
scanf("%d",&m);
if((10))printf(“%disaprime\n“,m);
elseprintf(“%disnotaprime\n“,m);
}
intisprime(intm)
{inti;
for(i=2;i<=sqrt(m);++i)if(m%i==0)return0;
return1;
}
四、编写程序(每题10分,共30分)
1、从键盘上输入两个单精度型实数f1,f2,然后交换它们的值,最后输出f1和f2。
2、任意输入三个整数,要求按从大到小的顺序输出。
3、计算12-22+32-42+···+472-482+492-502
———————————————————————————
C语言程序设计试题集(第4套)
一、单项选择题(45分,每题3分)
1.构成一个C程序的是_______。
A、一个主函数和若干个非主函数
B、若干个主函数和若干个非主函数
C、一个主函数和最多一个非主函数
D、若干个主函数和最多一个非主函数
2.以下选项中合法的字符常量是_______。
A、"B"B、'B'C、68D、'\B'
3.在C语言中,不合法的实数是_______。
A、1.23B、e-5C、3.245E3D、-.187
4.已知a是int型变量,下面不正确的赋值语句是_______。
A、a=65;B、a=1.2;C、a="a";D、a='A'+32;
5.广义地说,为解决一个问题而采取的方法和步骤,称为_______。
A、迭代B、增量C、递归D、算法
6.以下叙述中正确的是_______。
A、C程序中注释部分可以出现在程序中任意合适的地方
B、花括号"{"和"}"只能作为函数体的定界符
C、构成C程序的基本单位是函数,所有函数名都可以由用户命名
D、分号是C语句之间的分隔符,不是语句的一部分
7.若w、x、y、z、k均为int类型变量,则执行下面语句后的k的值是_______。
w=1;x=2;y=3;z=4;
k=(ww:
x;
k=(kk:
y;
k=(kk:
z;
A、1 B、2 C、3 D、4
8.以下程序段,说法正确的是_______。
x=-1;
do
{
x=x*x;
}
while(!
x);
A、是死循环B、循环执行二次
C、循环执行一次D、有语法错误
9.用语句floatx[3][100];定义数组x后,则下标最大的一个数组元素是
A、x[3][100]B、x[2][99]C、x[2][100]D、x[3][99]
10.若i、j已定义为int型,则以下程序段中,循环体的总的执行次数为_______。
for(i=5;i>0;i--)
for(j=0;j<4;j++)
{n=n+1;}
A、20B、24C、25D、30
11.以下程序编译、运行的结果是
A、5,5B、5.0,5.0C、5.05.0D、55
#defineMIN2
#defineMAX7
main()
{printf("%d,%d\n",MIN+3,MAX-MIN);}
12.下列符号中可以作为函数名的是_______。
A、x—aB、sysfC、5acD、$bc
13.以下正确的函数形式是_______。
A、doublefun1(intx,inty) B、fun1(intx,y)
{z=x+y;returnz;} {intz;
returnz;}