1、 1 2017 年 3 月全国计算机等级考试 二级 C 语言上机题库 100 套 ( 从光碟拷贝出来的最 完整版) (可以拷贝在 U盘里,然后 ctrl+F搜索,百分百有答案,祝考试成功) 第一套 1. 程序 填 空 给 定程序中,函 数 fun 的功能是: 计 算下式前 n项 的和作 为 函 数值 返回。例如: 当 形 参 n 的 值为 10 的时 ,函 数 返回: 9.6125588。 第一 处 s=0; 第二 处 for(i=1;i=eps) s+=t;n+;t=t*n/(2.0*n+1) ; return(s*2.0); 第二套 1. 程序 填 空 给 定程序中已建立一 个带 有 头结
2、 点的 单 向 链 表,链 表中的各 结 点按 数 据域 递 增有序 连 接。函 数 fun 的功能是: 删 除 链 表中 数 据域 值 相同的 结 点,使之只保留一个 。 第一 处 free(q); 第二 处 q=p-next; 第三 处 q=q-next; 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是:用 选择 法 对数 组 中的 n 各元素按 从 小到大的 顺 序 进 行排序。 /*found*/ p=j; /*found*/ p=i; 3. 程序 设计 请编写 一 个 fun 函 数 , 它 的功能是:求出 1 到 m 之 间(含 m)能被 7 或 11 整除
3、的所有整 数 放在 数组 a 中,通 过 n 返回 这 些 数 的 个数 。 void fun(int m,int *a,int *n) int i; *n=0; for(i=7;idata=ch)return n; 2 第三 处 k=fun(head,ch); 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是: 删 除p 所指字符串的所有空白字符(包括制表符、回 车 符及换 行符)。 输 入字符串 时 用 #结 束 输 入。 /*found*/ for(i=0,t=0;pi;i+) /*found*/ ct=0; 3. 程序 设计 请编写 一 个 函 数 fun, 将
4、ss 所指字符串中所有下 标为 奇 数 位置上的字母 转换为 大 写 (若 该 位置上不是字母, 则 不 转换 )。 void fun(char *ss) int i; for(i=1;i=a /*found*/ while(qp) 3 程序 设计 学 生的 记录 由 学号 和成 绩组 成, N名 学 生的 数 据已在主函 数 中放入 结构 体 数组 s中, 请编写 了函 数 fun,它 的功能是:把指定分 数 范 围内 的 学 生 数 据放在 b 所指的 数组 中,分 数 范 围内 的 学 生人 数 由函 数值 返回。 int fun(STREC *a,STREC *b,int l,int
5、h) int i,j=0; for(i=0;i=1 第三 处 return a; 2. 程序修改 给 定程序 MODI1.C中函 数 fun 的功能是: 从 N个 字符串中找出最 长 的那 个 串, 并将 其地址作 为 函 数值返回。各字符串在主函 数 中 输 入, 并 放在一 个 字符串 数组 中。 /*found*/ char *fun(char (*sq)M) /*found*/ return sp; 3. 程序 设计 函 数 fun 的功能是: 将 a、 b 中的 两 位正整 数 合并 形成一 个 新的整 数 放在 c 中。合 并 的方式是: 将 a 中的十位和 个 位依次放在 变 量
6、 c 的百位和 个 位上, b 中的十位和 个 位 数 依次放在 变 量 c 的十位和千位上。 #include void fun(int a,int b,long *c) *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10; 3 第八套 1. 程序 填 空 函 数 fun 的功能是: 将 形 参观 者工所指 数组 中的前半部分元素中的 值 和后半部分元素中的 值对换 。形 参 n中存放 数组 中 数 据的 个数 ,若 n 为 奇 书 , 则 中 间 元素不动 。 第一 处 p=(n%2=0)?n/2:n/2+1; 第二 处 ai=ap+i; 第三 处 ap+i=
7、t; 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是:把主函 数 中 输 入的三 个数 ,最大的放在 a 中,最小的放在c 中,中 间 的放在 b 中。 /*found*/ float k; /*found*/ if(*aai.s) j=0; bj+=ai;min=ai.s; else if(min=ai.s) bj+=ai; return j; 4 第十一套 1. 程序 填 空 给 定程序中,函 数 fun 的功能是: 计 算形 参 x 所指 数组 中 N个数 的平均 值 ,( 规 定所有 数 均 为 正 数 ), 将所指 数组 中大于平均 值 的 数 据移至 数 据
8、的前部,小于等于平均 数 的移至 x 所指 数组 的后部,平均 值 作 为 函 数值返回,在主函 数 中 输 出平均 值 和移 动 后的 数 据。 第一 处 av=s/N; 第二 处 yj+=xi;xi=-1; 第三 处 if(xi!=-1) yj+=xi; 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是: 读入一行英文文本行, 将 其中每 个单词 的第一 个 字母改成大 写 ,然后 输 出次文本行( 这 里的“ 单词 ”是指由空格隔开 的字符串)。 /*found*/ #include /*found*/ upfst (char *p) 3. 程序 设计 程序定 义
9、了 NN的二 级数组 , 并 在主函 数 中 赋值 , 请编写 函 数 fun,函 数 的功能是:求出 数组 周 边 元素的平均 值并 作出函 数值饭给 主函 数 中的 s。 double fun(int wN) int i,j,n=0; double sum=0; for(i=0;i void fun(int a,int b,long *c) *c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10); 第十三套 1. 程序 填 空 给 定程序中,函 数 fun 的功能是:找出 N*N 矩阵 中每列元素中的最大 值 , 并 按 顺 序一次存放于形 参 b所指的一 维
10、数组 中。 第一 处 bi=a0i; 第二 处 if (bi #define MAX100 int fun(int lim,int aaMAX) int i,j,k=0; for(i=2;i(i/2)aak+=i; return k; 第十四套 1. 程序 填 空 函 数 fun 的功能是 进 行字母 转换 。若形 参 ch中小 写 英文字母, 则转换 成相 应 的大 写 英文字母;若形 参ch中是大 写 英文字母, 则转换 成相 应 的小 写 英文字母;并将转换 的 结 果作 为 函 数值 返回 。 第一 处 if(ch=a) for(i=0;i=0 *n=0; for(i=7;i0.000
11、001); return x1; 第十九套 1. 程序 填 空 给 定程序中,函 数 fun 的功能是: 将 a 所指的 35 矩 阵 中第 k 列的元素左移到第 0 列,第 k 列以后的每列元素行依次左移,原 来 左 边 的各列依次 绕 到右 边 。 第 1处 for(p=1;p=num) /*found*/ t=s/n 3. 程序 设计 请编写 一 个 函 数 void fun( char a ,char b ,int n),其功能是: 删 除一 个 字符串指定下 标 的字符。其中, a 指向原字符串, 删 除指定字符后的字符串放在 b 所指的 n 中存入指定的下 标 。 viod fun
12、 (char a ,char b,int n) strncpy (b,a,n); bn=0; strcat(b,a+n+1); 第二十一套 1. 程序 填 空 给 定程序中,函 数 fun 的功能是:在形 参 ss 所指字符串 数组 中, 将 所有串 长 超 过 k 的字符串右 边 的字符 删 去,只保留左 边 的 k 个 字符。 ss 所指字符串 数组 中共有 N个 字符串,且串小于 M。 第一 处 void fun(char (*ss)M, int k) 第二 处 while (in) i=n;j=k; for(;aj!=0;j+) ai+=aj; ai=0; 第二十二套 1. 程序 填
13、空 给 定程序中,函 数 fun 的功能是: a 所指 43矩 阵 中第 k 行 的元素 与 第 0 行元素交 换 。例如:有下列矩 阵 1 2 3 4 5 6 7 8 9 10 11 12 若 k 为 2,程序 执 行 结 果 为 7 8 9 4 5 6 1 2 3 10 11 12 第一 处 void fun(int (*a)N,int k) 第二 处 for(i=0;itj+1) 3. 程序 设计 请编写 函 数 fun,函 数 的功能是: 将 ss 所指字符串中所有下 标为 奇 数 位置上的字母 转换为 大 写 (若 该位置上不是字母, 则 不 转换 )。 void fun(char
14、*ss) char *p=ss; inr i=0; while(*p) if(i%2)n-) *q+=*; *q=0; 第二十五套 1. 程序 填 空 用 筛选 法可得到 2 n( nmaxlen) maxlen=strlen(ai); k=i; *max=ak; 第二十七套 1. 程序 填 空 函 数 fun 的功能是 计 算 f( x) =1+x-2/2! +3/3!-4/4! +的前 n 项 和。若 x=2.5,n=15时 ,函 数值为 1.917914。 第一 处 f=1; 第二 处 t*=(-1)*x/i; 第三 处 f+=t; 2. 程序修改 给 定程序 MODI1.C 中函 数
15、fun 的功能是: 从三 个红 球, 5 个 白球, 6 个 黑球中任意取出 8 个 作 为 一组 , 进 行 输 出。在 没组 中,可以 没 有黑球,但必 须 要有红 球和白球。 组 合 数 作 为 函 数值 返回。正确的 组 合 数应该 是 15.程序中 i 的 值 代表 红 球 数 , j 代表白球 数 , k 代表黑球 数 。 /*found*/ for(i=1;i=0 char *q=a; while(*qj-) 第三 处 tjN-1=rj; 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是: 计算 s=f( -n) +f( -n+1) + +f( 0) +f(
16、 1) +f( 2)+ f( n)的 值 。例如, 当 n 为 5时 ,函 数值应该 是:10.407143。 /*found*/ double f(double x) /*found*/ return s; 3. 程序 设计 编写 一 个 函 数 fun, 它 的功能是 计 算: s=根 号下( ln( 1) +ln( 2) +ln( 3) + ln( m) S 作 为函 数 返回,在 C语 言中可以 调 用 log( n)求 ln( n)。 log函 数 引用 说 明是: Double log( double x)例如,若 m的 值为 : 20, fun 函 数值为 : 60506583。
17、 double fun(int m) double s=0.0; int i; for(i=0;idata=x; 第二 处 q=p; 第三 处 q-next=s; 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是: 计算正整 数 num 的各位上的 数 字之 积 。 /*found*/ long k=1; /*found*/ num/=10 3. 程序 设计 请编写 函 数 fun, 它 的功能是: 计 算 n 门课 程的平均分, 计 算 结 果作 为 函 数 返回。 float fun(float *a,int n) int i; float ave=0.0; for(
18、i=0;in;i+) ave=ave+ai; ave=ave/n; return ave; 第三十三套 1. 程序 填 空 给 定程序中,函 数 fun 的功能是:在形 参 ss 所指字符串 数组 中, 查 找含有形 参 substr 所指子串的所有字符串 并输 出,若 没 找到 输 出相 应 信息。 Ss所指字符串数组 中共有 N 个 字符,且串 长 小于 M。程序中 库 函 数strstr( s1、 s2)的功能是早 s1 串中 查 找 s2 子串,若没 有,函 数值为 0,若有, 为 非 0。 第一 处 for(i=0;iN;i+) 第二 处 if(strstr(ssi,substr)!
19、=NULL) 第三 处 if(find=0) 2. 程序修改 给 定程序 MODI1.C 中函 数 fun 的功能是:求三 个数 的最小公倍 数 。 /*found*/ fun(int x,int y,int z) /*found*/ return j; 3. 程序 设计 假定 输 入的字符串中只包含字母和 *号 。 请编写函 数 fun, 它 的功能是:只 删 除字符串前 导 和尾部的 *号 ,串中字母之 间 的 *号 都不 删 除。形 参 n 给 出了字符串的 长度,形 参 h给 出了字符串中前 导 *号 的 个数 。在 编写 函 数时 ,不得使用 C语 言提供的字符串函 数 。 void fun(char *a,int n,int h,int e) char *p=a; int j=0,len=0; while(*p)p+;len+; while(jlen-h-e) aj=ah+j; j+;