版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二级C语言上机试题汇编ifn==0
第01套return1.0;
填空题:给定程序中,函数fun的功能是:将形参n所指变while(n>1&&n<170)
量中,各位上为偶数的数去除,剩余的数按原来从高位到低/************found************/
位的顺序组成一个新的数,并通过形参指针n传回所指变result*=n一
量。例如,输入•个数:27638496,新的数:为739。请在returnresu1t;
程序的卜划线处填入正确的内容并把卜.划线删除,使程序)
得出正确的结果。注意:源程序存放在考生文件夹下的main()
BLANK1.C中。不得增行或删行,也不得更改程序的结构!{intn;
给定源程序:printf("InputN:");
#include<stdio.h>scanf("%d〃,&n);
/z,,
voidfun(unsignedlong*n)printf(\n\n%d!=%lf\n\n,n,fun(n));
{unsignedlongx=0,i;intt;)
i=l;解题思路:第•处:条件语句书写格式错误,应改为:if
while(*n)(n==0)。
/**********found**********/第二处:语句后缺少分号。
{l=*n%_1_;
/**********found**********/编程题:请编写一个函数fun,它的功能是:将一个数字
if(t%2!=_2_)字符串转换为一个整数(不得调用C语言提供的将字符串转
{x=x+t*i;i=i*10;}换为整数的函数)。例如,若输入字符串〃-1234〃,则函数把
*n=*n/10;它转换为整数值-1234o函数fun中给出的语句仅供参考。
}注意:部分源程序存在文件PR0G1.C文件中。请勿改动主函
/**********found**********/数main和其它函数中的任何内容,仅在函数fun的花括号
*n=—3―;中填入你编写的若干语句。
)给定源程序:
main()#include<stdio.h>
{unsignedlongn=-l;ttinclude<string.h>
while(n>99999999||n<0)longfun(char*p)
{printf(^Pleaseinput(0<n<100000000):〃);
scanf(〃机d",&n);}
fun(&n);
printf(^XnTheresultis:%ld\n”,n);)
)main()/*主函数*/
解题思路:{chars[6];
第一处:t是通过取模的方式来得到*n的个位数字,所以应longn;
填:10。printf("Enterastring:\n/z);
第二处:判断是否是奇数,所以应填:0ogets(s);
第三处:最后通形参n来返回新数x,所以应填:xon=fun(s);
printf("%ld\n”,n);
改错题:给定程序MODI1.C中函数fun的功能是:计算n!。NONO();
例如,给n输入5,则输出120.OOOOOOo请改正程序中的错)
误,使程序能输出正确的结果。注意:不要改动main函数,NONO()
不得增行或删行,也不得更改程序的结构!{/*本函数用于打开文件,输入数据、调用函数,输出数据,
给定源程序:关闭文件。*/
ttinclude<stdio.h>FILE*fp,*wf;
doublefun(intn)inti;
{doubleresult=1.0;chars[20];
/************found************/longn;
fp=fopen("c:\\test\\in.dat",〃r〃);
wf=fopen("c:\\test\\out.dat〃,〃w〃);/**********found**********/
for(i=0;i<10;i++){_1_fP;
fscanf(fp,〃%s”,s);charch;
n=fun(s);fp=fopen(z,filei.txt",〃w〃);
fprintf(wf,n);fprintf(fp,"%s%ds,a,f);
)fclose(fp);
fclose(fp);fp二fopen(*filel.txt*,〃r〃);
fclose(wf);printf("XnTheresult:\n\rT);
)ch=fgetc(fp);
解题思路:本题是将一个数字字符串转换为一个整数。/**********found**********/
参考答案:while(Ifeof(_2))(
#include<stdio.h>/**********found**********/
#include<string.h>putchar(_3_);ch=fgetc(fp);}
longfun(char*p)putchar\n);
{fclose(fp);
/*以下代码仅供参考*/)
inti,len,t;/*len为串长,t为正负标识*/main()
longx=0;{chara[10]=,,Hello!,/;intb=12345;
len=strlen(p);doublec=98.76;
if(p[0]='」)fun(a,b,c);
{t=-l;len—;p++;})
elset=l;解题思路:考察把给定的数据写入到文本文件中,再从该文
/*以下完成数字字符串转换为一个数字♦/件读出并显示在屏幕。
while(*p)x=x*10-48+(*p++);第一处:定义文本文件类型变量,所以应填:FILE
returnx*t;第二处:判断文件是否结束,所以应填:fPo
}第三处:显示读出的字符,所以应填:Cho
mainO/*主函数*/
{chars[6];改错题:给定程序MODI1.C中函数fun的功能是:依次取出
longn;字符串中所有数字字符,形成新的字符串,并取代原字符
printf("Enterastring:\n,z);串。请改正函数fun中指定部位的错误,使它能得出正确的
gets(s);结果。注意:不要改动main函数,不得增行或删行,也不
n=fun(s);得更改程序的结构!给定源程序:
printfn);^include<stdio.h>
NONO();voidfun(char*s)
){inti,j;
注意:由于NONOS这个函数是改卷人用的,与考生没有什for(i=0,j=0;s[i]!=,\0*;i++)
么关系,故下面从第2套试题开始均省略NONO()if(s[i]>=,&&s[i]<=,91)
第02套/**********found**********/
填空题:给定程序中,函数fun的功能是将形参给定的字符s[j]=s[i];
串、整数、浮点数写到文本文件中,再用字符方式从此文本/**********found**********/
文件中逐个读入并显示在终端屏幕上。请在程序的下划线处s[j]=〃\O”;
填入正确的内容并把卜划线删除,使程序得出正确的结果。)
注意:源程序存放在考生文件夹下的BLANKLC中。不得增main()
行或删行,也不得更改程序的结构!{charitem[80];
给定源程序:printf(〃\nEnterastring:,z);gets(item);
#include<stdio.h>printf(^\n\nThestringis:\〃%s\'\n”,item);
voidfun(char*s,inta,doublef)fun(item);
printf(^XnXnThestringofchangingis:参考答案:
\〃%s\"\n",item);
)voidfun(chars[][N],char*b)
解题思路:(
第•处:要求是取出原字符串中所有数字字符组成•个新inti,j,n=0;
的字符串,程序中是使用变量j来控制新字符串的位置,所for(i=0;i<N;i++)/*请填写相应语句完成其功能*/
以应改为:s[j++]=s[i];。(
第二处:置新字符串的结束符,所以应改为:s[j]='\0'for(j=0;j<M;j++){
b[n]=s[j][i];
编程题:请编写函数fun,函数的功能是:将•M行N列的二n=i*M+j+l;
维数组中的字符数据,按列的顺序依次放到一个字符串中。)
例如,二维数组中的数据为:}
WWWWb[n]=>\0,;
SSSS}
HHHH第03套
则字符串中的内容应是:WSHWSHWSH。填空题:程序通过定义学生结构体变量,存储了学生的学号、
注意:部分源程序在文件PROGLC中。请勿改动主函数main姓名和3门课的成绩。所有学生数据均以二进制方式输出到
和其它函数中的任何内容,仅在函数fun的花括号中填入文件中。函数fun的功能是重写形参filename所指文件中
你编写的若干语句。最后一个学生的数据,即用新的学生数据覆盖该学生原来的
给定源程序:数据,其它学生的数据不变。请在程序的下划线处填入正确
ttinclude<stdio.h>的内容并把下划线删除,使程序得出正确的结果。注意:源
^defineM3程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,
ttdefineN4也不得更改程序的结构!
voidfun(chars[][N],char*b)给定源程序:
^include<stdio.h>
ttdefineN5
typedefstructstudent{
)longsno;
mainOcharname[10];
{charfloatscore[3];
a[100],w[M][N]={{,W,/W,/W,/W,},{'S','S','S','S'}}STU;
voidfun(char*filename,STUn)
inti,j;{FILE*fp;
printf(""Thematrix:Xn*);/**********found**********/
for(i=0;i<M;i++)fp二fopen(_1_,"rb+”);
{for(j=0;j<N;j++)printfC%3c*,w[i][j]);/**********found**********/
printf(,z\nz/);fseek(_2_,-lL*sizeof(STU),SEEK_END);
}/**********found**********/
fun(w,a);fwrite(&n,sizeof(STU),1,3);
printf(^TheAstring:\n^);puts(a);fclose(fp);
printf(〃\n\n〃);)
NONOO;main()
){STUt[N]={{10001,"MaChao",91,92,77},
解题思路:本题是把二维数组中的字符数据按列存放到一个{10002,"CaoKai",75,60,88},
字符串中。{10003,85,70,78},(10004,,,FangFang,;90,82,
1.计算存放到一维数组中的位置。87},{10005,"ZhangSan",95,80,88)};
2.取出二维数组中的字符存放到•维数组(已计算出的位STUn={10006,"ZhaoSi",55,70,68},ss[N];
置)中。inti,j;FILE*fp;
fp=fopen("student.dat","wb");p=(NODE)malloc(sizeof(NODE));
fwrite(t,sizeof(STU),N,fp);h=p;
fclose(fp);p->next=NULL;
fp=fopen("student.dat","rb");for(i=l;i<=n;i++)
fread(ss,sizeof(STU),N,fp);{s二(NODE*)malloc(sizeof(NODE));
fclose(fp);s->data=rand()%m;s->next=p->next;
printf(*\nTheoriginaldata:\n\n");p->next=s;p=p->next;
for(j=0;j<N;j++))
{printf(z,\nNo:%ldName:%-8sScores:",ss[j].sno,/**********found***********/
ss[j].name);returnp;
for(i=0;i<3;i++)printf("%6.2f”,ss[j].score[i]);)
printf("\n〃);outlink(NODE*h)
){NODE*p;
fun("student,dat”,n);p=h->next;
printf(〃\nThedataaftermodifing:\n\n〃);printfC\n\nTHELIST:\n\nHEAD〃);
fp二fopenC'student.dat^,“rb〃);while(p)
fread(ss,sizeof(STU),N,fp);{printf(/z->%d”,p->data);
fclose(fp);p=p->next;
for(j=0;j<N;j++))
{printf('\nNo:%ldName:%-8sScores:/z,ss[j].sno,printfC\n/Z);
ss[j].name);)
for(i=0;i<3;i++)printf(*%6.2fss[j].scoreti]);mainO
printf(〃\n〃);{NODE*head;
)head=Creat1ink(8,22);
)outlink(head);
解题思路:本题是考察如何从文件中读出数据,再把结构中)
的数据写入文件中。解题思路:
第一处:从指定的文件中读出数据,所以应填:filename。第一处:指向刚分配的结构指针,所以应改为:p=(NODE
第二处:读取文件fp的最后一条记录,所以应填:fPo*)malloc(sizeof(NODE));
第三处:再把读出的记录,写入文件fp指定的位置上,所第二处:在动态分配内存的下一行语句是,使用临时结构指
以应填:fp«针变量h保存p指针的初始位置,最后返回不能使用p,是
因为P的位置已经发生了变化,应改为返回h。
改错题:给定程序MODILC中的函数Greatlink的功能是创
建带头结点的单向链表,并为各结点数据域赋0到m-1的编程题:请编写函数fun,函数的功能是:统计一行字符串
值。请改正函数Creatlink中指定部位的错误,使它能得出中单词的个数,作为函数值返回。一行字符串在主函数中输
正确的结果。注意:不要改动main函数,不得增行或删行,入,规定所有单词由小写字母组成,单词之间由若干个空格
也不得更改程序的结构!隔开,一行的开始没有空格。注意:部分源程序在文件
给定源程序:PROG1.C中。请勿改动主函数main和其它函数中的任何内
ttinclude<stdio.h>容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdlib.h>给定源程序:
typedefstructaa#include<stdio.h>
{intdata;#include〈string.h>
structaa*next;^defineN80
}NODE;intfun(char*s)
NODE*Creatlink(intn,intm)(
{NODE*h=NULL,*p,*s;
inti;)
/**********found***********/mainO
{charline[N];intnum=O;if(s[i].sno_2_s[j].sno)
printf("Enterastring:\rT);gets(line);{t=s[i];s[i]=s[j];s[j]=t;}
num=fun(line);fp=fopen(filename,〃wb");
printf("Thenumberofwordis:ad\n\n",num);/**********found**********/
NONOO;_3_(s,sizeof(STU),N,fp);/*二进制输出*/
)fclose(fp);
解题思路:本题是统计字符串中的单词数。)
1.利用while循环语句和指针变量,当字符为空格时,则main()
单词数k加1。{STUt[N]={{10005,"ZhangSan",95,80,88},
2.循环结束返回k。{10003,zliSi,z,85,70,78},{10002,"CaoKai\75,60,
参考答案:88),{10004,"FangFang”,90,82,87),(10001,"MaChao",
intfun(char*s)91,92,77)},ss[N];
(inti,j;FILE*fp;
intk=1;fp=fopen("student,dat",〃\vb〃);
while(*s){fwrite(t,sizeof(STU),5,fp);
if件s=='')k++;fclose(fp);
s++;prinlf("\n\nTheoriginaldata:\n'n");
)for(j=0;j<N;j++)
returnk;{printf(〃\nNo:%ldName:%-8sScores:t[j].sno,
)t[j].name);
第04套for(i=0;i<3;i++)printf(,z%6.2f,z,t[j].scoreti]);
填空题:程序通过定义学生结构体变量,存储了学生的学号、printfC\nz,);
姓名和3门课的成绩。所有学生数据均以二进制方式输出到)
文件中。函数fun的功能是从形参filename所指的文件中fun("student.dat〃);
读入学生数据,并按照学号从小到大排序后,再用二进制方prinlf("\n\nThedataaftersorting:\n\n〃);
式把排序后的学生数据输出到filename所指的文件中,覆fp二fopen("student,dat","rb〃);
盖原来的文件内容。请在程序的下划线处填入正确的内容并fread(ss,sizeof(STU),5,fp);
把下划线删除,使程序得出正确的结果。注意:源程序存放fclose(fp);
在考生文件夹下的BLANK1.C中。不得增行或删行,也不得for(j=0;j<N;j++)
更改程序的结构!{printf(,z\nNo:%ldName:%-8sScores:ss[j].sno,
给定源程序:ss[j].name);
)(include<stdio.h>for(i=0;i<3;i++)printf("%6.2f”,ss[j].score[i]);
ttdefineN5printf(〃\n〃);
typedefstructstudent{)
longsno;)
charname[10];解题思路:本题是考察把结构中的数据写入文件。
floatscore[3];第一处:建立文件的类型,考虑到是把结构中的数据(结构
}STU;中的数据包含不打印的字符)从文件中读出,所以应填:
voidfun(char*filename)rbo
{FILE*fp;inti,j;第二处:判断当前学号是否大于刚读出的学号进行相比,如
STUs[N],t;果大于,则进行交换,所以应填:>。
/**********found**********/第三处:把已排序的结构数据,重新写入文件,所以应填:
fp二fopen(filename,_1__);fwrite。
fread(s,sizeof(STU),N,fp);
fclose(fp);改错题:给定程序M0DI1.C中函数fun的功能是:在字符串
for(i=0;i<N-l;i++)的最前端加入n个*号,形成新串,并且覆盖原串。注意:
for(j=i+l;j<N;j++)字符串的长度最长允许为79。请改正函数fun中指定部位
/**********found**********/的错误,使它能得出正确的结果。注意:不要改动帕in函
数,不得增行或删行,也不得更改程序的结构!}
给定源程序:doublernd()
ttinclude<stdio.h>(statict=29,c=217,m=1024,r=0;
^include<string.h>r=(r*t+c)%m;return((double)r/m);
voiclfun(chars[],intn))
(main()
chara[80],*p;(intage[N],i,d[M];
inti;for(i=0;i<N;i++)age[i]=(int)(115*rnd());
/**********found***********/printf("Theoriginaldata:\n");
s=p;for(i=0;i<N;i++)
for(i=0;i<n;i++)a[i]=;printf((i+l)%10=0?"%4d\n":"%4d”,ageEi]);
doprintf("\n\n");
{a[i]=*p:fun(age,d);
i++;for(i=0;i〈10;i++)printf("%4d——%4d:%4d\n”,i*】0,i*
)10+9,d[i]);
/**********found***********/printfOver100:%4d\n*,d[10]);
while(*p++)NONO(d);
a[i]=0;)
strcpy(s,a);解题思路:本题是统计各年龄段的人数。
}1.初始化各年龄段人数为0。
mainO2.使用for循环以及求出各年龄的十位数字作为存放人数
{intn;chars[80];的地址,如果大于值大于10,则存入d[10]中(大于110
printf("\nEnterastring:");gets(s);岁的人)。
printf('\nThestring\"%s\"\n",s);参考答案:
printf(*\nEntern(numberof*):");scanf("%d",&n);voidfun(int*a,int*b)
fun(s,n);(
printf("\nThestringafterinsert:\"%s\"\n",s);inti,j;
)for(i=0;i<M;i++)b[i]=0;
解题思路:第一处:指针p应指向s,所以应改为:p=s;。for(i=0;i<N;i++)
第二处:死循环,当dowhile循环执行一次,临时变量p(
应该指向字符串的下一位置,所以应改为:while(*p++);。j=a[i]/10;
if(j>10)b[M-1]++;elseb[j]++;
编程题:请编写函数fun,函数的功能是:统计各年龄段的)
人数。N个年龄通过调用随机函数获得,并放在主函数的age)
数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把第05套
10至19岁年龄段的人数放在d[l]中,把20至29岁年龄段填空题:给定程序中,函数fun的功能是将参数给定的字符
的人数放在d[2]中,其余依此类推,把100岁(含100)以上串、整数、浮点数写到文本文件中,再用字符串方式从此文
年龄的人数都放在d[10]中。结果在主函数中输出。注意:本文件中逐个读入,并调用库函数atoi和atof将字符串转
部分源程序在文件PROG1.C中。请勿改动主函数main和其换成相应的整数、浮点数,然后将其显示在屏幕上。请在程
它函数中的任何内容,仅在函数fun的花括号中填入你编写序的下划线处填入正确的内容并把下划线删除,使程序得
的若干语句。出正确的结果。注意:源程序存放在考生文件夹下的
给定源程序:BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include<stdio.h>给定源程序:
(♦defineN50ttinclude<stdio.h>
MefineM11ttinclude<stdlib.h>
voidfun(int*a,int*b)voidfun(char*s,inta,doublef)
/**********found**********/
__1_fp;{for(i=j=0;i<N;i++)
charstr[100],strl[100],str2[100];if(b[i].s>b[j].s)j=i;
intal;doublefl;/**********found**********/
fp=fopen("filel.txt〃,〃w");t(k)=b(j);
fprintf(fp,"%s%d%f\n〃,s,a,f);b[j].s=0;
/**********found**********/)
_2_;returnt;
fp二fopen(〃filel.txt〃,"r");)
/**********found**********/outresult(STUa[],FILE*pf)
fscanf(_3_,"%s%s%s”,str,strl,str2);{inti;
fclose(fp);for(i=0;i<N;i++)
al=atoi(strl);fprintf(pf,"No=%sMark=%d\n",a[i].num,a[i].s);
fl=atof(str2);fprintf(pf,"\n\n");
printf("\nTheresult:\n\n%s%d%f\n*,str,al,fl);)
)main()
main(){STUa[N]={{〃A01〃,81},{〃A02〃,89},{〃A03〃,66},
{chara[10]=〃Hello!”;intb=12345;{〃A04〃,87},{"A05〃,77},{〃A06〃,90},{〃A07〃,79},{“A08",
doublec=98.76;61},{“A09〃,80},{〃A10〃,71});
fun(a,b,c);STU*p0rder;
}inti,m;
解题思路:本题是考察先把给定的数据写入到文本文件中,printf(''*****TheOriginaldata*****\n〃);
再从该文件读出并转换成相应的整数、浮点数显示在屏幕outresult(a,stdout);
±0printf(^\nGivethenumberofthestudentswhohave
第处:定义文本文件类型变量,所以应填:FILE*。betterscore:");
第二处:关闭刚写入的文件,所以应填:fclose(fp)oscanf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌策划及执行策略手册
- 2026年电网数字孪生模型自动校核与更新机制研究
- 2026年食品安全管理体系审核员职业规划
- 2026年海关管理专业学生业务能力与职业发展报告
- 2026年员工晋升通道与职业发展规划
- 2026二建《机电工程管理与实务》简答200问(填空版)
- 吊顶安全施工方案(3篇)
- 流沙洗脸活动方案策划(3篇)
- 耕岩施工方案(3篇)
- 印象食堂活动方案策划(3篇)
- 2026年发展对象党章测试题及答案
- 2026年宁夏葡萄酒与防沙治沙职业技术学院单招职业技能测试题库及答案详解(夺冠)
- 2026年阜阳职业技术学院单招职业技能测试题库附参考答案详解(能力提升)
- 2025 澳大利亚的奶制品产业课件
- 江苏省2026届高三上学期高考模拟考试(二)英语试卷(含解析无听力音频有听力原文)
- 2025年武汉创新投资集团有限公司公开选聘投资专业人员笔试参考题库附带答案详解
- 文化展示设计案例分析
- (正式版)DB51∕T 5066-2018 《四川省居住建筑油烟气集中排放系统应用技术标准》
- 2026年温州永嘉县国有企业面向社会公开招聘工作人员12人考试参考试题及答案解析
- 医疗人员跨境培训体系
- T∕CNCA 127-2025 煤炭建设工程造价参考指标
评论
0/150
提交评论