计算机二级考试C语言练习题Word文件下载.docx
《计算机二级考试C语言练习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机二级考试C语言练习题Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
FangFang"
90,82,87},{10005,"
ZhangSan"
95,80,88}};
STUn={10006,"
ZhaoSi"
55,70,68},ss[N];
inti,j;
FILE*fp;
fp=fopen("
student.dat"
"
wb"
fwrite(t,sizeof(STU),N,fp);
rb"
fread(ss,sizeof(STU),N,fp);
printf("
\nTheoriginaldata:
\n\n"
for(j=0;
j<
>
{printf("
\nNo:
%ldName:
%-8sScores:
"
ss[j].sno,ss[j].name);
for(i=0;
i<
3;
i++)printf("
%6.2f"
ss[j].score[i]);
\n"
fun("
n);
\nThedataaftermodifing:
解题答案:
/**********第一空**********/
fp=fopen(filename,"
/**********第二空**********/
fseek(fp,-(long)sizeof(STU),SEEK_END);
/**********第三空**********/
n,sizeof(STU),1,fp);
******************************************
二、改错题:
给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
typedefstructaa
{intdata;
structaa*next;
}NODE;
NODE*Creatlink(intn,intm)
{NODE*h=NULL,*p,*s;
inti;
/**********found***********/
p=(NODE)malloc(sizeof(NODE));
h=p;
p->
next=NULL;
for(i=1;
=n;
i++)
{s=(NODE*)malloc(sizeof(NODE));
s->
data=rand()%m;
s->
next=p->
next;
next=s;
p=p->
returnp;
outlink(NODE*h)
{NODE*p;
p=h->
\n\nTHELIST:
\n\nHEAD"
while(p)
->
%d"
p->
data);
p=p->
{NODE*head;
head=Creatlink(8,22);
outlink(head);
p=(NODE*)malloc(sizeof(NODE));
returnh;
三、程序题:
请编写函数fun,函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#defineN80
intfun(char*s)
{
{charline[N];
intnum=0;
voidNONO();
Enterastring:
gets(line);
num=fun(line);
Thenumberofwordis:
%d\n\n"
num);
NONO();
voidNONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
FILE*rf,*wf;
inti,num;
charline[N],*p;
rf=fopen("
in.dat"
"
r"
wf=fopen("
out.dat"
w"
for(i=0;
i<
10;
i++){
fgets(line,N,rf);
p=strchr(line,'
\n'
if(p!
=NULL)*p=0;
num=fun(line);
fprintf(wf,"
%d\n"
num);
fclose(rf);
fclose(wf);
参考答案:
intfun(char*s)
intk=1;
while(*s){
if(*s=='
'
)k++;
s++;
returnk;
题库2
一、填空题:
给定程序的功能是:
从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
voidWriteText(FILE*);
voidReadText(FILE*);
if((fp=fopen("
myfile4.txt"
))==NULL)
openfail!
!
exit(0);
}
WriteText(fp);
ReadText(fp);
voidWriteText(FILE___1___)
{charstr[81];
\nEnterstringwith-1toend:
gets(str);
while(strcmp(str,"
-1"
)!
=0){
fputs(___2___,fw);
fputs("
fw);
voidReadText(FILE*fr)
\nReadfileandoutputtoscreen:
fgets(str,81,fr);
while(!
feof(fr)){
%s"
___3___);
voidWriteText(FILE*fw)
fputs(str,fw);
str);
******************************************
给定程序MODI1.C中函数fun的功能是:
从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为:
7654321时,t中的数为:
7531。
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
/************found************/
voidfun(longs,longt)
{longsl=10;
*t=s%10;
while(s>
0)
{s=s/100;
*t=s%10*sl+*t;
sl=sl*100;
{longs,t;
\nPleaseenters:
"
scanf("
%ld"
&
s);
fun(s,&
t);
Theresultis:
%ld\n"
t);
voidfun(longs,long*t)
sl=sl*10;
******************************************
三、程序题:
函数fun的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。
部分源程序存在文件PROG1.C中。
数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidfun(inta,intb,long*c)
{inta,b;
longc;
voidNONO();
Inputa,b:
scanf("
%d,%d"
a,&
b);
fun(a,b,&
c);
c);
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
inti,a,b;
longc;
fscanf(rf,"
a=%d,b=%d,c=%ld\n"
a,b,c);
fclose(wf);
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
题库3
给定程序中,函数fun的功能是:
将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
intfun(char*fname)
inti,n;
floatx;
if((fp=fopen(fname,"
))==NULL)return0;
i<
=10;
i++)
fprintf(___1___,"
%d%f\n"
i,sqrt((double)i));
\nSucceed!
___2___;
\nThedatainfile:
if((fp=fopen(___3___,"
return0;
fscanf(fp,"
%d%f"
&
n,&
x);
feof(fp))
%d%f\n"
n,x);
fscanf(fp,"
return1;
{charfname[]="
myfile3.txt"
;
fun(fname);
/**********第一空*********/
fprintf(fp,"
if((fp=fopen(fname,"
二、改错题:
给定程序MODI1.C中fun函数的功能是:
将n个无序整数从小到大排序。
请改正程序中的错误,使它能得出正确的结果。
fun(intn,int*a)
{inti,j,p,t;
for(j=0;
{p=j;
for(i=j+1;
if(a[p]>
a[i])
t=i;
if(p!
=j)
{t=a[j];
a[j]=a[p];
a[p]=t;
putarr(intn,int*z)
{inti;
for(i=1;
=n;
i++,z++)
%4d"
*z);
if(!
(i%10))printf("
}printf("
{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
\n\nBeforesorting%dnumbers:
putarr(n,aa);
fun(n,aa);
\nAftersorting%dnumbers:
for(i=j+1;
N;
I++)<
p>
p=i;
三、程序题:
函数fun的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12时,调用该函数后,c=2514。
*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;
题库4一、填空题:
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的
学生数据输出到filename所指的文件中,覆盖原来的文件内容。
voidfun(char*filename)