[计算机类试卷]国家二级C语言机试(操作题)模拟试卷684及答案与解析.doc

上传人:tireattitude366 文档编号:498661 上传时间:2018-11-29 格式:DOC 页数:7 大小:31KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷684及答案与解析.doc_第1页
第1页 / 共7页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷684及答案与解析.doc_第2页
第2页 / 共7页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷684及答案与解析.doc_第3页
第3页 / 共7页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷684及答案与解析.doc_第4页
第4页 / 共7页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷684及答案与解析.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 684及答案与解析 一、程序填空题 1 程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是从形参 filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到 filename所指的文件中,覆盖原来的文件内容。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #deftne N5 typedef stract stud

2、ent 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; i N-1; i+) for(j=i+1; j N; j+) if(si sno_2_sj sno) t=si; si=sj; sj=t; fp=fopen(filename, “wb“); *found* _3_(S, sizeo

3、f(STU), N, fp); fclose(fp); main() STUN=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; iuti, j; FILE*fp; fp=fopen(“student dat“, “wb“); fwrite(t, sizeof(STU), 5, fp); fclose(fp); pfinff(“ nThe or

4、iginal data: n“); for(j=0; j N; j+) pfinff(“ nNo: ld Name: -8s Scores: “, tj sno, tj name); for(i=0; i 3; i+) pfinff(“ 6 2f“, tj scorei); pfinff(“ n“); fun(“student dat“); pfinff(“ nThe data after sorting: n“); fp=fopen(“student dat“, “rb“); fread(ss, sizeof(STU), 5, fp); fclose(fp); for(j=0; j N; j

5、+) pfinff(“ nNo: 1dName: -8s Scorest“, ssj sno, ssj name); for(i=0; i 3; i+) printf(“ 6 2f“, ssj scorei); printf(“ n“; 二、程序修改题 2 下列给定程序中,函数 fun的功能是:根据输入的三个边长 (整型值 ),判断能否构成三角形。若能构成等边三角形,则返回 3;若是等腰三角形,则返回 2;若能构成三角形则返回 1;若不能,则返回 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #includ

6、e stdio h #include math h int fun(int a, int b, int c) if(a+b c&b+c a&a+c b) if(a=b&b=e) *found* return1; else if(a=b|b=c|a=c) return2; *found* else return3; else return0; void main() int a, b, 12, shape; printf(“ nInput a, b, c: “); seanf(“ d d d“, &a, &b, &c); printf(“ ha= d, b= d, c= d n“, a, b,

7、c); shape=fun(a, b, c); printf(“ nTheshape: d n“, shape); 三、程序设计题 3 请编写函数 fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出 “YES“,否则返回 0,主函数中输出 “NO“。回文是指顺读和倒读都一样的字符串。 例如,字符串 LEVEL是回文,而 字符串 123312就不是回文。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #defineN80 int fun(char*str) main

8、() char sN; FILE*out; char*test=“1234321“, “123421“, “123321“, “abcdCBA“; int i; printf(“Enter a string: “); gets(s); printf(“ n“); puts(s); if(fun(s) printf(“YES n“); else printf(“NO n“); * out=fopen(“out dat“, “w“); for(i=0; i 4; i+) if(fun(testi) fprintf(out, “YES n“); else fprintf(out, “NO n“);

9、felose(out); * 国家二级 C语言机试(操作题)模拟试卷 684答案与解 析 一、程序填空题 1 【正确答案】 (1)“r“ (2) (3)fwrite 【试题解析】 填空 1:题目中要求从形参 filename所指的文件中读入学生的数据,以此可以看出本空应该填写 “r“。 填空 2:此处的 if语句是比较学号的大小,如果学号大就和学号小的换位,以此本空填写。 填空 3:题目要求所有的学生数据均以二进制方式输出到文件中,因此本空填写fwrite。 二、程序修改题 2 【正确答案】 (1)return3; (2)return1; 【试题解析】 (1)变量 a、 b、 c分别 表示三条

10、边,当三边相等 (a=b&b=c)时,返回 3。 (2)在能构成三角形的前提下,如果不能构成等边三角形或等腰三角形,则返回1。 三、程序设计题 3 【正确答案】 int fun(char*str) int i, n=0, fg=1; char*p=str; while(*p) *将指针 p置位到字符串末尾,并统计字符数 * n+; p+; for(i=0; i n 2; i+) *循环比较字符 * if(stri=strn-1-i); *相同,什么都不做 * else fg=0; break; *不同,直接跳出循环 * return fg; 【试题解析】 判断回文就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,以此类推,直到中间的字符。如果比较的结果都相同,那么这个字符串就是回文,否则不是。程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。

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

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1