三程序填空题.docx
《三程序填空题.docx》由会员分享,可在线阅读,更多相关《三程序填空题.docx(17页珍藏版)》请在冰豆网上搜索。
![三程序填空题.docx](https://file1.bdocx.com/fileroot1/2022-10/29/38f99d8c-1785-4285-b973-72a387cb4a13/38f99d8c-1785-4285-b973-72a387cb4a131.gif)
三程序填空题
PART1程序填空题
1.以下程序按每行5个数的格式输出1至n范围内能被7或17整除的整数,并求出其和。
如输入:
50
则输出:
714172128
34354249
Sum=247
源程序:
#include
voidmain()
{
inti,n,ct=0,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
if(____
(1)_____)
{
printf("%d\t",i);
_____
(2)_______;
ct++;
if(___(3)______)
printf("\n");
}
printf("\nSum=%d\n",sum);
}
2.以下程序输入10个整数到a数组,找到并输出其中最大的整数及其下标。
如输入:
80290150520330-160-9902009
则输出:
a[3]=520
源程序:
#include
#defineN10
intget_max_index(inta[],intn)
{
inti,k=0;
for(i=1;iif(____
(1)____)
k=i;
return______
(2)_____;
}
voidmain()
{
inti,k,a[N];
for(i=0;iscanf("%d",&a[i]);
k=_______(3)______;
printf("a[%d]=%d\n",k,a[k]);
}
3.以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,从键盘上输入平时成绩在总成绩中所占比重,计算每个学生的总成绩(四舍五入为整数)后输出到屏幕上。
文件的最后一行为0表示学生数据结束。
设文件student.txt的内容为
101Zhao9558
103Qian7581
105Sun9991
107Li8067
0
运行时键盘输入:
0.1
则屏幕输出:
101Zhao955862
103Qian758180
105Sun999192
107Li806768
源程序:
#include
voidcalc(FILE*fp,floatx)
{
intnum,score1,score2;
floatscore3;
charname[20];
while(!
feof(fp))
{/*文件还有未读数据时*/
num=0;
fscanf(fp,"%d%s%d%d",&num,name,&score1,&score2);
if(num>0)
{/*学生数据有效时*/
score3=score1*x+score2*(1-x);/*计算总成绩*/
printf("%3d%-7s%3d%3d%3d\n",num,name,score1,
score2,______
(1)______);/*总成绩四舍五入为整数*/
}
}
}
voidmain()
{
FILE*fp;
floatx;
fp=fopen("student.txt","r");
if(____
(2)____)/*如果文件打开失败*/
{
printf("FileOpenError!
\n");
return;
}
scanf("%f",&x);
calc(____(3)____);/*调用calc函数*/
fclose(____(4)____);/*关闭文件*/
}
4.下面程序实现的功能是打印n以内的水仙花数,水仙花数是指其本身的值等于每一位数字的立方和,例如:
153是一个水仙花数,153=1*1*1+5*5*5+3*3*3.
如输入:
400
则输出:
1153370371
#include
voidmain()
{
intn,digit,k,m,s;
scanf("%d",&n);
for(k=1;____
(1)____;k++)
{
s=0;
m=k;
while(m!
=0)
{
digit=____
(2)____;
s=s+digit*digit*digit;
m=m/10;
}
if(____(3)____)
printf("%d",s);
}
}
5.以下函数intsum(intx[],intnum)计算数组x前num个元素之和。
在主函数中,输入10个任意整数和下标index1、index2的值(设1<=index1<=index2<=9),调用sum()函数计算index1元素到第index2元素的和,并输出结果。
如输入:
13257964810
24
则输出:
Sum=14
例示说明:
下标从2至4的元素为2、5、7,其累加为14
源程序:
#include
intsum(intx[],intnum)
{
inti,s=0;
for(i=0;____
(1)____;i++)
s=____
(2)____;
returns;
}
voidmain()
{
inti,index1,index2,result;
intx[10];
for(i=0;i<10;i++)
scanf("%d",&x[i]);
scanf("%d%d",&index1,&index2);
result=sum(x+index1,____(3)____);
printf("Sum=%d\n",result);
}
6.以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩(学生已按学号从小到大排序),从键盘上输入一个新学生的信息,按学号顺序将数据插入到学生表中,并生成新的文本文件“studentC.txt”。
文件的最后一行为0表示学生数据结束。
设文件student.txt的内容为
101Zhao9558
103Qian7581
105Sun9991
107Li8067
0
运行时键盘输入:
104Chen8090
则生成新文件studentC.txt的内容为:
101Zhao9558
103Qian7581
104Chen8090
105Sun9991
107Li8067
0
源程序:
#include
voidmain()
{
FILE*fp1,*fp2;
intfnum,fscore1,fscore2;
charfname[20];
intnum,score1,score2;
charname[20];
intflag;
fp1=fopen("student.txt",____
(1)____);
fp2=fopen("studentC.txt","w");
if(fp1==NULL||fp2==NULL)
{
printf("FileOpenError!
\n");
return;
}
scanf("%d%s%d%d",&num,name,&score1,&score2);
_______
(2)______;
while
(1)
{
fnum=0;
fscanf(fp1,"%d%s%d%d",&fnum,fname,&fscore1,&fscore2);
if(fnum==0)
break;
if(flag==1&&num<=fnum)
{
flag=0;
fprintf(fp2,"%3d%-7s%3d%3d\n",num,name,
score1,score2);
}
fprintf(fp2,"%3d%-7s%3d%3d\n",fnum,fname,
fscore1,fscore2);
}
if(____(3)____)
fprintf(fp2,"%3d%-7s%3d%3d\n",num,name,score1,score2);
fprintf(fp2,____(4)____);
fclose(fp1);
fclose(fp2);
}
7.以下程序输入n和n个大于1的正整数,输出其中素数。
如输入:
51993113715
则输出:
191137
例示说明:
先输入n为5,再输入5个正整数,输出5个整数中的素数
#include
voidmain()
{
intn,a,i,j,ct;
scanf("%d",&n);
for(i=0;____
(1)____;i++)
{
______
(2)______;
scanf("%d",&a);
for(j=2;jif(____(3)____)
ct++;
if(ct==0)
printf("%d",a);
}
printf("\n");
}
8.以下程序输入一个10进制整数,转换为16进制,计算16进制的各个位数,并从高位到低位依次输出。
如输入:
687
则输出:
2AF
例示说明:
10进制687等于16进制2AF,输出时2、A、F中间包含空格
源程序:
#include
voidmain()
{
inta[10],i,n;
scanf("%d",&n);
for(i=0;n>0;i++)
{
a[i]=____
(1)____;
n/=16;
}
for(i--;____
(2)____;____(3)____)
printf("%X",a[i]);
}
9.以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,再从键盘上输入一个成绩,将所有考试成绩达到或超过该成绩的学生数据写到新的文本文件“studentD.txt”。
文件的最后一行为0表示学生数据结束。
设文件student.txt的内容为
101Zhao9558
103Qian7581
105Sun9991
107Li8067
0
运行时键盘输入:
80
则生成新文件studentD.txt的内容为:
103Qian75