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

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

1、国家二级 C语言机试(操作题)模拟试卷 88及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是,求出形参 ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符 *补齐,使其与最长的字符串等长。 ss所指字符串数组中共有 M个字符串,且串长 #include #define M 5 #define N 20 void fun(char(*ss)N) int i, j , n , len=0; for(i=0; in)n=len; for(i=0; i #include #include void fun(char*P) int k=0; for(; *p; p+) if(

2、k) /*found*/ if(P=) k =0; /*found*/ *(p)=toupper(*(p一 1) else k=1; msin() char chrStr64; int d ; printf(“nPlease enter an English Sentence within 63 letters: “); gets(chrstr); d=strlen(chmstr); chrStrd= ; chrStrd+1=0; printf(“nnBefore changing: n s“, chrStr); fun(chrStr); printf(“nAfter changing: n

3、s“, chrstr); 三、程序设计题 3 请编写函数 fun,对长度为 7个字符的字符串,除首、尾字符外,将其余 5个字符按 ASCII码降序排列。 例如,原来的字符串为 CEAedca,排序后输出为 CedcEAa。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include #include void fun(char*s, int num) NONO() /*请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 */ char s10 ; FIL

4、E*rf, *wf; int i=0; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “W“); while(i10) fgets(s, 10, rf); s7=0; fun(s, 7); fprintf(wf, “ sn“, s); i+ ; fc10Se(rf); fc10Se(wf); main() char s10; printf(“输入 7个字符的字符串: “); gets(s); fun(s, 7); printf(“n s“, s); NONO(); 国家二级 C语言机试(操作题)模拟试卷 88答案与解析 一、程序填空题 1 【正确答案

5、】 (1)s si (2)n+j (3)1 【试题解析】 函数 fun的功能是求出形参 ss所指字符串数组中最长字符串的长度。 第一空:第一个循环求最长字符串的 长度 len,在第二个循环内在其他字符串的后面补 “*”,使其达到长度 len。在 “for(j=0; jlen-n; j+)”语句中, jlen-n是在字符串的后面填 len-n个 “*,故 n是字符串 ssi的长度,因此第一空应为 “ssi”。 第二空:循环 “for(j=0; jlen-n; j+)”目的是在字符串的后面填 len-n个 “*”。第二空处应为 “n+i”。 第三空:字符串以 “0”结束,因此需在字符串后加结束符,

6、故第三空应为 “1”。 二、程序修改题 2 【正确答案】 (1)if(*p=) (2)*(p一 1)=toupper(*(p一 1); 【试题解析】 函数的功能是将每个单词的最后一个字母改成大写。 (1)第一个错误标识下的 if语句应该是判断字符串中的字符是否是空格,根据“for(; *p; p+)”语句中 for循环条件中 p的定义应该为字符型指针变量, *p是取p所指存取单元的值,所以 “if(p=)”应该改为 “if(*p=)”。 (2)题干中要求是将每个单词的最后一个字母改成大写,所以它的位置应该是挨着空格的前一个字符,应该是指针 p指向字符的前一个位置, “*p-toupper(*(

7、p-1)”是将改动的值赋给了 p所指的空格,所以应该改为 “*(p-1)=toupper(*(p-1); ”且语句未尾应有分号。 三、程序设计题 3 【正确答案】 char t; int i, j; for(i=1; inum一 2; i+) /对 n个元素进行循环选择 for(j=i十 1 ; jnum一 1; j+) if(sisj) /将 stri设为最大值,和剩下的 jinum一 1进行比较 t=si; si=sj; sj=t ; 【试题解析】 选择排序 法中的降序排序,首先从数组中挑选一个最大的元素,把它和第一个元素交换,接着从剩下的 num-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。

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

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

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