下半年C上机模拟题.docx
- 文档编号:11559603
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:18
- 大小:19.87KB
下半年C上机模拟题.docx
《下半年C上机模拟题.docx》由会员分享,可在线阅读,更多相关《下半年C上机模拟题.docx(18页珍藏版)》请在冰豆网上搜索。
下半年C上机模拟题
模拟试卷一
改错题
输出大于100的前10个素数,如101,103,107,……等。
#include
voidmain()
{inti,j,flag,n;
n=0;
i=101;
while(n<=10)/*$ERROR1$*/n<10
{flag=0;
for(j=2;j
if(i/j==0)/*$ERROR2$*/i%j==0
{flag=1;break;}
if(flag==1)/*$ERROR3$*/flag==0
{n=n+1;
printf("%d\n",i);}
i=i+2;
}
}
程序填空题
输出以下图形(数字之间没有和,每行第一个数字前也没有空格)。
0001000
0011100
0111110
1111111
0111110
0011100
0001000
#include
#include
voidmain()
{inti,j;
for(i=-3;i<=___;i++)/*$BLANK1$*/3
{j=1;
while(j<=abs(i))
{printf("0");j++;}
j=1;
while(j___7-2*abs(i))/*$BLANK2$*/<=
{printf("1");j++;}
j=1;
while(j<=abs(i))
{printf("0");
___;/*$BLANK3$*/j++
}
printf("\n");
}
}
程序设计题
计算700到2000之间所有能被9整除或能被13整除的自然数之和。
#include
voidPRINT(longs)
{FILE*out;
printf("s=%ld\n",s);
if((out=fopen("C:
\\24000101\\RESULT.DAT","w+"))!
=NULL)
fprintf(out,"s=%ld",s);
fclose(out);
}
voidmain()
{longs=0;
inti;
for(i=700;i<=2000;i++)
if(i%9==0||i%13==0)
s=s+i;
PRINT(s);}
模拟试卷二
改错题
计算200到500之间满足下列条件的数之和。
(1)这个数的三个数位上的数字积为42;
(2)这个数的三个数位上的数字和为12
#include
voidmain()
{inti,g,s,b,sum;
sum=1;/*$ERROR1$*/sum=0;
for(i=200;i<=500;i++)
{g=i/10;/*$ERROR2$*/g=i%10;
s=i/10%10;
b=i/100;
if(g*s*b==42||g+s+b==12)/*$ERROR3$*/&&
{printf("%5d",i);
sum=sum+i;}
}
printf("\nsum=%d\n",sum);
}
程序填空题
下列程序输出200到300之间的全部素数的和。
#include
voidmain()
{inti,j,f,s;
s=__;/*$BLANK1$*/0
for(i=201;i<300;i+=2)
{f=1;
for(j=2;j<=i/2;j++)
if(i%j___)/*$BLANK2$*/==0
{f=0;break;}
if(f___)/*$BLANK3$*/==1
s+=i;}
printf("s=%d\n",s);
}
程序设计题
计算并输出Fibonacci数列中小于30000的最大一项。
#include
voidPRINT(longf)
{FILE*out;
printf("f=%ld\n",f);
if((out=fopen("C:
\\24000102\\RESULT.DAT","w+"))!
=NULL)
fprintf(out,"f=%ldd",f);
fclose(out);}
voidmain()
{longf,f1=1,f2=1;
do{f=f1+f2;
f1=f2;
f2=f;
}while(f<30000);
f=f1;
PRINT(f);
}
模拟试卷三
改错题
有N个数据存放在a数组中,请求出这N个数据的最大数(假设只有唯一一个),并与数组中第一个位置上的数进行交换。
#defineN12
#include
voidmain()
{inta[N]={3,6,-5,15,7,-23,67,10,-34,24,-2,78};
intmax,i,t;
max=a[0];/*$ERROR1$*/max=0;
for(i=1;i {if(a[i]>a[max]) max=a[i];/*$ERROR2$*/max=i; } a[0]=t;/*$ERROR3$*/t=a[0]; a[0]=a[max]; a[max]=t; for(i=0;i printf("%5d",a[i]); printf("\n"); } 程序填空题 以下程序判断输入的字符串是否“回文”。 #include #include voidmain() {chars[100]; intleft,right,middle,lenth; printf("Pleaseinputastring: "); gets(s); lenth=strlen(s); left=____;/*$BLANK1$*/0 middle=lenth/2; while(left<=middle) {right=lenth-1-left; if(s[left]____s[right])/*$BLANK2$*/== left++; else break; } if(left____middle)/*$BLANK3$*/<= printf("No\n"); else printf("Yes\n"); } 程序设计题 求s=1+(2*2)+(3*3*3)+(4*4*4*4)+……+(9*9*9*9*9*9*9*9*9) #include voidPRINT(longs) {FILE*out; printf("s=%ld\n",s); if((out=fopen("C: \\24000103\\RESULT.DAT","w+"))! =NULL) fprintf(out,"s=%ld.ld",s); fclose(out);} voidmain() {longs=0,s1; inti,j; for(i=1;i<=9;i++) {for(s1=j=1;j<=i;j++)s1=s1*i; s=s+s1; } PRINT(s);} 模拟试卷四 改错题 从键盘输入n(设n小于或等于50的正整数)个成绩,将成绩小于60的保存在数组aa中,如果存在满足条件的成绩,则输出这些成绩,否则输出Allover60! 说明: 每行输出10个数据。 #include voidmain() {inti,n,m,count; intaa[50]; count=1;/*$ERROR1$*/count=0; printf("pleaseinputn: "); scanf("%d",&n); printf("pleaseinputscore: "); for(i=0;i {scanf("%d",&m); if(m<60) {aa[count]=m; n++;/*$ERROR2$*/count++; } } if(count>0) {printf("\n*************number*************"); for(i=0;i {if(i%10==0)printf("\n"); printf("%d",aa);/*$ERROR3$*/printf("%d",aa[i]); } printf("\n"); } elseprintf("\nAllover60! \n"); } 程序填空题 根据给定的数组a,求出其中值最大的那个元素(假设只有唯一一个),以及它所在数组的行村和列标。 #include voidmain() {inti,j,row,col; inta[3][4]={{3,5,1,8},{6,4,11,7},{9,3,10,2}}; row=col=0; for(i=0;i<___;i++)/*$BLANK1$*/3 for(j=0;j<4;j++) if(a[row][col]<______)/*$BLANK2$*/a[i][j] {row=i;col=j;} printf("max=%d,row=%d,col=%d\n",______,row,col);/*$BLANK3$*/a[row][col] } 程序设计题 某果农有一车苹果,第一天卖掉三分之二后吃了两个,第二天卖掉了剩下的三分二后又吃掉了两个,第三天到第七天都如此,到第八天一看只剩了五个苹果,求此车共装有多少个苹果? 要求用循环实现。 #include voidPRINT(ints) {FILE*out; printf("s=%d\n",s); if((out=fopen("C: \\24000104\\RESULT.DAT","w+"))! =NULL) fprintf(out,"s=%d",s); fclose(out); } voidmain() {ints=5,i; for(i=7;i>=1;i--) s=(s+2)*3; PRINT(s); } 模拟试卷五 改错题 输入年/月/日,输出该日期是该年的第几天,如输入2013/6/22,则输出173。 #include voidmain() {intt[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; inty,m,d,i,date; date=1;/*$ERROR1$*/date=0; printf("pleaseinputyear/month/day: "); scanf("%d/%d/%d",&y,&m,&d); if(y%4==0&&y%100! =0||y%400==0) t[3]=29;/*$ERROR2$*/t[2]=29; t[0]=d; for(i=0;i date=t[i];/*$ERROR3$*/date+=t[i]; printf("date=%d\n",date); } 程序填空题 定义求n! 的递归函数f(),并调用函数f()求1! +2! +3! +4! +5! #include longf(intn) {if(n==1||n==0) return (1); else return(n*f(___));/*$BLANK1$*/n-1 } voidmain() {inti; longs; s=___;/*$BLANK2$*/0 for(i=1;i<=5;i++) s+=f(i); printf("1! +2! +3! +4! +5! =%ld\n",___);/*$BLANK3$*/s } 程序设计题 求满足下列条件的三位数之和,条件如下: (1)各位数字只能从5、6、7、8中选; (2)各位数字互不相同。 #include voidPRINT(longs) {FILE*out; printf("s=%ld\n",s); if((out=fopen("C: \\24000105\\RESULT.DAT","w+"))! =NULL) fprintf(out,"s=%ld",s); fclose(out); } voidmain() {longs=0; inta,b,c; for(a=5;a<=8;a++) for(b=5;b<=8;b++) for(c=5;c<=8;c++) if(a==b||a==c||b==c)continue; elses=s+100*a+10*b+c; PRINT(s); } 模拟试卷六 改错题 下面程序通过指针操作,将由八进制数字组成的字符串“77777”转换为对应的十进制整数。 #include voidmain() {charstr[6]="77777",*p; intn,t; n=1;/*$ERROR1$*/n=0; p=str[0];/*$ERROR2$*/p=str while(*p! =0) {t=*p-'0'; n=n*8+t; p--;/*$ERROR3$*/p++; } printf("\n%sisconveredtointegernumber: %d\n",str,n); } 程序填空题 下列程序中函数的功能是: 删除字符串str中所有的前导和尾部空格字符。 #include voidtrim(chars[]) {inti,j,left,right; right=strlen(s); while(s[right-1]=='')_____;/*$BLANK1$*/right-- s[right]='\0'; left=0; while(s[left]=='')left++; for(i=0,j=0;s[i+left]! ='\0';i++) s[j++]=s[i+left]; s[j]=_____;/*$BLANK2$*/‘\0’ } voidmain() {charstr[81]; printf("Inputastring: \n"); gets(______);/*$BLANK3$*/str trim(str); puts(str); } 程序设计题 设有正整数a和b,其中: (1)a<50,b<50; (2)a+b*b等于1564;(3)a*a+b*b等于3370。 求满足条件的a和b的值(说明: a和b的值唯一) #include voidPRINT(inta,intb) {FILE*out; printf("a=%d,b=%d\n",a,b); if((out=fopen("K: \\24000106\\RESULT.DAT","w+"))! =NULL) fprintf(out,"a=%d,b=%d",a,b); fclose(out); } voidmain() {inta,b; for(b=1;b<50;b++) {a=1564-b*b; if(a<50&&a>0&&a*a+b*b==3370)break;} PRINT(a,b); } 模拟试卷七 改错题 Fun函数的功能是: 根据形参n,计算s=1+1/2+1/3+1/4+……+1/n的值,在主函数中输入一个正整数n,通过调用fun函数,求得计算结果。 #include doublefun(intn) {inti; doubles; s=1.0; for(i=2;i<=n;i++) s+=1.0/i; return;/*$ERROR1$*/returns; } voidmain() {intn; doubleresult; printf("\npleaseenter1integernumbers: \n"); scanf("%d",n);/*$ERROR2$*/&n result=fun(&n);/*$ERROR3$*/n printf("\ntheresultis%lf\n",result); } 程序填空题 下面程序的功能是输出杨辉三角形的前10行,请填空。 #include #defineN10 voidyh(inta[][N]) {intj,k; for(j=0;j {a[j][0]=1; a[j][j]=___;/*$BLANK1$*/1 } for(j=2;j for(k=1;k a[j][k]=____+a[j-1][k];/*$BLANK2$*/a[j-1][k-1] } voidmain() {inta[N][N],i,j; ___;/*$BLANK3$*/yh(a); for(i=0;i {for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } } 程序设计题 已知数列F(n): 当n=1时F (1)=1,当n=2时F (2)=2,当n>2时F(n)=2F(n-2)+3F(n-1),求该数列的第10项即F(10)的值,要求用循环实现。 #include voidPRINT(longf) {FILE*out; printf("F(10)=%ld\n",f); if((out=fopen("K: \\24000107\\RESULT.DAT","w+"))! =NULL) fprintf(out,"F(10)=%ld",f); fclose(out); } voidmain() {longf,f1,f2; inti; f1=1; f2=2; for(i=3;i<=10;i++) {f=3*f2+2*f1; f1=f2; f2=f;} PRINT(f); } 模拟试卷八 改错题 下面程序的功能是: 第一个数是2,从第二个数起每个数都是它前一项加3,求第n个数是多少(n从键盘输入,用递归实现) #include longfun(intn) {if(n=1)/*$ERROR1$*/if(n==1) return2; else returnfun()+3;/*$ERROR2$*/returnfun(n-1)+3; } voidmain() {longm; intn; scanf("%d",n);/*$ERROR3$*/scanf("%d",&n); if(n>0) {m=fun(n); printf("%ld\n",m); } } 程序填空题 从键盘输入两个正整数,输出它们的最大公约数。 #include intgcd(intm,intn) {intr,t; if(m {t=m; m=n; ___;/*$BLANK1$*/n=t } while(n>0) {r=m%n; m=n; n=r;} return(___);/*$BLANK2$*/m } voidmain() {intm,n,result; printf("Peaseinputtwonumber: \n"); scanf("%d%d",___);/*$BLANK3$*/&m,&n result=gcd(m,n); printf("result=%d\n",result); } 程序设计题 统计2013到20000之间素数的个数。 #include voidPRINT(intcount) {FILE*out; printf("count=%d\n",count); if((out=fopen("C: \\24000108\\RESULT.DAT","w+"))! =NULL) fprintf(out,"count=%dg",count); fclose(out); } voidmain() {inti,j,count; count=0; for(i=2013;i<20000;i+=2) {for(j=2;j<=i/2;j++) if(i%j==0)break; if(j>i/2)count++; } PRINT(count); } 模拟试卷九 改错题 在主函数中输入一个正整数n,并通过调用fac()函数,求得n的阶乘,在主函数中输出n阶乘的值。 #include longfac(intn) {inti; longs; s=1; i=0;/*$ERROR1$*/i=1; while(i {s=s*i; i++;} returns; } voidmain() {intn; longresult; printf("Entern: "); scanf("%d",n);/*$ERROR3$*/scanf("%d",&n); result=fac(n); printf("n! =%ld\n",result); } 程序填空题 小王去上车牌号,车管所同志告知车牌号必须满足: (1)车牌号前两位必须是大写字母; (2)车牌号后三位必须是数字;小王只喜欢字符W,不喜欢数字4,同时小王希望后三位数字之和正好等于10,请输出小王所有可能上的车牌号。 #include voidmain() {inti,j,k; for(i=0;i<=____;i++)/*$BLANK
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 下半年 上机 模拟