C语言练习题1.docx
《C语言练习题1.docx》由会员分享,可在线阅读,更多相关《C语言练习题1.docx(33页珍藏版)》请在冰豆网上搜索。
C语言练习题1
一、语言基础选择题
1.下面说法中,正确的是B
A)C语言是机器语言
B)C语言程序可以由一个或多个函数构成
C)C语言程序总是从第一个函数开始执行
D)C语言程序不用编译就可以直接运行
2.C语言程序的基本单位是C
A)程序行B)语句C)函数D)字符
3.一个C语言程序的上机步骤是A
A)编辑,编译,连接,执行B)编译
C)编辑,连接,执行D)连接,编译,执行
4.已知有定义:
charch;则如下正确的赋值为A
A)ch=‘M’;B)ch=’55’;C)ch="M";D)ch="55";
5.在TurboC环境中,查看程序运行结果的快捷键是D
A)F5B)Ctrl+F9C)F8D)Alt+F5
6.下列变量名中合法的是C
A)B.C.TomB)3a6bC)_b5a8D)$ABC
7.C语言中,要求运算数必须是整型的运算符是D
A)/B)++C)!
=D)%
8.已知intj,i=1;则执行j=-i++;i和j的值为B
A)1,-1B)2,-1C)1,1D)2,1
9.在C语言中,数字035是一个A
A)八进制数B)十六进制数C)十进制数D)非法数
10.C语言中用于结构化程序设计的三种基本结构是___A___
A)顺序结构、选择结构、循环结构B)if、switch、break
C)for、while、do-whileD)if、for、continue
11.如下程序运行后的输出结果是___B___
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
A)a=1,b=1B)a=2,b=1C)a=1,b=0D)a=2,b=2
12.下列说法中,正确的是___C___
inti,x;
for(i=0,x=0;i<=5&&x!
=4;i++);
A)循环体一次也不执行B)是无限循环
C)最多执行6次D)最多执行5次
13.设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a的值是___D___
A)3B)0C)9D)-12
14.有输入语句:
scanf("a=%d,b=%d",&a,&b),为使变量a值为3,b值为7,
从键盘输入数据的正确形式是___A___
A)a=3,b=7<回车>B)a=3b=7<回车>C)37<回车>D)3,7<回车>
15.已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是___D___
#include
main()
{charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
A)因输出格式不合法,输出错误信息B)65,90
C)A,YD)65,89
16.如下程序段
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为___D___
A)tureB)falseC)0D)1
17.以下关于break和continue语句的说明正确的是__C____
A)break用于switch结构,continue用于循环结构。
B)continue用于switch结构,break用于循环结构。
C)continue作用为结束本次循环,break作用为跳出循环体。
D)break作用为结束本次循环,continue作用为跳出循环体。
18.逻辑运算符两侧运算对象的数据类型为___D___
A)只能是0或1B)只能是0或非0正数
C)只能是int或char型数据D)可以是任何类型数据
19.下列叙述中正确的是___A___
A)函数定义不可以嵌套,但函数调用可以嵌套
B)函数定义可以嵌套,但函数调用不可以嵌套
C)函数定义和函数调用都不能嵌套
D)函数定义与函数调用都可以嵌套
20.若x为整型变量,以下定义指针的正确语句是___C___
A)intp=&x;B)intp=x;
C)int*p=&x;D)p=x;
21.以下数组声明语句中正确的是___D___
A)inta,a[n];B)inta[];
C)inta[2][3]={{1},{2},{3}};D)inta[][3]={{1},{2},{3}};
22.C语言的编译系统对宏命令是___D___
A)在程序运行时进行代换处理的
B)在程序连接时进行代换处理的
C)和源程序中其它C语句同时进行编译的
D)在对源程序中其它成份正式编译之前进行处理的
23.设intb[]={1,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为___A___
A)1B)2
C)3D)4
24.当定义一个结构体变量时,系统分配给它的内存是___A___
A)各成员所需内存量的总和B)结构中第一个成员所需的内存量
C)成员中内存量最大者所需的容量D)结构中最后一个成员所需内存量
25.为了向二进制文件尾部增加数据,打开文件的方式应采用___A__追加_
A)“ab”B)“rb+”
C)“wb”D)“wb+”
二、程序阅读选择题
1.有以下程序
voidfun2(chara,charb){printf("%c%c",a,b);}
chara='A',b='B';
voidfun1(){a='C';b='D';}
main()
{fun1();
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是A
A)CDEFB)ABEFC)ABCDD)CDAB
2.以下程序的输出结果是___A___
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
A)011122B)012C)012020D)120
3.以下程序的输出结果是___C___
main()
{inti=0,s=0;
do{if(i%2){i++;continue;}
i++;
s+=i;
}while(i<7);
printf("%d\n",s);
}
A)28B)12C)16D)21
4.以下程序运行后的输出结果是___C___
#defineS(x)4*x*x+1
main()
{inti=6,j=8;
printf("%d\n",S(i+j));
}
A)785B)120C)81D)21
5.以下程序的输出结果是___D___
main()
{chars[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
A)59B)16C)12D)15
6.以下程序的输出结果是_____D_____
voidf(intx,inty)
{intt;
if(x}
main()
{inta=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
A)3,4,5B)5,3,4C)5,4,3D)4,3,5
7.以下程序的输出结果是___C___
#include
main()
{inti,m,k;
for(m=3;m<=15;m++)
{k=skrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)printf(“%d”,m);
}
}
A)468101214B)3691215C)3571113D)3579111315
8.以下程序的输出结果是___C___
f1(inta)
{autob=0;
staticc=2;
b=b+1;
c=c+1;
return(a+b+c);
}
main()
{inta=2,i;
for(i=0;i<3;i++)
printf(“%2d”,f1(a));
}
A)666B)765C)678D)567
三、填空题
1.数学式3x3+2x写成C语言的表达式是__3*x*x*x+2*x______。
2.strlen(“Beijing2008”)=____11________。
3.函数调用时实参与形参的传递方式有值传递和地址传递两种。
4.有一个二维数组a[3][4],则*(a[1]+2)表示数组元素__a[1][2]___。
5.若x=4,则执行语句x>>2;后,x的值是1。
6.以下程序段的输出结果是___11__
inti=9;
printf("%o\n",i);
7.以下程序的作用是在屏幕上显示九九乘法表。
显示结果如下,请填空:
1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
…………………
main()
{inti,j;
for(i=1;i<=9;i++)
{for(j=1;_j<=i__;j++)
printf("%d*%d=%-2d",j,i,__j*i___);
_printf(“\n”);_____}
}
8.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
请填空。
main()
{inti,a[20],sun,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",_&a[i]__);
fro(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=_a[i]___;}
}
printf("sum=%d,count=%d\n",sum,count);
}
9.通过函数求f(x)的累加和,其中f(x)=x+1.请填空。
main()
{printf("Thesum=%d\n",SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F(__x__);
returns;
}
F(intx)
{return(x+1)__;}
10.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角(其构成规律是:
第0列元素和主对角线元素均为1,其余元素为其左上方和正上方元素之和,数据的个数每行递增1),请将程序补充完整。
#defineN6
voidyanghui(intx[N][N])
{inti,j;
x[0][0]=1;
for(i=1;i{x[i][0]=_x[i][i]_=1;
for(j=1;j
x[i][j]=_x[i-1][j-1]+x[i-1][j]_;}
}
11.以下程序的功能是:
整数类型数组a中存有不超过三位数的若干十进制正数元素,要求找出各位数字之和为奇数的元素.函数JS()用于测试组成数值的各位数值之和的奇偶.请填空将程序补充完整.
Main()
{inti,a[5];
intJS(int);
for(i=0;i<5;i++)
scanf(“%d”,&a[i]);
for(i=0;i<5;i++)
if(JS(a[i])!
=0)
printf(“%5d”,a[i]);
printf(“\n”);
}
intJS(intx)
{inti,j,sum=0;
while(x!
=0)
{sum=sum+x%10;
x=x/10;
}
if(sum%2==0)return(0);
elsereturn
(1);
}
四、编程题
编写一个程序求表达式1!
+2!
+3!
+4!
+5!
+6!
+……的前n项之和,n的值由用户从键盘输入.
要求:
①在自定义函数中求表达式的值;
②在主函数中提示及输入n,并将运算结果输出。
程序如下:
intJCH(intn)……1分
{inti;……1分
longt=1,s=0;……1分
for(i=1;i<=n;i++)……2分
{t=t*i;
s=s+t;
}……2分
return(s);……1分
}
voidmain()……1分
{intn;
longresult;……1分
printf(“inputn:
”);……1分
scanf(“%d”,&n);……1分
result=JCH(n);……2分
printf(“theresultis%ld\n”,result);……1分
}
一、语言基础选择题
1.下面可以作为C语言程序设计中标识符的是C
A)2DateB)num(10)C)_total3D)int
2.每个C语言程序都必须有一个B函数,C程序总是从该函数开始执行
A)include()B)main()C)scanf()D)printf()
3.一个C语言程序的上机步骤是A
A)编辑,编译,连接,执行B)编译
C)编辑,连接,执行D)连接,编译,执行
4.已知有定义:
charch;则如下正确的赋值为A
A)ch=‘M’;B)ch=’55’;C)ch="M";D)ch="55";
5.已知字符‘A’的ASCII值为65,则‘\103’表示的字符是C
A)字符AB)字符BC)字符CD)非法常量
6.C语言程序的基本单位是C
A)程序行B)语句C)函数D)字符
7.表达式3.6-5/2+1.2+5%2的值是D
A)4.3B)4.8C)3.3D)3.8
8.已知intj,i=1;则执行j=-i++;i和j的值为B
A)1,-1B)2,-1C)1,1D)2,1
9.下面说法中,正确的是B
D)C语言是机器语言
E)C语言程序可以由一个或多个函数构成
F)C语言程序总是从第一个函数开始执行
D)C语言程序不用编译就可以直接运行
10.C语言中用于结构化程序设计的三种基本结构是_C___
A)顺序结构、continue、循环结构B)选择结构、stitch、循环结构
C)顺序结构、选择结构、循环结构D)、for、stitch、if
11.下面程序运行后,输出的结果是_D__
#include
voidmain()
{inta=12,b=10;
printf(“%d,%d\n”,++a,a---b);
}
A)13,3B)13,2C)12,3D)12,2
12.下列说法中,正确的是_C_
inti,x;
for(i=0,x=0;i<=5&&x!
=4;i++);
A)循环体一次也不执行B)是无限循环
C)最多执行6次D)最多执行5次
13.设i,j,k为int型变量,若从键盘输入1#2#3#<回车>,下面__A输入语句可以使i的值为1,j的值为2,k的值为3。
A)scanf(“%d#%d#%d”,&I,&j,&k)
B)scanf(“%d,%d,%d”,&I,&j,&k)
C)scanf(“%d%d%d”,&I,&j,&k)
D)scanf(“%d%d%d”,&I,&j,&k)
14.对于int型函数max,下面函数原型声明语言正确的是_C__
A)intmax(intx,y)B)intmax(intxinty)
C)intmax(int,int)D)intmax(x,y)
15.已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是_D__
#include
main()
{charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
A)因输出格式不合法,输出错误信息B)65,90
C)A,YD)65,89
16.假设所有变量为int型,则执行语句a=(b=5,c=b++)后,a,b,c的值分别为__C___
A)6,6,5B)5,5,6C)5,6,5D)5,6,6
17.以下关于break和continue语句的说明正确的是__C__
A)break用于switch结构,continue用于循环结构。
B)continue用于switch结构,break用于循环结构。
C)continue作用为结束本次循环,break作用为跳出循环体。
D)breake作用为结束本次循环,continue作用为跳出循环体。
18.逻辑运算符两侧运算对象的数据类型为__D__
A)只能是0或1B)只能是0或非0正数
C)只能是int或char型数据D)可以是任何类型数据
19.下列叙述中正确的是__C__
A)函数定义和函数调用都不能嵌套
B)函数定义可以嵌套,但函数调用不可以嵌套
C)函数定义不有嵌套,但函数调用可以嵌套
D)函数定义与函数调用都可以嵌套
20.若x为整型变量,以下定义指针的正确语句是__C__
A)intp=&x;B)intp=x;
C)int*p=&x;D)p=x;
21.若有以下说明和语句,对a数组元素的正确引用是_C__
inta[4][5],(*b)[5];
b=a;
A)b+1B)*(b+1)
C)*(*b+1)D)*(b+1)+1
22.C语言的编译系统对宏命令是_D_
A)在程序运行时进行代换处理的
B)在程序连接时进行代换处理的
C)和源程序中其它C语句同时进行编译的
D)在对源程序中其它成份正式编译之前进行处理的
23.下面程序的运行结果是__B_
main()
{inta[10]={1,2,3,4,5,6,7,88,9,10},*p=a;
p++;
printf(“%d\n”,*(p+1));
A)4B)3
C)2D)1
24.当说明一个共用体变量时,系统分配给它的内存是__C__
A)各成员所需内存量的总和B)结构中第一个成员所需的内存量
C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量
25.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为__B___
A)EOFB)非0值C)0D)NULL
二、程序阅读选择题
1.有以下程序
voidfun2(chara,charb){printf("%c%c",a,b);}
chara='A',b='B';
voidfun1(){a='C';b='D';}
main()
{fun1();
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是_B__
A)CDEFB)ABEFC)ABCDD)CDAB
2.有以下程序_B__
#include
#defineN5
#defineMN+1
#definef(x)(x*M)
main()
{inti1,i2;
i1=f
(2);
i2=f(1+1);
printf("%d%d",i1,i2);
}
A)1212B)117C)1111D)127
3.有以下程序_C__
voidswap(char*x,char*y)
{chart;
t=*x;*x=*y;*y=t;
}
main()
{char*s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是
A)123,abcB)abc,123
C)1bc,a23D)321,cba
4.有以下程序
main()
{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是_C__
A)45B)20C)25D)36
5.以下程序的输出结果是_C__
main()
{chars[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
A)59B)16C)12D)15
6.有以下程序
main()
{
inti=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d%d%d\n",i,j,k);
}
程序运行后的输出结果是__D___。
A)123B)234C)223D)233
7.若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a
A:
CC:
D的值是__A__。
A)1B)2C)3D)4
8.有以下程序
point(char*p){p+=3;}
main()
{charb[4]={'a','b','c','d'},*p=b;
point(p);printf("%c\n",*p);
}
程序运行后的输出结果是__A___。
A)aB)bC)cD)d
三、填空题
1.已有定义:
double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元:
p=(double*)malloc(sizeof(double))。
2.有一个二维数组a[3][4],则*(a[1]+2)表示数组元素___7____。
3.函数调用时实参与形参的传递方式有值传递和地址传递两种。
4.strlen(“shanghai”)=____8____。
5.若x=15,则执行语句x<<2;后,x的值是60。
6.当运行以下程序时,输入abcd,程序的输出结果是:
a*b*c*d*
insert(charstr[]