C语言基础测试练习题目.docx
《C语言基础测试练习题目.docx》由会员分享,可在线阅读,更多相关《C语言基础测试练习题目.docx(25页珍藏版)》请在冰点文库上搜索。
C语言基础测试练习题目
单项选择题
6、以下程序段的输出结果是(c)
main()
{intm=9;
if(m++>9)printf(“%d\n”,m);elseprintf(“%d\n”,m--);}
A)8B)9C)10D)11
7、逻辑运算符中,运算优先级按从高到低依次为(d)。
A)&&,!
||B)||,&&,!
C)&&,||,!
D)!
&&,||
8、putchar函数可以向终端输出一个(D)。
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
9、有以下程序
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{inta=10,b=20,c=30;
fun(a,b,c)
printf(%d,%d,%d\n”,c,b,a);
}输出的结果是(a)
A)30,20,10B)10,20,30
C)456,567,678D)678,567,456
10、C语言允许函数值类型缺省定义,此时函数值隐含的类型是(b)
A)float型B)int型C)long型D)double型
11、若有说明:
inta[3][4];则对a数组元素的正确引用是(A)
A)a[1][3]B)a[1,3]C)a[1+2][0]D)a
(2)
(1)
Aa[2][4]Ba[1+1][0]
inta[3][4],这个声明的第二维是4个元素,下标应该是从0到3。
而A中第二维的下标为4,大于3,越界。
12、已知inti,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量i的值是(c)
A)6B)12C)30D)36
13、若inti=10;执行下列程序后,变量i的正确结果是(d)
switch(i)
{case0:
i+=1;xxxx
Xxxx
Xxxx
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
A)10B)11C)12D)13
14、将整型变量a、b中的较大值为变量C赋值,下列语句中正确的是(b)。
A)(a>b)?
a:
b=c;B)c=(a>b)?
a:
b;
C)c=if(a>b)aelseb;D)(a>b)?
c=a:
c=b;
15、以下叙述中不正确的是()。
A)在不同的函数中可以使用同名变量
B)函数中的形参是局部变量
C)在一个函数内定义的变量只在函数内有效
D)在一个函数内复合语句中定义的变量在本函数范围内有效
16、为了判断两个字符串s1和s2是否相等,应当使用(d)
strcmp
cmp是compare的缩写,比较的意思,==0表示两个字符串相等。
A)if(s1==s2)B)if(s1=s2)
C)if(strcmp(s1,s2))
D)if(strcmp(s1,s2)==0)
17、以下正确的函数形式是(d)。
A)doublefun(intx,inty){z=x+y;returnz;}
B)fun(intx,y){intz;returnz;}
C)fun(x,y){intx,y;doublez;z=x+y;returnz;}
D)doublefun(intx,inty){doublez;z=x+y;returnz;}
18、以下程序段(a)。
x=-1;
do
{
x=x*x;
}
while(!
x);当x=-1时﹐执行do语句体"x=x*x",即此时的x==1,再while语句循环判断!
1=0﹐显然不成立﹐即while一次也不循环﹐选择A答案
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
19、有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;//s=s+(i+1)
printf(“%d\n”,s);
} 程序执行后的输出结果是(d)
A)自然数1~9的累加和 B)自然数1~10的累加和
C)自然数1~9中的奇数之和 D)自然数1~10中的偶数之和
20、若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)而A却忘了写B的数据类型应该改成doublemyadd(doublea,doubleB);
A)double myadd(double a,b); B)double myadd(double,double);
C)double myadd(double b,double a); D)double myadd(double x,double y);
6、以下程序的输出结果是(c)。
main()
{inta=5,b=6;
printf(“%d,%d\n”,--a,b++);
}
(A)5,6(B)5,7(C)4,6(D)4,7
7、以下程序的运行结果为(b)。
main()
{intm=7,c;
if(m%2==0)c=m;
elsec=m+1;
printf("%d",c);
}
(A)7(B)8(C)0(D)提示错误
8、以下程序的运行结果为(d)。
main()
{intm=5;
switch(m%2)
{case0:
printf("ok1");break;
case1:
printf("ok2");break;
case2:
printf("ok3");break;
default:
printf("ok4");break;
}
}
(A)ok1ok2ok3ok4(B)ok2ok3ok4(C)ok3(D)ok2
9、有定义:
inti=1;while(i<5){printf(“*”);i++;}的循环次数为(A)。
(A)4(B)5(C)6(D)0
10、以下语句中能够跳出当前循环结构的是(a)。
(A)break(B)continue(C)do(D)end
11、与语句for(i=2;i<10;i++)printf(“*”);不同的语句是(c)。
(A)i=2;for(;i<10;i++)printf(“*”);
(B)for(i=2;i<10;++i)printf(“*”);
(C)for(i=2;i<10;i+1)printf(“*”);
(D)for(i=2;;i++){printf(“*”);if(i>=10)break;}
12、一个完整的c语言程序可以由多个函数来共同实现,在这些函数中只有一个是(c)。
(A)标准函数(B)自定义函数(C)主函数(D)子函数
13、有定义:
intst[3][4];包含有十二个数组元素,其中下标最大的元素为(d)。
(A)st[0][0](B)st[3][4](C)st[3,4](D)st[2][3]
14、以下程序的运行结果为(b)。
main()
{inti;
intst[5]={4,6,3,7,9};
for(i=0;i<5;i++)
if(i%2!
=0)printf("%d,",st[i]);
}
(A)4,3,9(B)6,7(C)1,3,5(D)3,7,9
15.已知inta=3,*p=&a;printf(“%d”,*p);输出结果为(a);
(A)3(B)&a(C)a的地址(D)随机值
16数组定义为,inta[11][11];则数组a有(d)个数组元素.
A.12B.144C.100D.121
17.对于以下的变量定义,表达式(b)是不正确的。
structnode{
intj,k;
}x,*p=&x;B(*p)是指针地址.
A.p->k=2;B.(*p).k=2;C.x.k=2D.x->k=2
18.不正确的赋值或赋初值的方式是(b)。
A.charstr[]=”string”;B.charstr[10];str=”string”;
C.char*p=”string”;D.char*p;p=”string”;
19、下列运算符中,优先级最高的是A。
!
—算数—关系—且或—赋值
A.->B.++C.&&D.=
20、在C语言提供的合法的关键字是(d)
A、swicthB、cherC、CaseD、default
一、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
1、在c语言程序设计中,指定了一些标识符表示特定含义,如int用来表示整型数据,将这样的标识符称为关键字。
5、有数组inta[10];最后一个数组元素是a[9]。
6、有定义int*p,s;其中p的值应该是一个地址。
7、语句float*s;其中的类型标识float表示单精度实数的类型。
8、头文件的扩展名可以是.h。
9、“时间”结构体包含“时,分,秒”三个数据成员,写出它的类型说明
Classtime{inthour,minute,second;}。
10、已说明文件指针fp,以读方式打开e:
\myflie\aaa.txt文件的命令是
fp=fopen(“e:
\\myflie\\aaa.txt”,”r”)。
1、若已知a=10,b=20,则表达式!
a
5、定义3行4列的整型二维数组a的语句是_int__a[3][4]_;_______。
6、结构化程序设计所规定的三种基本控制结构是顺序结构选择结构和__循环___结构。
7、对应scanf("a=%d,b=%d",&a,&b);语句的输入a为3,b为7的键盘输入格式是_______a=3,b=7____。
8、已定义文件指针(FILE*fp;),打开d:
\my\abc.txt文件的命令是
fp=fopen("d:
\\my\\abc.txt","openwith");。
9、在C语言中,能代表逻辑值"真"的是1
10、结构体“日期”包含“年,月,日”三个数据成员,请写出其类型说明
Structdate
{intyear,mouth,day;}。
三、简答题:
1.下列程序
#defineMAX10
main()
{
inti,sum,a[]={1,2,3,4,5,6,7,8,9,10};
sum=1;
for(i=0;isum-=a[i];//sum=sum-a[i]
printf(“SUM=%d”,sum);
}
程序运行结果是:
-54
3.有如下程序
intfunc(inta,intb)
{
return(a+b);
}
voidmain()
{
intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出结果是15
4.有如下程序
voidfun(char*a,char*b)
{
a=b;(*a)++;
}
voidmain()
{
charc1=‘A’,c2='a',*p1,*p2;
p1=&c1;
p2=&c2;
fun(p1,p2);
printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是(Ab)
2.
voidmain()
{inta[10]={11,5,8,6,15,10,21,3,7,2};
inti,s=0;
for(i=0;i<10;i++)
if(a[i]<10)s=s+a[i];51319222931
printf("%d",s);
}
结果:
31
3.
main()
{
inta[3][3]={{1,3},{5}};
inti,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
if(i==1||j==1)
printf("%3d",a[i][j]);
else
printf("%3c",'');
printf("\n");
}
}
结果:
3,,
5,0,0,
0,,
4.
main()
{inta=10,b=20,t,*p1=&a,*p2=&b;
if(*p1<*p2)
{t=a;a=b;b=t;}
printf("%d,%d,%d,%d",a,b,*p1,*p2);
}20102010
二、编程题
1.输入一个成绩,如果小于60分,则输出“不及格”,否则输出“及格”
#include
voidmain()
{inta;
printf("输入:
");
scanf("%d",&a);
if(a>60)
printf("及格");
elseprintf("不及格");
}
2.任意输入n值,求n!
并输出结果。
(求阶乘部分用子函数实现)
intA(inta)
{
int,i;longj=1;for(i=1;i<=a;i++){j=j*i;}
returnj;
}
voidmain()
{intA(inta);
intn,m;
printf("输入:
");
scanf("%d",&n);
m=A(n);
printf("%d!
=%d\n",n,m);
}
3.从键盘输入100个学生的成绩,统计最高分、最低分和平均分
#include
voidmain()
{
floata[100];
floatmax,min,sum=0.0,pj;
inti;
for(i=0;i<100;i++)
{
scanf("%f",&a[i]);
}
max=min=a[0];
for(intj=0;j<100;j++)
{
if(a[j]>max)
max=a[j];
if(a[j]min=a[j];
sum+=a[i];//sum=sum+a[i]
pj=sum/100;
}
for(i=0;i<100;i++)
sum+=a[i];//sum=sum+a[i]
pj=sum/100;
printf("最高分%.2f最低分%.2f平均分%.2f\n",max,min,pj);
}
4.输入三个数,按从小到大排序输出。
(要求:
交换两个数用函数实现)
#include
main()
{inta,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("%d%d%d\n",a,b,c);
}
5..水仙花数
#include
main()
{
inti=0,j=0,k=0,n=0;
printf("水仙花数为:
");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10%10;
k=n%10;
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%5d\n",n);
}
}
二维数组应用举例3
//找最大值
#include
voidmain()
{
inta[3][4]={{101,67,78,89},{102,60,70,40},{103,35,55,70}};
inti,j;
intmax,row,col;
max=a[0][1];
row=0;//行
col=1;//列
for(i=0;i<3;i++)
for(j=1;j<4;j++)
if(max{
max=a[i][j];
row=i;
col=j;
}
printf("%d学生的成绩最高%d\n",a[row][0],a[row][col]);
二维数组应用举例4
//找特定值
#include
voidmain()
{
inta[3][4]={{101,67,78,89},{102,60,70,40},{103,35,55,70}};
inti,j;
intkey,row,col;
intflag=0;//未找,标记为0
printf("找谁:
");
scanf("%d",&key);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(key==a[i][j])
{
row=i;
col=j;
flag=1;//找到,标记为1
}
if(flag)
printf("找到在第%d行第%d列\n",row,col);
else
printf("无此数据\n");
}
//成绩管理
#include
voidmain()
{
inta[3][4]={{101,67,78,89},{102,60,70,40},{103,35,55,70}};
inti,j;
intbks[3]={0};
for(i=0;i<3;i++)
for(j=1;j<4;j++)
if(a[i][j]<60)
bks[i]++;
printf("\t补考名单\n\n");
printf("\t学号门数\n");
for(i=0;i<3;i++)
if(bks[i]>0)
printf("%12d%d\n",a[i][0],bks[i]);
printf("\n");
}
//矩阵的转置
#include
voidmain()
{
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
inti,j;
intb[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];//转置
printf("矩阵A=\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%5d",a[i][j];//输出矩阵A
printf(“的转置矩阵B=\n”);
}
printf("的转置矩阵B=\n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%5d",b[i][j];//输出矩阵B
printf(“\n”);
}
存钱
#include
#include
floatv[2]={0.028,0.035};//利率
floatf0(floatb,intn)//活期存款
{
floats;
s=b*(1+n*v[0]);//本利和
returns;
}
floatf1(floatb,intn)//一年定期存款
{
floats;
s=b*pow(1+v[1],n);//本利和
returns;
}
voidmain()
{
floatbj;//本金
floatss;//到期本利和
intk;//期数(按年计算)
intch;//存款方式
printf("请选择存款方式(1--活期,2--一年定期):
");
scanf("%d",&ch);
printf("请输入存款金额:
");
scanf("%f",&bj);
printf("请输入存款期数:
");
scanf("%d",&k);
if(ch==1)
ss=f0(bj,k);
elseif(ch==2)
ss=f1(bj,k);
else
ss=0;
printf("到期本利和=%4.2f\n",ss);
}
//课题:
求1+2+3+。
。
。
。
+n的值
//其中n由键盘输入
#include
intsum(intk)
{
inti;
ints=0;
for(i=0;i<=k;i++)
s=s+i;
returns;//请写出函数体
}
voidmain()
{
intn;
intss;
printf("n=");
scanf("%d",&n);
ss=sum(n);
printf("1+2+3+...+%d=%d\n",n,ss);
}
//课题:
计算期评成绩
//期评=平时×30%+实验×20%+期考×50%
#include
#defineN50
voidsv(inta[][5],intk)
{
inti;
for(i=0;ia[i][4]=a[i][1]*0.3+a[i][2]*0.2+a[i][3]*0.5;//计算期评成绩
}
voidmain()
{
intstu[N][5]={{101,90,86,56},{102,95,80,45},{103,88,90,80}};//3个学生
inti,j;
sv(stu,3);
printf("\t\t成绩表\n");
printf("学号平时实验期考期评\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
printf("%7d",stu[i][j]);
printf("\n");
}
}
//课题:
计算期评成绩
//期评=平时×30%+实验×20%+期考×50%
#include
#defineN50
voidsv(inta[][5],intk)
{
inti;
for(i=0;ia[i][4]=a[i][1]*0.3+a