程序填空复习DOC.docx
《程序填空复习DOC.docx》由会员分享,可在线阅读,更多相关《程序填空复习DOC.docx(20页珍藏版)》请在冰豆网上搜索。
程序填空复习DOC
试卷编号:
8840
所属语言:
C语言
试卷方案:
C-程序填空
试卷总分:
100分
共有题型:
1种
一、程序填空共10题(共计100分)
第1题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
编程求某年第n天的日期。
用数组表示月天数。
-------------------------------------------------------*/
#include
#include
main()
{
inty,m,f,n;
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("y,n=");
scanf("%d,%d",&y,&n);
/***********SPACE***********/
f=y%4==0&&y%100!
=0【?
】y%400==0;
/***********SPACE***********/
a[1]【?
】f;
if(n<1||n>365+f)
{
printf("error!
\n");exit(0);
}
/***********SPACE***********/
for(m=1;n【?
】a[m-1];n-=a[m-1],m++);
printf("y=%d,m=%d,d=%d\n",y,m,n);
}
答案:
=======(答案1)=======
||
=======(答案2)=======
+=
=========或=========
=a+
=======(答案3)=======
>
第2题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
下面的程序是求1!
+3!
+5!
+……+n!
的和。
-------------------------------------------------------*/
#include
main()
{
longintf,s;
inti,j,n;
/***********SPACE***********/
【?
】;
scanf("%d",&n);
/***********SPACE***********/
for(i=1;i<=n;【?
】)
{
f=1;
/***********SPACE***********/
for(j=1;【?
】;j++)
/***********SPACE***********/
【?
】;
s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}
答案:
=======(答案1)=======
s=0
=======(答案2)=======
i+=2
=========或=========
i=i+2
=========或=========
i++,i++
=======(答案3)=======
j<=i
=========或=========
i>=j
=========或=========
j
=========或=========
i+1>j
=======(答案4)=======
f=f*j
第3题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二
个小孩2块,第三个小孩8块,第四个小孩22块,第五个
小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩
6块,第九个小孩14块,第十个小孩20块。
然后所有的小孩
同时将自己手中的糖分一半给左边的小孩;糖块数为奇数的人
可向老师要一块。
问经过这样几次调整后大家手中的糖的块数
都一样?
每人各有多少块糖?
-------------------------------------------------------*/
#include
main()
{
inti,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20};
/***********SPACE***********/
while(【?
】)
{
for(i=1;i<=10;i++)
a[i-1]=a[i-1]/2+a[i]/2;
a[10]=a[10]/2+a[0];
for(i=1;i<=10;i++)
/***********SPACE***********/
if(【?
】)a[i]++;
for(i=1;i<10;i++)
/***********SPACE***********/
if(a[i]!
=a[i+1])【?
】;
if(i==10)
break;
else
{
a[0]=0;
count++;
}
}
printf("count=%dnumber=%d\n",count,a[1]);
}
答案:
=======(答案1)=======
1
=======(答案2)=======
a[i]%2==1
=======(答案3)=======
break
第4题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入某年某月某日,判断这一天是这一年的第几天?
-------------------------------------------------------*/
#include
main()
{
intday,month,year,sum,leap;
printf("\npleaseinputyear,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{
case1:
sum=0;break;
case2:
sum=31;break;
case3:
sum=59;break;
/***********SPACE***********/
case4:
【?
】;break;
case5:
sum=120;break;
case6:
sum=151;break;
case7:
sum=181;break;
case8:
sum=212;break;
case9:
sum=243;break;
case10:
sum=273;break;
case11:
sum=304;break;
case12:
sum=334;break;
default:
printf("dataerror");break;
}
/***********SPACE***********/
【?
】;
/***********SPACE***********/
if(year%400==0||(【?
】)
leap=1;
else
leap=0;
/***********SPACE***********/
if(【?
】)
sum++;
printf("itisthe%dthday.",sum);
}
答案:
=======(答案1)=======
sum=90
=======(答案2)=======
sum=sum+day
=========或=========
sum=sum+day
=======(答案3)=======
year%4==0&&year%100!
=0)
=======(答案4)=======
leap==1&&month>2
=========或=========
leap==1&&month>2
=========或=========
leap==1&&2
第5题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
考查字符串数组的应用。
输出26个英文字母。
-------------------------------------------------------*/
#include
voidmain(void)
{
charstring[256];
inti;
/***********SPACE***********/
for(i=0;i<26;【?
】)
/***********SPACE***********/
string[i]=【?
】;
string[i]='\0';
/***********SPACE***********/
printf("thearrarycontains%s\n",【?
】);
}
答案:
=======(答案1)=======
i++
=========或=========
++i
=========或=========
i=i+1
=========或=========
i+=1
=======(答案2)=======
'A'+i
=========或=========
i+'A'
=========或=========
65+i
=========或=========
i+65
=======(答案3)=======
string
第6题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
百鸡问题:
100元买100只鸡,公鸡一只5元钱,母鸡一只3
元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡
各多少只?
-------------------------------------------------------*/
#include
main()
{
intcocks,hens,chicks;
cocks=0;
while(cocks<=19)
{
/***********SPACE***********/
【?
】=0;
/***********SPACE***********/
while(hens<=【?
】)
{
chicks=100-cocks-hens;
if(5*cocks+3*hens+chicks/3==100)
printf("%d,%d,%d\n",cocks,hens,chicks);
/***********SPACE***********/
【?
】;
}
/***********SPACE***********/
【?
】;
}
}
答案:
=======(答案1)=======
hens
=======(答案2)=======
33
=======(答案3)=======
hens++
=========或=========
++hens
=========或=========
hens=hens+1
=======(答案4)=======
cocks++
=========或=========
++cocks
=========或=========
cocks=cocks+1
=========或=========
cocks=cocks+1
第7题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
给出一个正整数,找到一组连续的数,使之累加和等于给
定的正整数。
输出存在多少组这样连续的数,及每组的左
右边界。
例如:
15=1+2+3+4+5
15=4+5+6
15=7+8
所以结果有3组值分别是1->5,4->6,7->8
-------------------------------------------------------*/
#include
#include
voidmain(void)
{
longleft,right;
longsum;
longGiVEN;
intcount=0;
charline[100];
printf("\nConsecutivesumtoafixedgivennumber");
printf("\n=======================================\n");
printf("\nYournumber(>0)please--->");
gets(line);
GiVEN=atol(line);
for(sum=0,right=1;sum;
for(left=1,right--;left<=GiVEN/2;)
if(sum>GiVEN)
{
sum-=left;
/***********SPACE***********/
【?
】;
}
else
{
if(sum==GiVEN)
{
printf("\n%ld=sumfrom%ldto%ld",
GiVEN,left,right);
/***********SPACE***********/
【?
】;
}
/***********SPACE***********/
【?
】;
sum+=right;
}
if(count>0)
printf("\n\nThereare%dsolutionsintotal.",count);
else
printf("\n\nSorry,thereisNOsolutionatall.");
}
答案:
=======(答案1)=======
left++
=========或=========
left=left+1
=========或=========
++left
=======(答案2)=======
count++
=========或=========
count=count++
=========或=========
++count
=========或=========
count=count+1
=======(答案3)=======
right++
=========或=========
right=right++
=========或=========
++right
=========或=========
right=right+1
第8题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从键盘输入一个字符串,将小写字母全部转换成大写字母,
然后输出到一个磁盘文件“test”中保存。
输入的字符串
以!
结束。
-------------------------------------------------------*/
#include
#include
#include
main()
{
FILE*fp;
charstr[100];
inti=0;
if((fp=fopen("test","w"))==NULL)
{
printf("cannotopenthefile\n");
exit(0);
}
printf("pleaseinputastring:
\n");
gets(str);
/***********SPACE***********/
while(【?
】)
{
if(str[i]>='a'&&str[i]<='z')
/***********SPACE***********/
【?
】;
fputc(str[i],fp);
i++;
}
fclose(fp);
/***********SPACE***********/
fp=fopen("test",【?
】);
fgets(str,strlen(str)+1,fp);
printf("%s\n",str);
fclose(fp);
}
答案:
=======(答案1)=======
str[i]!
='!
'
=======(答案2)=======
str[i]=str[i]-32
=========或=========
str[i]=str[i]-32
=======(答案3)=======
"r"
=========或=========
"wr"
=========或=========
"wr+"
第9题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
求100-999之间的水仙花数
说明:
水仙花数是指一个三位数的各位数字的立方和是这个数本身。
例如:
153=1^3+5^3+3^3)。
-------------------------------------------------------*/
#include
intfun(intn)
{inti,j,k,m;
m=n;
/***********SPACE***********/
【?
】;
for(i=1;i<4;i++)
{
/***********SPACE***********/
【?
】;
m=(m-j)/10;
k=k+j*j*j;
}
if(k==n)
/***********SPACE***********/
【?
】;
else
return(0);}
main()
{
inti;
for(i=100;i<1000;i++)
/***********SPACE***********/
if(【?
】==1)
printf("%disok!
\n",i);
}
答案:
=======(答案1)=======
k=0
=======(答案2)=======
j=m%10
=========或=========
j=m-m/10*10
=========或=========
j=m-10*(m/10)
=======(答案3)=======
return
(1)
=======(答案4)=======
fun(i)
第10题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
有一组基数值(正整数),输入一个正整数(小于100),
问:
如果该数由基数值相加构成(每个基数可以重复使用)
,那么最少可能利用的基数是多少个。
-------------------------------------------------------*/
#include
#include
#defineMAXSiZE100
/*#definemin(a,b)((a)<=(b)?
(a):
(b))*/
voidmain(void)
{
intnum[MAXSiZE+1];
intbase[]={1,3,4};
intk=sizeof(base)/sizeof(int);
intn;
inti,j,MIN;
charline[100];
printf("\n============================");
printf("\n\nBaseValues:
");
for(i=0;iprintf("%d",base[i]);
printf("\n\nYourinputplease-->");
gets(line);
n=atoi(line);
num[0]=0;
num[1]=1;
for(i=2;i<=n;i++)
{
/***********SPACE***********/
【?
】;
for(j=0;jif(i>=base[j])
MIN=min(num[i-base[j]]+1,MIN);
/***********SPACE***********/
【?
】