C语言机考试题库及答案.docx
- 文档编号:25718974
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:27
- 大小:21.19KB
C语言机考试题库及答案.docx
《C语言机考试题库及答案.docx》由会员分享,可在线阅读,更多相关《C语言机考试题库及答案.docx(27页珍藏版)》请在冰豆网上搜索。
C语言机考试题库及答案
2012年C语言机试考试题目
注释:
/*$ERROR1$*/行有错误/*$BLANK1$*/空须填写
模拟一
1.题目:
[改错]在屏幕上输出以下图形(说明:
数字之间无空格)。
19
2288
程序如下:
#include
voidmain()
{
inti,j,k;
for(i=1;i<6;i++)
{
for(k=1;k<6-i;k++)
printf("");
for(k=1;k<=i;k++)
printf("%d",k);/*$ERROR1$*/
j=9;/*$ERROR2$*/
k=1;
while(k<=j)/*$ERROR3$*/
{
printf("%d",j);
k++;
}
printf("\n");
}
}
2.题目:
【程序填空】将长整型数S中每一位上为偶数的数码依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数位:
时,t中的数为:
8642.
程序如下:
#include
voidmain()
{
longs=,k,m=0,t=0;
while(s>0)
{
k=s%10;
if(_____)m=m*10+k;/*$BLANK1$*/
s=______;/*$BLANK2$*/
}
while(_____)/*$BLANK3$*/
{
t=t*10+m%10;
m=m/10;
}
printf("%ld\n",t);
}
3.题目:
【程序设计】有100匹马驮100但货,大马驮4但,中马驮3但,5匹小马驮1但。
问三种马各有几匹?
注意;、:
(1)大、中、小马都必须有;
(2)问题的解只有一种;(3)要求使用循环实现。
模拟二
4.题目【改错】判断从键盘输入的一个三位数是否是水仙花数。
若是输出“Yes.”,否则输出“No.”。
说明:
水仙花数是指各位数字的立方之和等于自身的三位数。
例如:
153是一个水仙花数,满足:
153=1*1*1+5*5*5+3*3*3
程序如下:
#include
voidmain()
{
intn,w1,w2,w3;;
printf("Pleaseinputanumber(100-999):
");
scanf("%d",n);/*$ERROR1$*/
if(n<100&&n>=1000)/*$ERROR2$*/
printf("Dataerror!
\n");
else
{
w1=n/10;/*$ERROR3$*/
w2=n/10%10;
w3=n/100;
if(w3*w3*w3+w2*w2*w2+w1*w1*w1==n)
printf("Yes.\n");
else
printf("No.\n");
}
}
5.题目【填空】
程序如下:
#include
voidmain()
{
inta[]={93,85,77,68,59,43,94,75,98},b[6]={0},i;
for(i=0;i<9;i++)
{
switch(_____)/*$BLANK1$*/
{
case10:
b[4]++;break;
case9:
b[3]++;break;
case8:
b[2]++;break;
case7:
b[1]++;break;
case6:
b[0]++;break;
______:
b[5]++;break;/*$BLANK2$*/
}
}
for(i=0;i<6;i++)
printf("%2d",______);/*$BLANK3$*/
printf("\n");
}
6.题目【程序设计】(三色球问题)
若一个口袋中放有12个球,其中有3个红色的,3个白色的和6个黑色的,从中任取8个球,求共有多少种不同的颜色搭配。
如:
2个白色球和6个黑色球;1个红色球、3个白色球和4个黑色球;3个红色球、2个白色球和3个黑色球;等都是满足条件的颜色搭配。
输出格式:
count=123
模拟三
7.题目【改错】计算大于100的前10个素数之和。
程序如下:
#include
voidmain()
{
inti,j,n,s;
n=0;
s=1;/*$ERROR1$*/
for(i=101;;i+=2)
{
for(j=2;j<=i/2;j++)
if(i%j==0)
{
continue;/*$ERROR2$*/
}
if(j>i/2)
{
s+=i;
n++;
if(n!
=10)/*$ERROR3$*/
break;
}
}
printf("s=%d\n",s);
}
8.题目【程序填空】计算并输出含有9个元素的数组中每相邻两个元素平均值的平方根之和,数组元素值由键盘输入(说明:
输入的值均为正数)。
例如,输入数组的9个元素依次为1、1.5、14、4、2、7、8、3.5、11,输出应为s=18..
程序如下:
#include
#include
voidmain()
{
inti;
floata[9],s;
for(i=0;i<=8;i++)
scanf("%f",_____);/*$BLANK1$*/
______;/*$BLANK2$*/
for(i=0;_____;i++)/*$BLANK3$*/
s=s+sqrt((a[i]+a[i+1])/2);
printf("s=%f\n",s);
}
9.题目【程序设计】已知序列2/1,3/2,5/3,8/5,….,编程计算该序列前20项之和。
说明:
(1)该序列从第二项起,每一项的分子是其前一项的分子与分母之和,分母是其前一项的分子;
(2)结果保留2位小数;
(3)要求使用循环实现。
输出格式:
s=12.34
模拟四
10.题目【改错】统计所有四位正整数中各个数位上的数字之和是9的个数。
如:
1008、1017、1026.。
。
。
。
。
是满足条件的数。
程序如下:
#include
voidmain()
{
inti,j,s,count;
count=1;/*$ERROR1$*/
for(i=1000;i<=9999;i++)
{
j=i;
s=0;
while(j>1)/*$ERROR2$*/
{
s=s+j/10;/*$ERROR3$*/
j=j/10;
}
if(s==9)count++;
}
printf("%d\n",count);
}
11.题目【程序填空】下列程序中fun的功能是:
找出100至999之间三位数字之和等于9的所有整数并统计其个数。
满足条件的整数放在s所指数组中,个数通过函数返回。
程序如下:
#include
intfun(ints[])
{
inta,b,c,i,n=0;
for(i=100;i<=999;i++)
{
a=______;/*$BLANK1$*/
b=i/10%10;
c=i%10;
if(a+b+c==9)
{
s[n]=i;
______;/*$BLANK2$*/
}
}
returnn;
}
voidmain()
{
ints[50],n,i;
n=fun(_____);/*$BLANK3$*/
for(i=0;i printf("%d",s[i]); printf("\n"); } 12.题目【程序设计】根据下式求s的值(要求使用循环实现): S=1-1/(1+2)+1/(1+2+3)-1/(1+2+3+4)+。 。 。 +1/(1+2+3+…+19)-1/(1+2+3+…+20) 输出格式: s=1.23456 模拟五 13.题目【改错】计算: 1+1/(2*2)+1/(3*3)+(4*4)+。 。 。 +1/(n*n)的值。 程序如下: #include voidmain() { doubles; inti,n; printf("\nPleaseinput1integernumber: \n"); scanf("%d",n);/*$ERROR1$*/ s=0.0;/*$ERROR2$*/ for(i=2;i<=n;i++) { s+=1.0/i*i;/*$ERROR3$*/ } printf("\nTheresultis%lf\n",s); } 14.题目【程序填空】下列程序中函数sum的功能是: 计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。 SN=2/1+3/2+4/3+….+(N+1)/N 例如,若q的值为6.0,则函数值为6. 程序如下: #include floatsum(floatq) { intN=1; floatSN=0; while(SN__q)/*$BLANK1$*/ { SN=SN+1.0*(N+1)/N; ____;/*$BLANK2$*/ } returnSN; } voidmain() { floatq; printf("Inputq: "); scanf("%f",&q); printf("%f\n",_____);/*$BLANK3$*/ } 15.题目【程序设计】根据下式求s的值。 S=3*3-1/3+4*4-1/4+5*5-1/5+…+39*39-1/39 说明: (1)结果保留两位小数; (2)要求使用循环实现。 模拟六 16.题目【改错】从键盘中输入n(设n小于或等于50)个成绩,将成绩小于60的保存在数组aa中。 如果存在满足条件的成绩,则输出这些成绩,否则输出“ALLover60“. 说明: 每行输出10个数据,每个数据站4列。 程序如下: #include voidmain() { inti,n,m,sum; intaa[50]; sum=1;/*$ERROR1$*/ scanf("%d",&n); for(i=0;i { scanf("%d",&m); if(m<60) { aa[sum]=m; n++;/*$ERROR2$*/ } } if(sum>0) { printf("\n*************number*************"); for(i=0;i { if(i%10==0)printf("\n"); printf("%4d",aa);/*$ERROR3$*/ } printf("\n"); } elseprintf("\nAllover60! \n"); } 17.题目【程序填空】如果某整数能够在它的平方数的最右边出现,则该数就是“同构数”。 例如: 5时同构数,因为5的平方数是25,5是25中右侧的数。 下列程序的功能是: 调用函数fun判断整数x(0 若是同构数输出1,否则输出0. 程序如下: #include intfun(intx) { inta,b; a=_____;/*$BLANK1$*/ if(x<=9) b=a%10; else b=a%100; if(____)/*$BLANK2$*/ return1; else return0; } voidmain() { intx; printf("Inputx: "); scanf("%d",&x); if(x>0&&x<100) printf("%d\n",______);/*$BLANK3$*/ else printf("Invalidnumber! \n"); } 18.题目【程序设计】求s=1+(2*2)+(3*3*3)+(4*4*4*4)+。 。 。 +(9*9*9*9*9*9*9*9*9)的值(要求使用循环实现) 输出格式: s= 模拟七 19.题目【改错】打印数字三角形。 输入一个1到9之间的自然数n,输出n行的数字三角形,输出时每个数据站四列。 例如当n=5时,打印以下图形: 1 23 456 78910 1112131415 程序如下: #include voidfun(intn) { inti,j,s; s=0;/*$ERROR1$*/ for(i=1;i<=n;i++) { j=1; while(j<=n)/*$ERROR2$*/ { printf("%-4d",s); s++; j++; } printf("\n"); } } voidmain() { intn; scanf("%d",n);/*$ERROR3$*/ fun(n); } 20.题目【程序填空】输入字符串s,统计字符串s中的字符有多少次出现在字符串t中。 例如,若输入字符串: “Ihaveagoodteacher! ”,则输出应该是: 7.(字符e,o,o,t,e,e,r) 程序如下: #include voidmain() { chars[81]; chart[]="Computer"; inti,j,n=0; printf("Pleaseinputastring: \n"); gets(_____);/*$BLANK1$*/ i=0; while(s[i]! =_____)/*$BLANK2$*/ { for(j=0;t[j]! ='\0';j++) if(s[i]==t[j]) { n++; break; } _____;/*$BLANK3$*/ } printf("%d\n",n); } 21.题目【程序设计】设有正整数a和b,其中: (1)a<50,b<50; (2)a+2*b等于121;(3)a*a+b*b等于3370.求满足条件的a和b的值(说明: a和b的值唯一)。 模拟八 22.题目【改错】以下程序实现了矩阵的输入、转置及输出。 矩阵的数据转置前和转置后均存储在数组a中。 程序如下: #include #defineN3 voidexchange(inta[N][N]) { inti,j,t; for(i=0;i { j=0; while(j { t=a[j][i]; a[j][i]=a[i][j]; a[i][j]=t; j++; } } } voidprintfArray(inta[N][N]) { inti,j; for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } voidmain() { inta[N][N],i,j; for(i=0;i for(j=0;j scanf("%d",a[i][j]);/*$ERROR2$*/ printf("Beforeexchange: \n"); printfArray(a); exchange(a[0][0]);/*$ERROR3$*/ printf("Afterexchange: \n"); printfArray(a); } 23.题目【程序填空】已知字符串s,从下标为begin开始,顺序取n个字符放在一个新串t中。 例如: 当s中的字符串为: “”,begin等于2,n等于3时,t中的字符串应为: “345”。 程序如下: #include #include voidmain() { chars[81]="",t[81]; inti,p,begin,n; p=0; scanf("%d%d",_________);/*$BLANK1$*/ for(i=begin;i<=______;i++)/*$BLANK2$*/ { t[p]=s[i]; p++; } _____='\0';/*$BLANK3$*/ printf("%s\n",t); } 24.题目【程序设计】计算2012以内最大的10个能被13或17整除的自然数之和(要求使用循环实现) 输出格式: sum=23456 模拟九 25.题目【改错】下面给定程序中,fun()函数的功能是: 判断字符串str中是否包含字符ch,如不包含则将其插入到字符串str的最后。 程序如下: #include #include voidfun(charstr,charch)/*$ERROR1$*/ {char*s=str; while(*s! ='\0'&&*s! =ch) s++; if(*s=='\0') { *s=ch; *(s+1)='\n';/*$ERROR2$*/ } } voidmain() { charstr[81],ch; printf("\nPleaseenterastring: \n"); gets(str); printf("\nPleaseenterthecharactertosearch: "); ch=getchar(); fun(str[0],ch);/*$ERROR3$*/ printf("\nTheresultis%s\n",str); } 26.题目【程序填空】读入一行英文文本,将其中每一个单词的第一个字母改成小写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。 例如,若输入: IAmAStudentToTakeTheExamination. 则应输出: iamastudenttotaketheexamination. 程序如下: #include voidmain() { chars[81],*ch; intflag=1; printf("PleaseInputastring: \n"); gets(s); ch=____;/*$BLANK1$*/ while(*ch! ='\0') { if(*ch=='')flag=1; else { if(flag==____&&*ch>='A'&&*ch<='Z')/*$BLANK2$*/ *ch=*ch+32; flag=0; } _____;/*$BLANK3$*/ } printf("%s\n",s); } 27.题目【程序审计】(3n+1问题) 一个正整数n,若其为奇数,则变换成3*n;若其为偶数,则变换成n/2.经过若干次变换,能变成1.如3->10->5->16->8->4->2->1.计算2345至少经过多少次变换,才能变成1(要求使用循环实现) 输出格式: count=2345 C语言机试题答案 试卷1: 改错: 1printf(“%d”,i); 2j=10-I; 3while(k<=i) 填空: 1.k%2==0 2.s/10 3.m>0 程序: 法一: inta,b,c; for(a=1;a<=25;a++) for(b=1;b<=33;b++) for(c=5;c<=100: c=c+5) if(a*4+b*3+c/5==100&&a+b+c==100) 法二: inta,b,c; For(a=1;a<=25;a++) For(b=5-a%5;b<=33;b+=5) If(c=100-a-b,a*4+b*3+c/5==100) 试卷2: 改错: 1.scanf(“%d”,&n); 2.if(n<100‖n>=1000) 3.w1=n%10; 填空: 1.a[i]/10 2.default 3.b[i] 程序: intr,w,b; Intn=0; for(r=0;r<=3: r++) for(w=0;w<=3;w++) for(b=0;b<=6;b++) if(r+b+w==8)n++; 试卷3 改错: 1.s=0; 2.break; 3.if(n==10) 填空: 1.&a[i] 2.s=0 3.i<8或i<7 程序: doubles=0; Inti; Longp,q; P=2;q=1; For(i=1;i<=20;i++) { S+=1.0*p/q; p=p+q; q=p-q; } 试卷4: 改错: 1.count=0; 2.while(j>0) 3.s=s+j%10; 填空: 1.i/1000 2.n++ 3.s 程序: 法一: doubles=0; inti,j,h,flag=1; for(i=1;i<=20;i++) { h=0; for(j=1;j<=i;j++) h=h+i; s=s+1.0/h*flag; flag=-flag; } 法二: doubles=0; inti,flag=1; for(i=1;i<=20;i++) { S+=2.0/i/(i+1); flag=-flag; } 试卷5: 改错: 1.scanf(“%d”,&n); 2.s=1; 3.s+=1.0/(i*i); 填空: 1.<= 2.N++或++N 3.Sum(q) 程序: inti; doubles=0; for(i=3;i<=39;i++) s=s+i*i-1.0/i; 试卷6: 改错: 1.sum=0; 2.sum++; 3.printf(“%d”,aa[i]); 填空: 1.x*x 2.x==b 3.fun(x) 程序: longs=0,t=1; inti,j; for(i=1;j<=9;i++) { t=1; for(j=1;j<=i;j++) t*=i; s+=t; } 试卷7: 改错: 1.n=1; 2.while
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试 题库 答案