C语言上机操作之程序填空.docx
《C语言上机操作之程序填空.docx》由会员分享,可在线阅读,更多相关《C语言上机操作之程序填空.docx(203页珍藏版)》请在冰豆网上搜索。
![C语言上机操作之程序填空.docx](https://file1.bdocx.com/fileroot1/2023-2/6/67b75b93-6887-4a3b-aeaf-9c7fce3d432f/67b75b93-6887-4a3b-aeaf-9c7fce3d432f1.gif)
C语言上机操作之程序填空
━━━━━━━━━━━━━━━━━━
一、程序填空共130题
━━━━━━━━━━━━━━━━━━
第1题(9.0分)题号:
441
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从低位开始取出长整型变量s中奇数位上的数,依次构成一
个新数放在t中。
-------------------------------------------------------*/
#include
#include
voidfun(longs,long*t)
{
longsl=10;
s/=10;
/***********SPACE***********/
*t=s【?
】10;
while(s>0)
{
/***********SPACE***********/
s=【?
】;
/***********SPACE***********/
*t=s%10*sl【?
】;
/***********SPACE***********/
sl=sl【?
】10;
}
}
main()
{longs,t;
clrscr();
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
答案:
1).%
2).s/100
3).+*t
4).*
第2题(9.0分)题号:
439
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
1982年我国第三次人口普查,结果全国人口为10.3亿,假
如人口增长率为5%。
编写一个程序求在公元多少年总人口
翻了一番。
-------------------------------------------------------*/
#include
voidmain()
{
doublep1=10.3,p2,r=0.05;
intn=1;
/***********SPACE***********/
p2=p1*【?
】;
/***********SPACE***********/
while(p2<=【?
】)
{
n++;
/***********SPACE***********/
p2=p2*【?
】;
}
/***********SPACE***********/
n=【?
】;
printf("%d年人口总数翻了一番,即为%g亿人\n",n,p2);
}
答案:
1).(1+r)或(r+1)
2).2*p1或p1*2
3).(1+r)或(r+1)
4).n+1982或1982+n
第3题(9.0分)题号:
407
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
有五个学生,每个学生有3门课的成绩,从键盘输入以上数
据(包括学生号,姓名,三门课成绩),计算出平均成绩,
设原有的数据和计算出的平均分数存放在磁盘文件"stud"
中。
-------------------------------------------------------*/
#include"stdio.h"
structstudent
{
charnum[6];
charname[8];
intscore[3];
floatavr;
}stu[5];
main()
{
inti,j,sum;
FILE*fp;
/*input*/
for(i=0;i<5;i++)
{
printf("\npleaseinputNo.%dscore:
\n",i);
printf("stuNo:
");
scanf("%s",stu[i].num);
printf("name:
");
scanf("%s",stu[i].name);
sum=0;
/***********SPACE***********/
for(j=0;【?
】;j++)
{
printf("score%d.",j+1);
scanf("%d",&stu[i].score[j]);
/***********SPACE***********/
sum+=stu[i].【?
】;
}
stu[i].avr=sum/3.0;
}
fp=fopen("stud","w");
/***********SPACE***********/
for(i=0;i<5;【?
】)
/***********SPACE***********/
if(fwrite(&stu[i],sizeof(【?
】),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
答案:
1).j<3或3>j
2).score[j]
3).i++或++i或i=i+1
4).structstudent
第4题(9.0分)题号:
408
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入两个整数,求他们的按位与。
-------------------------------------------------------*/
#include
voidmain()
{
intx,y,z=0,a,b,k=1;
scanf("%d,%d",&x,&y);
while(x>0&&y>0)
{
a=x%2;
/***********SPACE***********/
x=【?
】;
b=y%2;
y=y/2;
/***********SPACE***********/
z=z+【?
】;
k=k*2;
}
/***********SPACE***********/
【?
】("z=%d\n",z);
}
答案:
1).x/2
2).a*b*k或a*b*k
3).printf
第5题(9.0分)题号:
477
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
编写程序,输出1000以内的所有完数及其因子。
说明:
所谓完数是指一个整数的值等于它的因子之和。
例如“6的因子是1、2、3,而6=1+2+3,故6是
一个完数。
-------------------------------------------------------*/
#include
main()
{
inti,j,m,s,k,a[100];
for(i=1;i<=1000;i++)
{
m=i;s=0;k=0;
for(j=1;j/***********SPACE***********/
if(【?
】)
{
s=s+j;
/***********SPACE***********/
【?
】=j;
}
if(s!
=0&&s==m)
{
/***********SPACE***********/
for(j=0;【?
】;j++)
printf("%4d",a[j]);
printf("=%4d\n",i);
}
}
}
答案:
1).m%j==0
2).a[k++]
3).jj
第6题(9.0分)题号:
10
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输出由字符w构造成的形如W的图形。
wwww
wwww
wwww
wwww
wwww
-------------------------------------------------------*/
voiddraw(intn)
{
inti,j,k,r,m;
/***********SPACE***********/
for(i=1;【?
】;i++)
{
for(j=1;j<=2;j++)
{
for(r=1;r
printf("w");
/***********SPACE***********/
for(k=1;【?
】;k++)printf("");
printf("w");
for(m=1;m
}
/***********SPACE***********/
【?
】;
}
}
#include
main()
{
intn;
clrscr();
printf("inputanumber:
");
/***********SPACE***********/
【?
】;
draw(n);
}
答案:
1).i<=n或n>=i
2).k<=2*n-2*i或2*n-2*i>=k
3).printf("\n")
4).scanf("%d",&n)
第7题(9.0分)题号:
397
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙
队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比
赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。
-------------------------------------------------------*/
main()
{
chari,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
/***********SPACE***********/
if(【?
】)
/***********SPACE***********/
for(k='x';【?
】;k++)
{
/***********SPACE***********/
if(【?
】)
{
/***********SPACE***********/
if(i!
='x'&&k!
=【?
】)
printf("orderisa--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
答案:
1).i!
=j或i!
=j
2).k<='z'或'z'>=k
3).i!
=k&&j!
=k或i!
=k&&j!
=k
4).'z'
第8题(9.0分)题号:
470
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从两个数组中分别提取任意元素x[i],y[j],问|x[i]-y[j]|
的最小值是多少?
-------------------------------------------------------*/
#include
/***********SPACE***********/
#definemin(x,y)(【?
】)
intmin_distance(intx[],inty[],intm,intn)
{
intminimum=INT_MAX;
intindex_x=0,index_y=0;
while(index_x/***********SPACE***********/
if(【?
】)
{
minimum=min(minimum,x[index_x]-y[index_y]);
index_y++;
}
else
{
minimum=min(minimum,y[index_y]-x[index_x]);
/***********SPACE***********/
【?
】;
}
returnminimum;
}
#include
voidmain(void)
{
intx[]={1,3,7,11,18};
intm=sizeof(x)/sizeof(int);
inty[]={4,5,8,13,22};
intn=sizeof(y)/sizeof(int);
inti,min_distance(int[],int[],int,int);
printf("\nComputeMinimumDistanceBetweenTwoSortedArrays");
printf("\n==================================================");
printf("\n\nGivenArray#1:
");
for(i=0;iprintf("%5d",x[i]);
printf("\n\nGivenArray#2:
");
for(i=0;iprintf("%5d",y[i]);
printf("\n\nMinimumDistance=%d",min_distance(x,y,m,n));
}
答案:
1).xx:
y或y>x?
x:
y
2).x[index_x]>=y[index_y]或y[index_y]<=x[index_x]
3).index_x++或index_x=index_x+1或++index_x
第9题(9.0分)题号:
30
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入字符串,再输入一个字符,将字符串中与输入字符相
同的字符删除。
-------------------------------------------------------*/
#include"stdio.h"
voidfun(chara[],charc)
{
inti,j;
/***********SPACE***********/
for(i=j=0;【?
】;i++)
if(a[i]!
=c)a[j++]=a[i];
/***********SPACE***********/
【?
】;
}
main()
{
chara[20],cc;
gets(a);
/***********SPACE***********/
【?
】;
/***********SPACE***********/
【?
】;
puts(a);
}
答案:
1).a[i]!
='\0'或a[i]或a[i]!
=NULL
2).a[j]='\0'或a[j]=NULL或a[j]=0
3).cc=getchar()或scanf("%c",&cc)
4).fun(a,cc)
第10题(9.0分)题号:
467
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入一个整数n,打印自然数1-n的全排列方案。
-------------------------------------------------------*/
#include
#include
#defineMAXSIZE20
#defineROTATE(p)
{
inti,temp;\
temp=perm[p];\
for(i=p-1;i>=0;i--)\
perm[i+1]=perm[i];\
perm[0]=temp;\
}
voidmain(void)
{
intperm[MAXSIZE];
intposition;
intn;
inti;
charline[100];
printf("\nPermutationbyRotationMethod");
printf("\n==============================");
printf("\n\nNumberofElements-->");
gets(line);
n=atoi(line);
for(i=0;iperm[i]=i+1;
position=n-1;
/***********SPACE***********/
while(【?
】)
{
printf("\n");
for(i=0;i/***********SPACE***********/
printf("%d",【?
】);
/***********SPACE***********/
position=【?
】;
ROTATE(position);
while(perm[position]==position+1&&position!
=0)
{
position--;
ROTATE(position);
}
}
}
答案:
1).position!
=0
2).perm[i]
3).n-1或n-1
第11题(9.0分)题号:
395
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入3个数a,b,c,按从小到大的顺序输出。
-------------------------------------------------------*/
main()
{
voidswap(int*p1,int*p2);
intn1,n2,n3;
int*pointer1,*pointer2,*pointer3;
printf("pleaseinput3number:
n1,n2,n3:
");
scanf("%d,%d,%d",&n1,&n2,&n3);
pointer1=&n1;
pointer2=&n2;
pointer3=&n3;
/***********SPACE***********/
if(【?
】)swap(pointer1,pointer2);
/***********SPACE***********/
if(【?
】)swap(pointer1,pointer3);
/***********SPACE***********/
if(【?
】)swap(pointer2,pointer3);
printf("thesortednumbersare:
%d,%d,%d\n",n1,n2,n3);
}
/***********SPACE***********/
voidswap(【?
】)
int*p1,*p2;
{
intp;
p=*p1;*p1=*p2;*p2=p;
}
答案:
1).n1>n2或n2*pointer2或*pointer2<*pointer1
2).n1>n3或n3*pointer3或*pointer3<*pointer1
3).n2>n3或n3*pointer3或*pointer3<*pointer2
4).p1,p2
第12题(9.0分)题号:
443
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
企业发放的奖金根据利润提成。
利润(I)低于或等于10万元
时