if(____(3)____)
ct++;
if(ct==0)
printf("%d",a);
}
printf("\n");
}
以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,再从键盘上输入一个成绩,将所有考试成绩达到或超过该成绩的学生数据写到新的文本文件“studentD.txt”。
文件的最后一行为0表示学生数据结束。
设文件student.txt的内容为
101Zhao9558
103Qian7581
105Sun9991
107Li8067
0
运行时键盘输入:
80
则生成新文件studentD.txt的内容为:
103Qian7581
105Sun9991
0
例示说明:
student.txt中考试成绩在80分以上的Qian与Sun信息写到studentD.txt
源程序:
#include
voidselect(FILE*fp1,FILE*fp2,intx)
{
intnum,score1,score2;
charname[20];
while
(1)
{
num=0;
fscanf(fp1,"%d%s%d%d",&num,name,&score1,&score2);
if(num==0)
____
(1)____;
if(____
(2)____)
fprintf(fp2,"%3d%-7s%3d%3d\n",num,name,
score1,score2);
}
fprintf(fp2,"0");
}
voidmain()
{
FILE*fp1,*fp2;
intx;
fp1=fopen("student.txt","r");
fp2=fopen("studentD.txt",____(3)____);
if(fp1==NULL||fp2==NULL)
{/*文件打开失败*/
printf("FileOpenError!
\n");
return;
}
scanf("%d",&x);
select(____(4)____);
fclose(fp1);
fclose(fp2);
}
以下程序输入一个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]);
}
三、程序调试题(本大题2小题,第1题4分,第2题6分,共10分)
1.程序调试题1(D_3_1.C)
调试要求:
下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括D_3_1.c文件和D_3_1.exe文件)保存到目录C:
\KS\中。
功能说明:
以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。
如输入:
-354
则输出:
sumx=18
例示说明:
-3为首项,5为公差,4为项数,前4项之和为18
原程序(见C:
\KS\D_3_1.C):
#include
intsumx(inta0,d,n)
{
inti,k,s=0;
k=a0;
for(i=0;is+=k;
k+=d;
returns;
}
voidmain()
{
inta0,d,n;
scanf("%d%d%d",&a0,&d,&n);
printf("sumx=%d\n",sumx(a0,d,n));
}
2.程序调试题2(D_3_2.C)
调试要求:
下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括D_3_2.c文件和D_3_2.exe文件)保存到目录C:
\KS\中。
功能说明:
以下函数length返回字符串中字母A到字母Z所包含字符的长度。
主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
如输入:
Z2009-AShanghaiZ
则输出:
Length=8
例示说明:
从A到Z的子串为Shanghai,其长度为8
原程序(见C:
\KS\D_3_2.C):
#include
intlength(char*p)
{
char*q,*r;
for(q=p;*q!
='\0'||*q!
='A';q++)
;
for(r=q;*r!
='\0'&&*r!
='Z';r++)
;
returnr-q;
}
voidmain()
{
charstr[81];
intn;
gets(str[0]);
n=length(str);
printf("Length=%d\n",n);
}
五、编程题(本大题2小题,每题18分,共36分)
1.编程题1(D_5_1.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括D_5_1.C文件和D_5_1.exe文件)保存到目录C:
\KS\中。
功能说明:
键盘输入5个整数,按由小到大的顺序排序后输出。
如输入:
10020-531
则输出:
-50102031
2.编程题2(D_5_2.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括D_5_2.C文件和D_5_2.exe文件)保存到目录C:
\KS\中。
功能说明:
键盘输入正整数n,计算并输出
的值,输出结果保留6位小数。
如输入:
10
则输出:
0.645635