C语言程序设测试二及答案.docx
- 文档编号:16016305
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:19
- 大小:20.93KB
C语言程序设测试二及答案.docx
《C语言程序设测试二及答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设测试二及答案.docx(19页珍藏版)》请在冰点文库上搜索。
C语言程序设测试二及答案
C语言程序设计
期末考试试题及其答案
一、单项选择题(本大题共20题,每题1分,共20分)
1、一个C程序的执行是从(A)。
A本程序的main函数开始,到main函数结束
B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束
D本程序文件的第一个函数开始,到本程序main函数结束
2、以下不正确的C语言标识符是(D)
A、ABCB、abcC、a_bcD、ab.c
3、一个C语言程序是由(B)
A、一个主程序和若干子程序组成
B、函数组成
C、若干过程组成
D、若干子程序组成
4、以下能对一维数组a进行初始化的语句是:
(
A.inta[5]=(0,1,2,3,4,)B.inta(5)={}
C.inta[3]={0,1,2}D.inta{5}={10*1}
C
)
5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为(C)
A、intB、floatC、doubleD、不确定
6、C语言中函数返回值的类型是由(A
)决定的.
A、函数定义时指定的类型
C、调用该函数时的实参的数据类型
B、return语句中的表达式类型D、形参的数据类型
7、有如下程序,输入数据:
12345M678<cR>后(
#include
main(){
intx;
floaty;
scanf("%3d%f",&x,&y);
}
A、12345B、123C、45D、345
8、设有以下说明语句:
typedefstructstu
{inta;
floatb;
}stutype;
则下面叙述中错误的是(D)。
A、struct是结构类型的关键字
B、structstu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
9、若有说明:
intn=2,*p=&n,*q=p,则以下非法的赋值语句是:
( D)A、p=qB、*p=*qC、n=*qD、p=n
10、已知charx[]="hello",y[]={'h','e','a','b','e'};,则关于两个数组长度的正确描述是(B).
A、相同
B、x大于yC、x小于yD、以上答案都不对
11、下列代码输出的是(C)
main()
{
inta[5]={1,2,3,4,5};
int*ptr=(int*)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
A、2,3B、2,4C、2,5D、输出错误
12、有以下程序
main()
{inta=1,b=3,c=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是(C)
A、1B、2C、3D、4 13、有以下程序段
#include
intmain()
{intx[]={10,20,30};
int*px=x;
printf("%d,",++*px);printf("%d,",*px);
px=x;
printf("%d,",(*px)++);printf("%d,",*px);
px=x;
printf("%d,",*px++);printf("%d,",*px);
px=x;
printf("%d,",*++px);printf("%d\n",*px);
return0;
}
程序运行后的输出结果是(A)
A、11,11,11,12,12,20,20,20B、20,10,11,10,11,10,11,10C、11,11,11,12,12,13,20,20D、20,10,11,20,11,12,20,20
14、如果在C程序中有main(int argc,char *argv[]),那么(中的参数个数。
D )是指命令行
A、argv B、argv[] C、argc,argv[] D、argc 15、以下关于typedef的叙述不的是( B )
A. 用typedef可以定义各种类型名,但不能用来定义变量B. 用typedef可以增加新类型
C. 用typedef只是将已存在的类型用一个新的名称来代表D. 用typedef便于程序的通用
16、下面程序的运行结果是(C)
#include
main()
{intnum=0;
while(num<=2)
{num++;
printf(“%d,num);
}
}
A、1
B、12
C、123
D、1234
17、下面代码能通过编译的是:
(A)
A)intmain()
{
inta[3]={1,2,3};
int*b[3]={&a[1],&a[2],&a[3]};
int**p=b;
return0;
}
B)intmain()
{
inta[3]={1,2,3};
int*b[3]={a[1],a[2],a[3]};
int**p=b;
return0;
}
C)intmain()
{
inta[3]={1,2,3};
int*b[3]={&a[1],&a[2],&a[3]};
int*p=b;
return0;
}
D)intmain()
{
inta[3]={1,2,3};
int*b[3]={&a[1],&a[2],&a[3]};
int*p=&b;
return0;
}
18、若有以下程序:
voidmain()
{
char*a[3]={"I","love","China"};
char**ptr=a;
printf("%c%s",*(*(a+1)+1),*(ptr+1));
}
这段程序的输出是(C)
A、Il
B、oo
C、olove
A、Ilove
19、以下对二维数组a的正确说明是(C)
A、inta[3][];B、floata(3,4);
C、doublea[1][4];D、floata(3)(4);
20、若二维数组a有m列,则在a[i][j]前面的元素个数为(B) A、j*m+i
B、i*m+j
C、i*m+j-1
D、i*m+j+1
21、下面选项属于函数指针的是:
(D)
A、(int*)p(int,int)B、int*p(int,int)C、两者都是D、两者都不是 二、填空题(本大题共10空,每空2分,共20分)
1、输入一个字符,判断该字符是数字、字母、空格还是其他字符。
main()
{charch;
ch=getchar();
if(ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’printf("ItisanEnglishcharacter\n");
)
elseif(ch>=’0’&&ch<=’9’printf("Itisadigitcharacter\n");elseif(ch==‘’)printf("Itisaspacecharacter\n");
else
printf("Itisothercharacter\n");}
)
2、若输入字符串:
abcde<回车>,则以下while循环体将执行__0___次.while((ch=getchar())=='e')printf("*");
3、若有定义:
chars[]="china";则C编译系统为数组s开辟___6__个字节的内存单元.
4、下列程序运行后的输出结果是_______
*
**
***
****
______
#include
main()
{
inti,j;
for(i=4;i>=1;i--)
{printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}
}
5、若有定义:
inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是____0_______a[2][1]得到的初值是________6________
6、在C语言中,二维数组元素的内存中的存放顺序是_按行主顺序存放_ 三、程序分析题(本大题共4题,每题2分,共8分,写出程序执行结果) 1、#include
main()
{inta,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=7){n=n*a;s=s+n;++count;}
printf(“s=%d”,s);
}
功能:
求S=0+2+4+8+16+32+64+128和。
输出结果:
s=254
2、#include
main()
{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)sum=sum+a[i][j];
printf(“sum=%d\n”,sum);
}
功能:
出矩形阵a的主对角线上的元素之和。
输出结果:
27
3、#include
main()
{chargrade=’C’;
switch(grade)
{
case‘A’:
printf(“90-100\n”);
case‘B’:
printf(“80-90\n”);
case‘C’:
printf(“70-80\n”);
case‘D’:
printf(“60-70\n”);break;
case‘E’:
printf(“<60\n”);
default:
printf(“error!
\n”);
}
}
注:
L十进制为76
70-80
60-70
4、#include
intm[3][3]={{1},{2},{3}};
intn[3][3]={1,2,3};
main()
{printf(“%d,”,m[1][0]+n[0][0]);
printf(“%d\n”,m[0][1]+n[1][0]);
}
3,0
四、编程题(本大题共10题,每题6分,共60分)
1、编写摄氏温度、华氏温度转换程序。
要求:
从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。
转换公式:
F=(C+32)×9/5。
#include"stdafx.h"
#include
intmain()
{
floatc,f;
printf("inputc:
");
scanf("%f",&c);
f=(c+32.0)*9.0/5.0;
printf("F=%.2f\n",f);
system("pause");
}
2、试编程判断输入的正整数是否既是5又是7的正倍数。
若是,则输出yes;否则输出no。
#include"stdafx.h"
#include
intmain()
{
intx;
scanf("%d",&x);
if(x%5==0&&x%7==0)
printf("yes");
else
printf("no");
system("pause");
}
3、判断数m是否为素数(只能被1和它本身整除的整数)?
#include"stdafx.h"
#include
intmain()
{
boolisPrime(unsignedlong);
intm;
printf("inputm:
");
scanf("%d",&m);
if(isPrime(m))
printf("misaprimenumber!
\n");
else
printf("misnotaprimenumber!
\n");
system("pause");
}
boolisPrime(unsignedlongn){
if(n<=3){
returnn>1;
}elseif(n%2==0||n%3==0){
returnfalse;
}else{
for(unsignedshorti=5;i*i<=n;i+=6){
if(n%i==0||n%(i+2)==0){
returnfalse;
}
}
returntrue;
}
}
4、对15个数进行排序,按从小到大的顺序输出。
#include"stdafx.h"
#include
intmain()
{
inti,j,a[15],t;
printf("input15numbers:
\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
for(j=0;j<14;j++)
for(i=0;i<14-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<15;i++)
printf("%5d",a[i]);
printf("\n");
system("pause");
}
5、(*)编程输出如下图形(不能仅用printf语句):
*
***
*****
*******
*********
#include"stdafx.h"
#include
intmain()
{
inti,k,j;
for(i=0;i<=4;i++)
{for(j=0;j<4-i;j++)
printf("");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");}
system("pause");
}
6、请编程序将“China”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母”A”后面第4个字母是”E”,用”E”,用E代替A,因此,”China”应译为”Glmre”.请编写一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’’h’’i’’n’’a’,经过
运算,使c1,c2,c3,c4,c5分别变成’G’’i’’m’’r’’e’.分别用
putchar函数和printf函数输出这5个字符。
Printf
#include"stdafx.h"
#include
intmain()
{
charc1='C',c2='h',c3='i',c4='n',c5='a';
printf("%c%c%c%c%c",c1+4,c2+4,c3+4,c4+4,c5+4);
system("pause");
}
Putchar
#include"stdafx.h"
#include
intmain()
{
charc1='C',c2='h',c3='i',c4='n',c5='a';
putchar(c1+4);
putchar(c2+4);
putchar(c3+4);
putchar(c4+4);
putchar(c5+4);
system("pause");
}
7、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少
#include"stdafx.h"
#include
intmain()
{
intcount=0;
for(inti=1;i<5;i++)
for(intj=1;j<5;j++)
for(intn=1;n<5;n++)
if(i!
=j&&i!
=n&&j!
=n)
{
printf("%d%d%d%\n",i,j,n);
count++;
}
printf("一共有%d\n",count);
system("pause");
}
8、请编写程序,输出以下扬辉三角形(要求输出10行)。
第一种
#include"stdafx.h"
#include
#defineN10
intmain()
{
inti,j;
inta[N][N];
for(i=1;i { a[i][1]=1;//每行第一个输出1 a[i][i]=1;//每行末尾输出1 } for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];//第i行j列的数等于他低下一行 的相邻左右数的和。 for(i=1;i { for(j=1;j<=N-i-1;j++)printf("");//输出三角前面用空格填充for(j=1;j<=i;j++) printf("%4d",a[i][j]);//输出三角数值 printf("\n");//换行 } printf("\n"); system("pause"); } 第二种 #include"stdafx.h" #include #defineM10 #defineN10 intmain() { inta[M][N],i,j; for(i=0;i for(j=0;j<=i;j++) if(j==0||j==i) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i { for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } system("pause"); } 9、写一程序,要求用户在键盘上输入一个整数,并把每位数字转换为英文。 例如: 输入1024时,输出OneZeroTwoFour #include"stdafx.h" #include intmain() { longintn; intm,i=0,c[10]; scanf("%ld",&n); do {m=n%10; i++; c[i]=m; printf("%5d%5d%5d\n",i,m,c[i]); } while((n/=10)>0); while(i>=1) {i--; switch(c[i+1]) {case0: {printf("zero");printf("");break;} case1: {printf("one");printf("");break;} case2: {printf("two");printf("");break;} case3: {printf("three");printf("");break;} case4: {printf("four");printf("");break;} case5: {printf("five");printf("");break;} case6: {printf("six");printf("");break;} case7: {printf("seven");printf("");break;} case8: {printf("eight");printf("");break;} case9: {printf("nine");printf("");break;} default: printf("no");}} system("pause"); } 10、请编程,从键盘输入6名学生的5门成绩,分别统计每个学生的平均成绩。 (在主函数中输入输出,子函数求平均成绩) #include"stdafx.h" #include intmain() { doublepingjun(double,int); intr,c,i,j; doubletmp,sum[10]; r=6;//6students c=5;//5subjects for(i=1;i<=r;i++) { printf("请输入第%d个学生的所有成绩\n",i); for(sum[i]=0,j=0;j { scanf("%lf",&tmp); sum[i]+=tmp; } } for(i=1;i<=r;i++) printf("theaverageofstudent%dis: %0.3lf\n",i,pingjun(sum[i],c));system("pause"); return0; } doublepingjun(doublesum,intn) { sum=sum/n; returnsum; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 测试 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)