[计算机软件及应用]c语言笔试.doc

上传人:音乐台 文档编号:1991494 上传时间:2019-01-28 格式:DOC 页数:31 大小:101KB
返回 下载 相关 举报
[计算机软件及应用]c语言笔试.doc_第1页
第1页 / 共31页
[计算机软件及应用]c语言笔试.doc_第2页
第2页 / 共31页
[计算机软件及应用]c语言笔试.doc_第3页
第3页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]c语言笔试.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]c语言笔试.doc(31页珍藏版)》请在三一文库上搜索。

1、一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 5typedef struct student long sno;char name10;float score3; STU;void fun(

2、char *filename, STU n)FILE *fp;/*found*/fp = fopen(_1_, rb+);/*found*/fseek(_2_, -(long)sizeof(STU), SEEK_END);/*found*/fwrite(&n, sizeof(STU), 1, _3_);fclose(fp);main()STU tN= 10001,MaChao, 91, 92, 77, 10002, CaoKai, 75, 60, 88,10003,LiSi, 85, 70, 78, 10004, FangFang, 90, 82, 87,10005,ZhangSan, 95,

3、 80, 88;STU n=10006,ZhaoSi, 55, 70, 68, ssN;int i,j; FILE *fp;fp = fopen(student.dat, wb);fwrite(t, sizeof(STU), N, fp);fclose(fp);fp = fopen(student.dat, rb);fread(ss, sizeof(STU), N, fp);fclose(fp);printf(nThe original data :nn);for (j=0; jprintf(nNo: %ld Name: %-8s Scores: ,ssj.sno, ssj.name);for

4、 (i=0; i3; i+) printf(%6.2f , ssj.scorei);printf(n);fun(student.dat, n);printf(nThe data after modifing :nn);fp = fopen(student.dat, rb);fread(ss, sizeof(STU), N, fp);fclose(fp);for (j=0; jprintf(nNo: %ld Name: %-8s Scores: ,ssj.sno, ssj.name);for (i=0; inext=NULL;for(i=1; idata=rand()%m; s-next=p-n

5、ext;p-next=s; p=p-next;/*found*/return p;outlink(NODE *h)NODE *p;p=h-next;printf(nnTHE LIST :nn HEAD );while(p)printf(-%d ,p-data);p=p-next;printf(n);main()NODE *head;head=Creatlink(8,22);outlink(head);解题答案:/*found*/p=(NODE *)malloc(sizeof(NODE);/*found*/return h;三、程序题:请编写函数fun, 函数的功能是:统计一行字符串中单词的个数

6、,作为函数值返回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干个空格隔开, 一行的开始没有空格。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#include#define N 80int fun(char *s)main()char lineN; int num=0;void NONO ();printf(Enter a string :n); gets(line);num=fun(line);printf(The number of word is

7、: %dnn,num);NONO();void NONO ()/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */FILE *rf, *wf ; int i, num ; char lineN, *p ;rf = fopen(in.dat,r);wf = fopen(out.dat,w);for(i = 0 ; i 0)s = s/100;*t = s * sl + *t;/*found*/sl = sl*100;main()long s, t;printf(nPlease enter s:); scanf(%ld, &s);fun(s, &t);print

8、f(The result is: %ldn, t);解题答案:/*found*/void fun (long s, long *t)/*found*/sl=sl*10;*三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上, b数的十位 和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524。注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

9、给定源程序:#includevoid fun(int a, int b, long *c)main()int a,b; long c;void NONO ();printf(Input a, b:);scanf(%d,%d, &a, &b);fun(a, b, &c);printf(The result is: %ldn, c);NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *rf, *wf ;int i, a,b ; long c ;rf = fopen(in.dat, r);wf = fopen(out.dat,w)

10、;for(i = 0 ; i 10 ; i+) fscanf(rf, %d,%d, &a, &b);fun(a, b, &c);fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c);fclose(rf);fclose(wf);解题答案:*c=(b/10)*1000+(a)*100+(b)*10+(a/10);一、填空题:给定程序中,函数fun的功能是:将自然数110以及它们的平方根写到名为 myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.

11、C中。 不得增行或删行,也不得更改程序的结构!给定源程序:#include#includeint fun(char *fname)FILE *fp; int i,n; float x;if(fp=fopen(fname, w)=NULL) return 0;for(i=1;iai)/*found*/t=i;if (p!=j)t = aj; aj = ap; ap = t;putarr(int n, int *z)int i;for (i = 1; i = n; i+, z+)printf(M, *z);if (!(i) printf(n); printf(n);main()int aa20=9

12、,3,0,4,1,2,5,6,8,10,7, n=11;printf(nnBefore sorting %d numbers:n, n); putarr(n, aa);fun(n, aa);printf(nAfter sorting %d numbers:n, n); putarr(n, aa);解题答案:#include#includefun (int n, int *a)int i, j, p, t;for (j = 0; jp = j;/*found*/for(i=j+1;i/*found*/p=i;*三、程序题:函数fun的功能是: 将两个两位数的正整数a、b合并形成一个整数放在c中。

13、合并的方式是: 将a数的十位和个位数依次放在c数的个位和百位上, b数的十位 和个位数依次放在c数的十位和千位上。例如, 当a=45, b=12时, 调用该函数后, c=2514。注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#includevoid fun(int a, int b, long *c)main()int a,b; long c;void NONO ();printf(Input a, b:);scanf(%d,%d, &a, &b);fu

14、n(a, b, &c);printf(The result is: %ldn, c);NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *rf, *wf ;int i, a,b ; long c ;rf = fopen(in.dat, r);wf = fopen(out.dat,w);for(i = 0 ; i 10 ; i+) fscanf(rf, %d,%d, &a, &b);fun(a, b, &c);fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c);fclose(rf);fclose(wf

15、);解题答案:*c=(b)*1000+(a)*100+(b/10)*10+a/10;一、填空题:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 5type

16、def struct student long sno;char name10;float score3; STU;void fun(char *filename)FILE *fp; int i, j;STU sN, t;/*found*/fp = fopen(filename, _1_);fread(s, sizeof(STU), N, fp);fclose(fp);for (i=0; ifor (j=i+1; j/*found*/if (si.sno _2_ sj.sno)t = si; si = sj; sj = t;fp = fopen(filename, wb);/*found*/_

17、3_(s, sizeof(STU), N, fp); /* 二进制输出 */fclose(fp);main()STU tN= 10005,ZhangSan, 95, 80, 88, 10003,LiSi, 85, 70, 78,10002,CaoKai, 75, 60, 88, 10004,FangFang, 90, 82, 87,10001,MaChao, 91, 92, 77, ssN;int i,j; FILE *fp;fp = fopen(student.dat, wb);fwrite(t, sizeof(STU), 5, fp);fclose(fp);printf(nnThe ori

18、ginal data :nn);for (j=0; jprintf(nNo: %ld Name: %-8s Scores: ,tj.sno, tj.name);for (i=0; i3; i+) printf(%6.2f , tj.scorei);printf(n);fun(student.dat);printf(nnThe data after sorting :nn);fp = fopen(student.dat, rb);fread(ss, sizeof(STU), 5, fp);fclose(fp);for (j=0; jprintf(nNo: %ld Name: %-8s Score

19、s: ,ssj.sno, ssj.name);for (i=0; i sj.sno)/*第三空*/fwrite(s, sizeof(STU), N, fp); /* 二进制输出 */*二、改错题:给定程序MODI1.C中函数fun的功能是: 在字符串的最前端加入n个*号, 形成新串, 并且覆盖原串。注意: 字符串的长度最长允许为79。请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include#includevoid fun (char s, int n)char a80 , *p;int i;/

20、*found*/s=p;for(i=0; idoai=*p;i+;/*found*/while(*p+)ai=0;strcpy(s,a);main()int n; char s80;printf(nEnter a string : ); gets(s);printf(nThe string %sn,s);printf(nEnter n (number of *) : ); scanf(%d,&n);fun(s,n);printf(nThe string after insert : %s n ,s);解题答案:/*found*/p=s;/*found*/while(*p+);*三、程序题:请编

21、写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d0中,把10至19岁年龄段的人数放在d1中,把20至29岁年龄段的人数放在d2中, 其余依此类推, 把100岁 (含100)以上年龄的人数都放在d10中。结果在主函数中输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#define N 50#define M 11void fun(int *a, int *b)double rnd()st

22、atic t=29,c=217,m=1024,r=0;r=(r*t+c)%m; return(double)r/m);main()int ageN, i, dM;void NONO (int dM);for(i=0; iprintf(The original data :n);for(i=0;iprintf(nn);fun(age, d);for(i=0;i10;i+)printf(M-M : Mn,i*10,i*10+9,di);printf(Over 100 : Mn,d10);NONO(d);void NONO(int dM)/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,

23、输出数据,关闭文件。 */FILE *wf ; int i ;wf = fopen(out.dat,w);for(i = 0 ; i 10 ; i+) fprintf(wf, M-M : Mn, i*10, i*10+9, di);fprintf(wf, Over 100 : Mn, d10);fclose(wf);参考答案:void fun( int *a, int *b)int i, j ;for(i = 0 ; i M ; i+) bi = 0 ;for(i = 0 ; i 10) bM - 1+ ; else bj+ ;double rnd() static t=29,c=217,m=

24、1024,r=0;r=(r*t+c)%m; return(double)r/m);一、填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插 入到链表中,插入后各结点数据域的值仍保持递增有序。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 8typedef struct listint data;struct list *next; SLIST;void fun(SLIST *h, int x)SLIST *p, *q, *s;s=(SLIST *)malloc(sizeof(SLIST);/*found*/s-data=_1_;q=h;p=h-next;while(p!=NULL & xp-data) /*found*/q=_2_;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1