2010上机带题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第01套给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:为739。第一处:10。第二处:0。第三处:x。**************************给定程序MODI1.C中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。第一处:应改为:if(n==0)。第二处:语句后缺少分号。**************************请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串-1234,则函数把它转换为整数值-1234。函数fun中给出的语句仅供参考。参考答案:#includestdio.h#includestring.hlongfun(char*p){inti,len,t;/*len为串长,t为正负标识*/longx=0;len=strlen(p);if(p[0]=='-'){t=-1;len--;p++;}elset=1;while(*p)x=x*10-48+(*p++);returnx*t;}main()/*主函数*/{chars[6];longn;printf(Enterastring:\n);gets(s);n=fun(s);printf(%ld\n,n);NONO();}NONO()FILE*fp,*wf;inti;chars[20];longn;fp=fopen(c:\\test\\in.dat,r);wf=fopen(c:\\test\\out.dat,w);for(i=0;i10;i++){fscanf(fp,%s,s);n=fun(s);fprintf(wf,%ld\n,n);}fclose(fp);fclose(wf);}第02套:给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。解题思路:第一处:定义文本文件类型变量,所以应填:FILE*。第二处:判断文件是否结束,所以应填:fp。第三处:显示读出的字符,所以应填:ch。**************************给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。解题思路:第一处:要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j来控制新字符串的位置,所以应改为:s[j++]=s[i];。第二处:置新字符串的结束符,所以应改为:s[j]='\0';.**************************请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:则字符串中的内容应是:WSHWSHWSH。参考答案:voidfun(chars[][N],char*b){inti,j,n=0;for(i=0;iN;i++)/*请填写相应语句完成其功能*/{for(j=0;jM;j++){b[n]=s[j][i];n=i*M+j+1;}}b[n]='\0';}第03套:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。解题思路:第一处:filename。第二处:fp。第三处:fp。**************************给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。解题思路:第一处:所以应改为:p=(NODE*)malloc(sizeof(NODE));第二处:在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置,最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。**************************请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。参考答案:intfun(char*s){intk=1;while(*s){if(*s=='')k++;s++;}returnk;}第04套:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。解题思路:第一处:rb。第二处:。第三处:fwrite。**************************给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。解题思路:第一处:指针p应指向s,所以应改为:p=s;。第二处:死循环,当dowhile循环执行一次,临时变量p应该指向字符串的下一位置,所以应改为:while(*p++);。**************************请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。参考答案:voidfun(int*a,int*b){inti,j;for(i=0;iM;i++)b[i]=0;for(i=0;iN;i++){j=a[i]/10;if(j10)b[M-1]++;elseb[j]++;}}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);}第05套:给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮点数显示在屏幕上。第一处:所以应填:FILE*。第二处:所以应填:fclose(fp)。第三处:所以应填:fp。**************************给定程序MODI1.C中函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。解题思路:第一处:语句最后缺少分号。第二处:应该使用方括号,而不是圆括号。像此类,使用编译,即可发现。**************************请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2223445666677899101010。删除后,数组中的内容应该是:2345678910。参考答案:intfun(inta[],intn){inti,j=1,k=a[0];for(i=1;in;i++)if(k!=a[i]){a[j++]=a[i];k=a[i];}a[j]=0;returnj;}第06套:给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000解题思路:第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。第二处:当i等于1时,则返回f1函数的值,所以应填:f1。第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。**************************给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。解题思路:第一处:试题要求返回字符串的首地址,所以应改为:char*fun(char*s,char*t)第二处:取字符串指针ss的下一个位置,所以应改为:ss++;。第三处:取字符串指针tt的下一个位置,所以应改为:tt++;。**************************请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC。解题思路:本题是考察字符串的操作。1.由于函数fun1是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。2.利用循环for语句来操作多少个字符(m)需要循环左移。参考答案:voidfun1(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/{inti;chart;t=w[0];for(i=0;istrlen(w)-1;i++)w[i]=w[i+1];w[strlen(w)-1]=t;}voidfun(char*w,intm)/*可调用fun1函数左移字符*/{inti;for(i=0;im;i++)fun1(w);}第07套:程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。解题思路:本题是利用结构体变量存储了一名学生的信息。第一处:tt变量在函数体fun已经使用,所以应填:tt。第二处:利用循环分别输出学生的成绩数据,所以应填:tt.score[i]。第三处:函数的调用,所以应填:std。**************************给定程序MODI1.C中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。解题思路:第一处:外循环每循环一次,把当前位置i赋值给m,所以应改为:m=i;。第二处:通过内循环来找出最大的一个数的位置k,所以应改为:if(a[k]a[m])m=k;。**************************请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23。注意:部分源程序存在文件PROG1.C中。参考答案:unsignedfun(unsignedw){if(w10000)w%=10000;elseif(w1000)w%=1000;elseif(w100)w%=100;elseif(w10)w%=10;returnw;}第08套:给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。解题思路:本题是利用结构体存储学生记录并由实参ss返回。第一处:实参ss是一个结构型指针变量,所以应填:STU。第二处:该学生的各科成绩都乘以一个系数

1 / 87
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功