下半年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;iprintf("%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;idate=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;jfor(k=1;ka[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