最新最全的题库,刚买的光盘
全国计算机等级考试
二级 C 语言上机题库 100 套
(从光碟拷贝出来的最完整版)
(可以拷贝在 U 盘里,然后 ctrl+F 搜索,百分百
有答案,祝考试成功)
第一套
1. 程序填空
给定程序中,函数 fun 的功能是:计算下式前 n
项的和作为函数值返回。例如:当形参 n 的值为 10 的
时,函数返回:9.6125588。
第一处 s=0;
第二处 for(i=1;i<=n;i++)
第三处 s=s+(2.0*i-1)*(2.0*i+1)/(t*t);
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:统计
substr 所指字符串在 str 所指字符串中出现伯次数。
/**found**/
for(i=0;str[i];i++)
/**found**/
if(substr[k+1]==’\0’)
3. 程序设计
请编写一个函数 fun,它的功能是:根据以下公
式求 JI 的值(要求满足精度 0.0005,即某项小于 0.0005
时停止送代):程序运行后,如果输入精度为 0.0005,则
程序输出为 3.14…。
double fun(double eps)
{ double s=1,t=1./3;
int n=1;
while(t>=eps)
{s+=t;n++;t=t*n/(2.0*n+1)
;}
return(s*2.0);
}
第二套
1. 程序填空
给定程序中已建立一个带有头结点的单向链表,
链表中的各结点按数据域递增有序连接。函数 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 整除的所有整数放在数组 a 中,
通过 n 返回这些数的个数。
void fun(int m,int *a,int *n)
{
int i;
*n=0;
for(i=7;i<=m;i++)
if((i%7==0)||(i%11==0))
a[(*n)++]=i;
}
第三套
1. 程序填空
函数 fun 的功能是:逆置数组元素是的值。例如:若 a
所指数组中的数据依次为:1、2、3、4、5、6、7、8、
9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形
参 n 给出数组中数组中数据的个数。
第一处 for(i=0;i
3. 程序设计
学生的记录由学号和成绩组成,N 名学生的数据
已在主函数中放入结构体数组 s 中,请编写了函数 fun,
它的功能是:函数返回指定学号的学生数据,指定的学
生号在主函数中输入,若没有找到指定学号,在结构体
变量中给学号置空串,给成绩置-1,作为函数值返回。(用
于字符串比较的函数是 strcmp)。
STREC fun(STREC*a,char *b)
{
STREC c;
Int i;
c.num[0]=’\0’;
c.s=-1;
for(i=0;ia[j])
2 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:用递归算法计
算列中第 n 项的值。从第一项起,斐波拉契数列为:1、
1、2、3、5、8、13、21、 ……
/**found**/
switch(g)
/**found**/
case 1:return 1;
case 2:return 1;
3 程序设计
某学生的记录由学号、8 门课程和平均分组成,学号和 8
门课程成绩已在主函数中给出。请编写函数 fun,它的功
能是;求出该学生的平均分放在记录的 ave 成员中。
2
void fun(STREC *a)
{
for(i=0;iave=a->ave+a->s[i];
a->ave/=N
}
第六十套
1 程序填空
给定程序中,函数 fun 的功能是:有 N×N 矩阵,以主对
角线为对称线,对称元素相加并将结果存放在左下三角
元素中,右上三角元素来。
第 1 处 void fun (int) (*t)[N]
第 2 处 t[i][j]=t[i][j]+t[j][i];
第 3 处 t[j][i]=0;
2 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:计算函数值,
F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)其中 x 和 y 的值不等,
z 和 y 的值不等。例如,当 x 的值为 9、y 的值为 11、z
的值为 15 时,函数值为-3.50。
/**found**/
#define FU(m,n)
((m)/(n))
/**found**/
return (value);
}
3 程序设计
规定输入的字符串中只包含字母和*号。请编写函数 fun ,
它的功能是:将字符串中的前导*号全部删除,中间和尾
部的*号不删除。
void fun (char *a)
{
int j=0;
char *p=a;
while (*p=='*')p++;
while (*p){
a[j++]=*p;
p++;
}
a[j]=0;
}
第六十一套
1 程序填空
人员的记录由编号和出生年、月、日组成,N 名人员的
数据已在主函数中存入结构体数组 std 中。函数 fun 的
功能是:找出指定出生年份的人员,将其数据放在形参 k
所指出的数组中,由主函数输出,同时由函数值返回满
足指定条件的人数。
第 1 处 if (std[i].year==year)
1
4
7
2
5
8
3
6
9
交换后:
第 2 处 k[n++]=std[i];
第 3 处 return (n);
1 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:读入一个整数
k(2≤k≤10000)打印它的所有质因子(即所有为素数的
因子)。
/**found**/
IsPrime (int n)
/**found**/
if (!(n%i))
2 程序设计
已知学生的记录由学号和学习成绩构成,N 名学生的数
据已存入结构体数组 a 中。请编写给函数 fun,函数的功
能是:找出成绩最高的学生的记录,通过形参指针传回
主函数(规定只有一个最高分),已给出函数的首部,请
完成函数。
fun(STU a[],STU *s)
{
int
for (i=1; idata==ch)return n;
第三处 k=fun(head,ch);
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:删除
p 所指字符串的所有空白字符(包括制表符、回车符及
换行符)。输入字符串时用‘#’结束输入。
/**found**/
for(i=0,t=0;p[i];i++)
/**found**/
c[t]=’\0’;
3. 程序设计
请编写一个函数 fun,将 ss 所指字符串中所有
下标为奇数位置上的字母转换为大写(若该位置上不是
字母,则不转换)。
void fun(char *ss)
{
int i;
for(i=1;i=’a’&&ss[i]<=’z’)
ss[i]-=32;
}
}
第五套
1. 程序填空
程序通过定义学生结构体数组,存储了若干个学生的学
号、姓名和三门课的成绩。函数 fun 的功能是将存放学
生数据的结构体数组,按照姓名的字典序(从小到大排
序)。请在程序的下划线处填入正确的内容并把下划线删
除,使程序得出正确的结果。
第一处 struct student t;
第二处 for(i=0;i0)
2 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:在 p 所指字符
串中找出 ASCII 码值最大的字符,将其放在第一个位置
上;并将该字符前的原字符向上顺序移动。
/**found**/
q=p+i;
/**found**/
while(q>p)
3 程序设计
学生的记录由学号和成绩组成,N 名学生的数据
已在主函数中放入结构体数组 s 中,请编写了函数 fun,
它的功能是:把指定分数范围内的学生数据放在 b 所指
的数组中,分数范围内的学生人数由函数值返回。
int fun(STREC *a,STREC *b,int l,int h)
{int i,j=0;
for(i=0;i=1&&a[i].s<=h)
b[j++]=a[i];
return j;
}
第六套
1. 程序填空
给定程序中,函数 fun 的功能是:将形参 s 所指
定字符串中所有的字母字符顺序前移,其他字母顺序后
移,处理后字符串的首地址作为函数值返回。
第一处 t[j]=s[i];j++;
第二处 for(i=0;iscore[i]+=1;
第三处 return a;
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:从 N
个字符串中找出最长的那个串,并将其地址作为函数值
返回。各字符串在主函数中输入,并放在一个字符串数
组中。
/**found**/
char *fun(char (*sq)[M])
/**found**/
return sp;
3. 程序设计
4
函数 fun 的功能是:将 a、b 中的两位正整数合
并形成一个新的整数放在 c 中。合并的方式是:将 a 中
的十位和个位依次放在变量 c 的百位和个位上,b 中的
十位和个位数依次放在变量 c 的十位和千位上。
#include
void fun(int a,int b,long *c)
{ *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;
}
第八套
1. 程序填空
函数 fun 的功能是:将形参观者工所指数组中的
前半部分元素中的值和后半部分元素中的值对换。形参 n
中存放数组中数据的个数,若 n 为奇书,则中间元素不
动。
第一处 p=(n%2==0)?n/2:n/2+1;
第二处 a[i]=a[p+i];
第三处 a[p+i]=t;
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:把主
函数中输入的三个数,最大的放在 a 中,最小的放在 c
中,中间的放在 b 中。
/**found**/
float k;
/**found**/
if(*a<*c)
3. 程序设计
学生的记录由学号和成绩组成,N 名学生的数据
已在主函数中放入结构体数组 s 中,请编写了函数 fun,
它的功能是:把分数最高的学生数据放在 b 所指的数组
中,注意:分数最高的学生可能不止一个,函数返回分
数最高的学生的人数。
int fun(STREC *a,STREC *b)
{
int i,max=a[0].s,n=0;
for(i=1;i主函数(规定只有一个最高分),已给出函数的首部,请
完成函数。
fun(STU a[],STU *s)
for(i=1;ia[i].s){
j=0;
b[j++]=a[i];min=a[i].s;
6
}
else if(min==a[i].s)
b[j++]=a[i];
}
return j;
}
第十一套
1. 程序填空
给定程序中,函数 fun 的功能是:计算形参 x 所
指数组中 N 个数的平均值,(规定所有数均为正数),将
所指数组中大于平均值的数据移至数据的前部,小于等
于平均数的移至 x 所指数组的后部,平均值作为函数值
返回,在主函数中输出平均值和移动后的数据。
第一处 av=s/N;
第二处 y[j++]=x[i];x[i]=-1;}
第三处 if(x[i]!=-1)
仅供参考。
#include
#define MAX100
int fun(int lim,int aa[MAX])
{int i,j,k=0;
for(i=2;i<=lim;i++)
{
for(j=2;j<=(i/2);j++)
if(i%j==0)break;
if(j>(i/2))aa[k++]=i;
} return k;}
第十四套
1. 程序填空
函数 fun 的功能是进行字母转换。若形参 ch 中
小写英文字母,则转换成相应的大写英文字母;若形参
ch 中是大写英文字母,则转换成相应的小写英文字母;
并将转换的结果作为函数值返回。
第一处 if((ch>=’a’)&&(ch<=’z’))
第二处 return
ch+’a’-‘A’
第三处 return ch;
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:给一
维数组 a 输入任意四个整数并按下列的规律输出。例如
输出 1、2、3、4,程序输出一下方阵。
a)
3 4
2
1
1 2 3
1 2
3 4 1
3 4
2
/**found**/
void fun(int *a)
/**found**/
a[j]=a[ j-1];
3. 程序设计
请编写函数 fun,函数的功能是:计算并输出给
定整数 n 的所有因子(不包过 1 和 n 本身)之和。规定
n 的值不大于 1000.
int fun(int n)
{
int s=0,i;
for(i=2;i=’a’&&*p<=’z’)
pp[*p-‘a’]+=1;
p++;
}
}
第十六套
1. 程序填空
人员的记录由编号和出生年、月、日组成,N 名人员的
数据已在主函数中存入结构体数组 std 中,且编号唯一。
函数 fun 的功能是:找出指定编号人员数据,作为函数
值返回,由主函数输出,若指定编号不存在,返回数据
中编号为空串。
第 1 处 STU fun(STU *std, char *num)
第 2 处 if(strcmp (std[i].num, num)
= =0)
第 3 处 return (std[i]);
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:从 s
所指字符串中,找出与 t 所指字符串相同的子串的个数
作为函数值返回。
/**found**/
r++; p++;
/**found**/
if(*r= =0)
3. 程序设计
函数 fun 的功能是:将 s 所指字符串中 ASCII 值
为偶数的字符删除,串中剩余字符形成一个新串放在 t
所指数组中。
#include
#include
void fun (char*s, char t[])
{
int i, j=0;
for(i=0;i=’0’&&s[i]<=’9’)
n++;
第 3 处 *t=n;
2. 程序修改
给定程序 MODI1.C 中函数 fun 的功能是:通过
某种方式实现两个变量的交换,规定不允许增加语句和
表达式。例如变量 a 中的值原为 8,b 中的值原为 3,程
序运行后 a 中值为 3,b 中的值为 8.
/**found**/
t=*x;*x=y;
/**found**/
return(t);
3. 程序设计
请编写函数 fun,函数的功能是:求出 1 到 1000
之间能被 7 或 11 整除,但不能同时被 7 和 11 整除的所
有整数并将它们放在 a 所指的数组中,通过 n 返回这些
数的个数。
#include
viod fun (int *a,int *n)
{int i;
*n=0;
for(i=7;i<1000;i++)
if(((i%7)= =0││(i%11)= =0
&&(i%77)!=0) a[(*n)++]=i;
}
第十八套
1. 程序填空
给定程序中,函数 fun 的功能是:有 N×N 矩阵,
根据给定的 m(m<=n)值,将每行元素中的值均右移
m 个位置,左边值为 0.
8
第 1 处 for(i=0;i0.000001);
return x1;
}
第十九套
1. 程序填空
给定程序中,函数 fun 的功能是:将 a 所指的 3
×5 矩阵中第 k 列的元素左移到第 0 列,第 k 列以后的每
列元素行依次左移,原来左边的各列依次绕到右边。
第 1 处 for(p=1;p<=k;p++)
第 2 处 for(j=0;j