




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机知识点讲解(精选)制作人:王淑琴2008年8月上机考试时间:90分钟题型:程序填空、程序改错、程序设计分值:程序填空(30分)、程序改错(30分)、程序设计(40分)上机考试题目特点填空题:下划线及序号指定改错题:错误行是指定的程序设计:补充自定义函数体讲解内容(上机)程序填空程序修改程序设计程序填空——知识点链表结构体数组文件多项式求和二维数组冒泡排序素数进制转换用指针处理字符串返回链表1给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0;p=h->next;/**********found**********/while(p!=___1___){n++;/**********found**********/if(p->data==ch)return___2___;nelsep=p->next;}return0;}main(){SLIST*head;intk;charch;chara[N]={'m','p','g','a','w','x','r','d'};head=creatlist(a);outlist(head);printf("Enteraletter:");scanf("%c",&ch);/**********found**********/k=fun(___3___);if(k==0)printf("\nNotfound!\n");elseprintf("Thesequencenumberis:%d\n",k);}SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("\nThelistisNULL!\n");else{printf("\nHead");do{printf("->%c",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}链表2给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!
#include<>#include<>#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p){/**********found**********/s+=p->___1___;/**********found**********/p=p->___2___;}returns;}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);/**********found**********/
printf("\nsum=%d\n",fun(___3___));}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}结构体数组人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#include<>#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/**********found**********/___1___fun(STU*std,char*num){inti;STUa={"",9999,99,99};for(i=0;i<N;i++)/**********found**********/if(strcmp(___2___,num)==0)/**********found**********/return(___3___);returna;}main(){STUstd[N]={{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};STUp;charn[10]="666666";p=fun(std,n);if(p.num[0]==0)printf("\nNotfound!\n");else{printf("\nSucceed!\n");printf("%s%);}}结构体数组人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#defineN8typedefstruct{intnum;intyear,month,day;}STU;intfun(STU*std,STU*k,intyear){inti,n=0;for(i=0;i<N;i++)/**********found**********/if(___1___)/**********found**********/k[___2___]=std[i];/**********found**********/return(___3___)}main(){STUstd[N]={{1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};STUk[N];inti,n,year;printf("Enterayear:");scanf("%d",&year);n=fun(std,k,year);if(n==0)printf("\nNopersonbornin%d\n",year);else{printf("\nThesepersonsbornin%d\n",year);for(i=0;i<n;i++)printf("%d%d-%d-%d\n",k[i].num,k[i].year,k[i].month,k[i].day);}}文件给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为的二进制文件中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#include<>#defineN5typedefstruct{intnum;charname[10];chartel[10];}STYPE;voidcheck();/**********found**********/intfun(___1___*std){/**********found**********/___2___*fp;inti;if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);printf("\nOutputdatatofile!\n");
for(i=0;i<N;i++)/**********found**********/fwrite(&std[i],sizeof(STYPE),1,___3___);fclose(fp);return(1);}main(){STYPEs[10]={{1,"aaaaa","111111"},{2,"bbbbb","222222"},{3,"ccccc","333333"},{4,"ddddd","444444"},{5,"eeeee","555555"}};intk;k=fun(s);if(k==1){printf("Succeed!");check();}elseprintf("Fail!");}voidcheck(){FILE*fp;inti;STYPEs[10];if((fp=fopen("myfile5.dat","rb"))==NULL){printf("Fail!!\n");exit(0);}printf("\nReadfileandoutputtoscreen:\n");printf("\nnumnametel\n");for(i=0;i<N;i++){fread(&s[i],sizeof(STYPE),1,fp);printf("%6d%s%s\n",s[i].num,s[i].name,s[i].tel);}fclose(fp);}文件程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,longsno){FILE*fp;STUn;inti;fp=fopen(filename,"rb+");/**********found**********/while(!feof(fp)){fread(&n,sizeof(STU),1,fp);/**********found**********/
==sno)break;}if(!feof(fp)){for(i=0;i<3;i++)n.score[i]+=3;/**********found**********/ fseek(fp,-1L*(long)sizeof(STU),SEEK_CUR);fwrite(&n,sizeof(STU),1,fp);}fclose(fp);}main(){STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}},ss[N];inti,j;FILE*fp;fp=","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n");
fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j<N;j++){printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("\n");}fun("student.dat",10003);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nThedataaftermodifing:\n");for(j=0;j<N;j++){printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("\n");}}多项式求和(循环)给定程序中,函数fun的功能是:计算
的前n项之和。若,n=15时,函数值为:。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!doublefun(doublex,intn){doublef,t;inti;/**********found**********/f=___1___;t=-1;for(i=1;i<n;i++){/**********found**********/t*=(___2___)*x/i;/**********found**********/f+=___3___;}returnf;}main(){doublex,y;x=2.5;y=fun(x,15);printf("\nTheresultis:\n");
printf("x=%-12.6fy=%-12.6f\n",x,y);}多项式求和给定程序的功能是:在X数组中放入n个采样值,计算并输出方差值。其中,例如n=8,输入:、、、、、、、时,结果应为:。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>doublefun(doublex[],intn){intj;doublexa=0.0,s;/************found************/for(j=0;j<___1___;j++)xa+=x[j]/n;/************found************/s=___2___;for(j=0;j<n;j++)/************found************/s+=(x[j]-xa)*(x[j]-xa)/___3___;returns;}main(){doublex[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};printf("%f\n",fun(x,8));}二维数组及双循环给定程序的功能是根据形参m(2≤m≤9),在二维数组中存放一张m行m列的表格,由main()函数输出。例如,若输入2|若输入4则输出:|则输出:12|123424|2468|36912|481216
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#defineM10inta[M][M]={0};fun(inta[][M],intm){intj,k;for(j=0;j<m;j++)for(k=0;k<m;k++)/**************found**************/___1___=(k+1)*(j+1);}main(){inti,j,n;printf("Entern:");scanf("%d",&n);/**************found**************/fun(___2___);for(i=0;i<n;i++){for(j=0;j<n;j++)/**************found**************/printf("%4d",___3___);printf("\n");}}冒
泡
排
序main(){inta[10];inti,j,n;printf("input10numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("Thesortednumber:\n");for(i=0;i<10;i++)printf("%d",a[i]);}冒泡排序给定程序功能是用冒泡法对6个字符串进行排序。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#include<>#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){for(j=i+1;j<6;j++){/**************found**************/if(strcmp(*(pstr+i),___1___)>0){p=*(pstr+i);/**************found**************/pstr[i]=___2___;/**************found**************/*(pstr+j)=___3___;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("Enter6string(1stringateachline)\n”);for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}素数#include<>#include<>voidmain(){ intm,j,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k) printf("%d是素数\n"); else printf("%不是素数\n");}素数问题函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!intfun(intn){inti,j,count=0;printf("\nTheprimenumberbetween3to%d\n",n);
for(i=3;i<=n;i++){/**********found**********/for(___1___;j<i;j++)/**********found**********/if(___2___%j==0)break;/**********found**********/if(___3___>=i){count++;printf(count%15?"%5d":"\n%5d",i);}}returncount;}main(){intn=20,r;r=fun(n);printf("\nThenumberofprimeis:%d\n",r);}素数问题给定程序的功能是计算并输出high以内最大的10个素数之和。high函数由主函数传给fun函数。若high的值为100,则函数的值为732。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#include<>intfun(inthigh){intsum=0,n=0,j,yes;/************found************/while((high>=2)___1___(n<10)){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/************found************/yes=0;___2___;}if(yes){sum+=high;n++;}/************found************/___3___;}returnsum;}main(){printf("%d\n",fun(100));}进制转换问题给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>voidfun(intm,intk){intaa[20],i;for(i=0;m;i++){/**********found**********/aa[i]=1;/**********found**********/m/=2;}for(;i;i--)/**********found**********/printf("%d",3);}main(){intb,n;printf("\nPleaseenteranumberandabase:\n");scanf("%d%d",&n,&b);fun(n,b);}字符串处理给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#defineN5#defineM10/**********found**********/voidfun(char(*ss)__1__,intk){inti=0;/**********found**********/while(i<2){/**********found**********/ss[i][k]=__3__;i++;}}main(){charx[N][M]={"Create","Modify","Sort","skip","Delete"};inti;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");fun(x,4);printf("\nThestringafterdeleted:\n\n");
for(i=0;i<N;i++)puts(x[i]);printf("\n");}字符串处理给定程序的功能是将在字符串s中出现、而未在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。例如:当s="112345",t="2467"时,u中的字符串为"1135"。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>#include<>voidfun(char*s,char*t,char*u){inti,j,sl,tl;sl=strlen(s);tl=strlen(t);for(i=0;i<sl;i++){for(j=0;j<tl;j++)/************found************/if(s[i]==t[j])___1___;if(j>=tl)/************found************/*u++=___2___;}/************found************/___3___='\0';}main(){chars[100],t[100],u[100];printf("\nPleaseenterstrings:");scanf("%s",s);printf("\nPleaseenterstringt:");scanf("%s",t);fun(s,t,u);printf("theresultis:%s\n",u);}字符串处理给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的中。不得增行或删行,也不得更改程序的结构!#include<>voidfun(char*s){inti,j=0,k=0;chart1[80],t2[80];for(i=0;s[i]!='\0';i++)if(s[i]>='0'&&s[i]<='9'){/**********found**********/t2[j]=s[i];___1___;}elset1[k++]=s[i];t2[j]=0;t1[k]=0;/**********found**********/for(i=0;i<k;i++)___2___;/**********found**********/for(i=0;i<___3___;i++)s[k+i]=t2[i];}main(){chars[80]="ba3a54j7sd567sdffs";printf("\nTheoriginalstringis:%s\n",s);fun(s);printf("\nTheresultis:%s\n",s);}上机知识点-程序改错语法错误变量的声明,关系运算符错变量名字错,缺括号函数返回值,return后的表达式缺分号scanf()形式错关键字出现大写字母逻辑错误循环的上限或条件条件缺括号变量的赋值问题形参变量类型或形式错字符串结束标志空格的表示使用指针表示变量变量缺少赋初值或赋值错误宏定义的替换返回循环条件错给定程序中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!fun(intn,int*a){inti,j,p,t;for(j=0;j<n-1;j++){p=j;/************found************/for(i=j+1;i<n-1;i++)if(a[p]>a[i])/************found************/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf("%4d",*z);if(!(i%10))printf("\n");}printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;system("cls");printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);fun(n,aa);printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}函数形参类型错给定程序中,函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为:7654321时,t中的数为:642。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<>#include<>#include<>/************found************/voidfun(longs,longt){longs1=10;s/=10;*t=s%10;/************found************/while(s<0){s=s/100;*t=s%10*s1+*t;s1=s1*10;}}main(){longs,t;system("cls");printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}函数形参形式错给定程序中函数fun的功能是:求两个形参的乘积和商数,并通过形参返回调用程序。例如输入:61.82和,输出为:。请改正fun函数中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<>#include<>#include<>/**********found**********/voidfun(doublea,b,doublex,y){/**********found**********/x=a*b;y=a/b;}main(){doublea,b,c,d;system("cls");printf("Entera,b:");scanf("%lf%lf",&a,&b);fun(a,b,&c,&d);printf("c=%fd=%f\n",c,d);}字符串的结束标志给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为:"ABCD"时,则t所指字符串中的内容应为:"ABCDDCBA"。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<>#include<>#include<>#include<>/************found************/voidfun(chars,chart){inti,d;d=strlen(s);for(i=0;i<d;i++)t[i]=s[i];for(i=0;i<d;i++)t[d+i]=s[d-1-i];/************found************/t[2*d-1]='\0';}main(){chars[100],t[100];sys
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国水净化行业市场发展前瞻及投资战略研究报告
- 2025-2030中国气体膜市场供需规模与应用发展趋势前景研究报告
- 2025-2030中国民宿行业发展规划及前景战略预测研究报告
- 2025-2030中国欧米茄6行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国橡胶加工油市场运行态势与未来竞争力调研研究报告
- 2025-2030中国棉制拖鞋行业供需分析及发展前景研究报告
- 2025-2030中国桌面秤行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国木犀草苷行业市场现状分析及竞争格局与投资发展研究报告
- 2025-2030中国有机硅行业市场发展分析及投资前景与投资风险研究报告
- 2025-2030中国智能门锁行业发展分析及发展趋势预测报告
- AQ 1066-2008 煤层瓦斯含量井下直接测定方法(正式版)
- SL-T+62-2020水工建筑物水泥灌浆施工技术规范
- 外挂悬挑式花篮盘扣脚手架安全专项施工方案7.17
- 日结工协议书日结工用工协议
- DL-T5344-2018电力光纤通信工程验收规范
- 人教版高中物理必修二同步练习及答案
- 装配式混凝土结构施工重点难点分析及对策
- 福建省泉州市丰泽区泉州实验中学2023-2024学年七年级下学期期中数学试题(无答案)
- 2024年4月自考00540外国文学史试题及答案含评分标准
- 建筑施工大型机械设备安全管理培训(汇编)
- 设计服务方案投标
评论
0/150
提交评论