当前位置:文档之家› BB2011全国计算机等级考试二级C语言上机南开一百题(修改版)

BB2011全国计算机等级考试二级C语言上机南开一百题(修改版)

BB2011全国计算机等级考试二级C语言上机南开一百题(修改版)
BB2011全国计算机等级考试二级C语言上机南开一百题(修改版)

1

【填空】下列给定程序中,函数fun的功能是计算如下公式。直到,并且把计算结果作为函数值返回。例如,若形参e的值为1e-3,则函数返回值为0.551690。

【答案】【1】3.0 【2】> 【3】(t+1)

【改错】下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。例如,若n=5,则应输出8.391667。

【答案】【1】double fun(int n)

【2】s=s+(double)a/b;

【编程】请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。

【答案】

int fun (int a[ ][M])

{

int i,j,max=a[0][0];

for(i=0;i<2;i++)

for(j=0;j

if(max

max=a[i][j];

return max;

}

2

【填空】下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。例如,当形参n的值为10时,函数返回值为9.612558。【答案】【1】 0【2】 n 【3】(t*t)

【改错】下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。例如,若字符串为aaas 1kaaas,子字符串为as,则应输出2。

【答案】

【1】for(i=0;str[i];i++) 【2】if(substr[k+1]== ′\0′)

【编程】编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。程序运行后,若输入精度0.0005,则程序应输出为3.14…。

【答案】

Double fun(double eps) {

double s=1.0,s1=1.0;

int n=1;

while(s1>=eps)

{ s1=s1]s=s+s1;

n++;

}

return 2}

3

【填空】给定程序中函数fun 的功能是:统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,若形参s所指的字符串为abcdef35adgh3kjsdf7,则输出结果为4。

【答案】【1】s[i]【2】 '9'

【3】*t=n

【改错】下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。

【答案】【1】t = *x ; *x = y ;

【2】return(t) ;【编程】编写函数fun,其功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n 返回这些数的个数。

【答案】

void fun(int *a,int *n) {

int i,j=0;

for(i=1;i<=1000;i++)

if((i%7==0||i%11==0)&&i%77!=0) a[j++]=i;

*n=j;

}

4

【填空】下列给定程序中,函

数fun的功能是:把形参a所

指数组中的奇数按原顺序依次

存放到a[0]、a[1]、a[2]、……

中,把偶数从数组中删除,奇

数个数通过函数值返回。例如:

若a所指数组中的数据最初排

列为:9、1、4、2、3、6、5、

8、7,删除偶数后a所指数组

中的数据为:9、1、3、5、7,

返回值为5。

【答案】【1】1 【2】j++ 【3】

j

【改错】下列给定程序中函数

fun的功能是:求两个非零正

整数的最大公约数,并作为函

数值返回。例如,若num1和

num2分别为49和21,则输出

的最大公约数为7;若num1和

num2分别为27和81,则输出

的最大公约数为27。

【答案】【1】t=a;a=b;b=t;

【2】return(b);

【编程】规定输入的字符串中

只包含字母和*号。编写函数

fun,其功能是:删除字符串中

所有的*号。编写函数时,不得

使用C语言提供的字符串函

数。例如,字符串中的内容为:

****A*BC*DEF*G*******,删除

后字符串中的内容应当是:

ABCDEFG。

【答案】

void fun(char *a)

{

int i,j=0;

for(i=0;a[i]!=′\0′;i++)

if(a[i]!=′*′)

a[j++]=a[i];

a[j]=′\0′;

}

5

【填空】下列给定程序中,函

数fun的功能是:将形参n中,

各位上为偶数的数取出,并按

原来从高位到低位相反的顺序

组成一个新数,作为函数值返

回。例如,输入一个整数

27638496,函数返回值为

64862。

【答案】【1】0【2】 10*x【3】

n/10

【改错】下列给定程序中函数

fun的功能是:将长整型数中

各位上为奇数的数依次取出,

构成一个新数放在t中。高位

仍在高位,低位仍在低位。例

如,当s中的数为87653142时,

t中的数为7531。

【答案】【1】*t=0;【2】if(d%2!

=0)

【编程】编写函数fun,其功

能是:实现两个字符串的连接

(不要使用库函数strcat),即

把p2所指的字符串连接到p1

所指的字符串的后面。例如,

分别输入下面两个字符串:

FirstString—SecondString

程序输出:

FirstString--SecondString

【答案】

void fun(char p1[],char

p2[])

{

int i,j;

for(i=0;p1[i]!=′\0′;

i++);

for(j=0;p2[j]!=′\0′;j++)

p1[i++]=p2[j];

p1[i]=′\0′;

}

6

【填空】下列给定程序中函数

fun的功能是:把形参a所指

数组中的最小值放在元素a[0]

中,接着把a所指数组中的最

大值放在a[1]元素中;再把a

所指数组元素中的次小值放在

a[2]中,把a所指数组元素中

的次大值放在a[3],以此类推。

例如,若a所指数组中的数据

最初排列为:9、1、4、2、3、

6、5、8、7;则按规则移动后,

数据排列为:1、9、2、8、3、

7、4、6、5。形参n中存放a

所指数组中数据的个数。规定

fun函数中的max存放当前所

找的最大值,px存放当前所找

最大值的下标。

【答案】

【1】a[i] 【2】a[j]【3】a[j]

【改错】下列给定程序中函数

fun的功能是:用递归算法计

算斐波拉契数列中第n项的

值。从第1项起,斐波拉契数

列为:1、1、2、3、5、8、13、

21、……。例如,若给n输入

7,则该项的斐波拉契数值为

13。

【答案】【1】去掉分号

【2】case 1:case2:return 1;

【编程】某学生的记录由学号、

8门课程成绩和平均分组成,

学号和8门课程的成绩已在主

函数中给出,请编写函数fun,

其功能是:求出该学生的平均

分,并放入记录的ave成员中。

例如,学生的成绩85.5,

76,69.5,85,91,72,64.5,

87.5,则他的平均分应为

78.875。

【答案】

void fun(STREC *a)

{

int i;

a->ave=0.0;

for(i=0;i

a->ave=a->ave+a->s[i];

}

7

【填空】下列给定程序中函数

fun的功能是进行数字字符转

换。若形参ch中是数字字符

'0'~'9',则将'0'转换成'9',

'1'转换成'8','2'转换成

'7',……,'9'转换成'0';若

是其它字符则保持不变;并将

转换后的结果作为函数值返

回。

【答案】【1】char

【2】ch<='9' 【3】'0'

【改错】下列给定程序中函数

fun的功能是:将p所指字符

串中的所有字符复制到b中,

要求每复制三个字符之后插入

一个空格。例如,若给a输入

字符串:ABCDEFGKHIJK,调用

函数后,字符数组b中的内容

为:ABC DEF GHI JK。

【答案】【1】b[k]=*p;

【2】b[k]=′′;k++;

【编程】N名学生的成绩已在

主函数中放入一个带头节点的

链表结构中,h指向链表的头

节点。请编写函数fun,其功

能是:求出平均分,并由函数

值返回。例如,若学生的成绩

是:85 76 69 85 91 72

64 87,则平均分应当是:

78.625。

【答案】

double fun(STREC *h)

{

double av=0.0;

STREC *p=h->next;

while(p!=NULL)

{ av=av+p->s;

p=p->next;

return ave/N;

}

8

【填空】下列给定程序中函数

fun的功能是:求ss所指字符

串数组中长度最短的字符串所

在的行下标,作为函数值返回,

并把其串长放在形参n所指的

变量中。ss所指字符串数组中

共有M个字符串,且串长

【答案】【1】M 【2】< 【3】

k

【改错】下列给定程序中函数

fun的功能是:将tt所指字符

串中的小写字母全部改为对应

的大写字母,其它字符不变。

例如,若输入"Ab,cD",则输

出"AB,CD"。

【答案】

【1】if(( tt[i]>=′

a′)&&( tt[i] <= ′z′)

【2】tt[i]-=32;

【编程】编写函数fun,其功

能是:将所有大于1小于整数

m的非素数存入xx所指数组

中,非素数的个数通过k返回。

例如,若输入17,则应输出:

4 6 8 9 10 12 14 15

16。

【答案】

void fun(int m, int *k, int

xx[])

{

int i,j,n=0;

for(i=4;i

{ for(j=2;j

if(i%j==0) break;

if(j

}

*k=n;

}

9

【填空】下列给定程序中函数

fun的功能是:将s所指字符

串中的所有数字字符移到所有

非数字字符之后,并保持数字

字符串和非数字字符串原有的

次序。

例如,s所指的字符串为

def35adh3kjsdf7,执行后结果

为defadhajsdf3537。

【答案】【1】j++ 【2】

s[i]=t1[i]

【3】j

【改错】下列给定程序中函数

fun的功能是:用冒泡法对6

个字符串进行升序排列。

【答案】

【1】for (j=i+1; j< 6; j++)

【2】*(pstr+i)=*(pstr+j);

【编程】编写函数fun,其功

能是:求ss所指字符串中指定

字符的个数,并返回此值。例

如,若输入字符串123412132,

输入字符为1,则输出3。

【答案】

int fun(char *ss, char c)

{

int i=0;

for(;*ss!=′\0′;ss++)

if(*ss==c)

i++;

return i;

}

10

【填空】下列给定程序中已建

立一个带头结点的单向链表,

链表中的各结点按结点数据域

中的数据递增有序链接。函数

fun的功能是:把形参x的值

放入一个新结点并插入链表

中,使插入后各结点数据域中

的数据仍保持递增有序。

【答案】【1】x 【2】p 【3】s

【改错】下列给定程序中函数

fun的功能是:计算正整数num

各位上的数字之积。例如,若

输入252,则输出应该是20。

若输入202,则输出应该是0。

【答案】【1】long k=1;【2】

num /=10;

【编程】编写函数fun,其功

能是:计算n门课程的平均分,

结果作为函数值返回。例如:

若有5门课程的成绩是:

90.5,72,80,61.5,55,则函数

的值为:71.80。

【答案】

float fun (float *a, int

n)

{

float av=0.0;

int i;

for(i=0;i

av=av+a[i];

return (av/n);

}

11

【填空】下列给定程序中函数

fun的功能是:将形参a所指

数组中的前半部分元素中的值

与后半部分元素中的值对换。

形参n中存放数组中数据的个

数,若n为奇数,则中间的元

素不动。例如:若a所指数组

中的数据为:1、2、3、4、5、

6、7、8、9,则调换后为:6、

7、8、9、5、1、2、3、4。

【答案】【1】1 【2】i 【3】

a[p+i]

【改错】下列给定程序中函数

fun的功能是:把从主函数中

输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。例如,若输入的数为:55 12 34,输出的结果应当是:a=55.0,b=34.0,c=12.0。

【答案】【1】float k;【2】if(*a< *c)

【编程】学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s 中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

【答案】

int fun (STREC *a, STREC *b)

{

int i,j=0,max=a[0].s;for(i=0;i

if(max

if(max==a[i].s) b[j++]=a[i];

return j;

}

11

【填空】下列给定程序中函数fun的功能是:从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。

【答案】【1】N 【2】k 【3】ss[i]

【改错】下列给定程序中函数fun的功能是:逐个比较p、q 所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。例如,若主函数中a字符串为aBCDeFgH,b字符串为ABcd,则c中的字符串应为aBcdeFgH。

【答案】【1】int k=0;

【2】while (*p||*q)【编程】规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。

【答案】

void fun(char *a)

{

int i=0;

char *p=a;

while(*p&&*p==′*′)

{

a[i]=*p;i++;p++;

}

while(*p)

{

if(*p!=′*′)

{

a[i]=*p;i++;

}

p++;

}

a[i]=′\0′;

}

13【填空】下列给定程序中,函数fun的功能是:把形参s 所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指字符串为abcdefgh,执行结果为ahcbedgf。

【答案】【1】1 【1】s[k]【1】c

【改错】下列给定程序中fun 函数的功能是:求表达式s=aa… aa-…- aaa - aa -a(此处aa… aa表示n个a,a和n 的值在1至 9之间)例如,a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33

-3其值是296298。a和n是fun

函数的形参,表达式的值作为

函数值传回main函数。

【答案】

【1】long s=0, t=0;【1】

t=t/10;

【编程】编写函数void

fun(char *tt,int pp[]),统

计在tt所指的字符串中'a'到

'z'26个小写字母各自出现的

次数,并依次放在pp所指的数

组中。例如,当输入字符串

abcdefgabcdeabc后,程序的

输出结果应该是:3 3 3 2 2 1

1 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0

【答案】

void fun(char *tt, int pp[])

{

int i;

for(i=0;i<26;i++)

pp[i]=0;

if(*tt>=′a′&&*tt<=′z′)

pp[*tt-′a′]++;

}

14

【填空】下列给定程序中函数

fun的功能是:在形参ss所指

字符串数组中查找与形参t所

指字符串相同的串,找到后返

回该串在字符串数组中的位置

(即下标值),若未找到则返回

-1。ss所指字符串数组中共有

N个内容不同的字符串,且串

长小于M。

【答案】【1】N 【2】i 【3】

-1

【改错】下列给定程序中函数

fun的功能是:从整数1到55

之间,查找能被3整除且有一

位上的数值是5的数,把这些

数放在b所指的数组中,这些

数的个数作为函数值返回。规

定函数中al放个位数,a2放

十位数。

【答案】

【1】a2=k/10;【2】return i;

【编程】规定输入的字符串中

只包含字母和*号。请编写函数

fun,其功能是:将字符串尾部

的*号全部删除,前面和中间的

*号不动。

例如,字符串中的内容为:

****A*BC*DEF*G*******,删除

后,字符串中的内容应当是:

****A*BC*DEF*G。在编写函数

时,不得使用C语言提供的字

符串函数。

【答案】

void fun (char *a)

{

while(*a!=′\0′)

a++;

a--;

while(*a==′*′)

a--;

*(a+1)=′\0′;

}

15

【填空】下列给定程序中已建

立了一个带头结点的单向链

表,在main函数中将多次调用

fun函数,每调用一次,输出

链表尾部结点中的数据,并释

放该结点,使链表缩短。

【答案】

【1】next 【2】t->data 【3】

t

【改错】下列给定程序中函数

fun的功能是:将字符串中的

字符逆序输出,但不改变字符

串中的内容。例如,若字符串

为abcd,则应输出:dcba。

【答案】【1】void fun(char *a)

【2】printf("%c" ,

*a);

【编程】编写函数fun,其功

能是:比较字符串的长度,(不

得使用C语言提供的求字符串

长度的函数),函数返回较长的

字符串。若两个字符长度相同,

则返回第一个字符串。

例如,输入

beijingshanghai(

R>为回车键),函数将返回

shanghai。

【答案】

char *fun(char *s, char *t)

{

int i,j;

for(i=0;s[i]!= ′\0′;

i++);

for(j=0;t[j]!= ′\0′;

j++);

if(i>=j)

return s;

else

return t;

}

16

【填空】下列给定程序中函数

fun的功能是:逆置数组元素

中的值。例如:若a所指数组

中的数据为:1、2、3、4、5、

6、7、8、9,则逆置后依次为:

9、8、7、6、5、4、3、2、1。

形参n给出数组中数据的个

数。

【答案】【1】n/2【2】i【3】

a[n-i-1]

【改错】下列给定程序中函数

fun的功能是:将一个由八进

制数字字符组成的字符串转换

成与其面值相等的十进制整

数。规定输入的字符串最多只

能包含5位八进制数字字符。

例如,若输入77777,则

输出32767。

【答案】【1】n= *p-′0′;

【2】n=n*8+*p-′0′;

【编程】学生的记录由学号成

绩组成,N名学生的数据已放

入主函数中的结构体数组s

中,请编写函数fun,其功能

是:函数返回该学号的学生数

据,指定的学号在主函数中输

入。若没找到指定学号,在结

构体变量中给学号置空串,给

成绩置-1,作为函数值返回。

(用于字符串比较的函数是

strcmp)。

【答案】

STREC fun(STREC *a, char

*b)

{

int i;

STREC str={"\0",-1};

if(strcmp(a[i].num,

b)==0)

str=a[i];

return str;

}

17

【填空】下列给定程序的功能

是:调用函数fun将指定源文

件中的内容复制到指定的目标

文件中,复制成功时函数返回

1,失败时返回0。在复制的过

程中,把复制的内容输出到屏

幕。主函数中源文件名放在变

量sfname中,目标文件名放在

变量tfname中。

【答案】【1】"r" 【2】fs 【3】

ft

【改错】下列给定程序中函数

fun的功能是:将长整型数中

各位上为偶数的数依次取出,

构成一个新数放在t中。高位

仍在高位,低位仍在低位。例

如,当s中的数为87653142时,

t中的数:8642。

【答案】【1】if(d%2==0)

【2】s/=10;

【编程】编写函数fun,其功

能是:将两个两位数的正整数

a、b合并成一个整数放在c中。

合并的方式是:将a数的十位

和个位数依次放在c数的十位

和千位上,b数的十位和个位

数依次放在c数的百位和个位

上。

例如,当a=45,b=12时,

调用该函数后,c =5142。

【答案】

void fun(int a,int b,long

*c)

{

*c=b%10+(a/10)*10+(b/10)*1

00+(a%10)*1000;

}

18【填空】下列给定程序中函

数fun的功能是:有N×N矩阵,

根据给定的m(m<=N)值,将每

行元素中的值均向右移动m个

位置,左位置为0。例如,N=3,

m=2,有下列矩阵

1 2 3

4 5 6

7 8 9

程序执行结果为

0 0 1

0 0 4

0 0 7

【答案】【1】i++ 【2】m 【3】

m

【改错】下列给定程序中函数

fun的功能是:计算并输出

high以内最大的10个素数的

和。high的值由主函数传给

fun函数。例如,若high的值

为100,则函数的值为732。

【答案】

【1】while((high>=2) &&

(n<10))

【2】yes=0; break;

【编程】编写函数fun,其功

能是:利用下面的简单迭代方

法求方程cos(x)-x=0的一个

实根。

xn+1=cos(xn)

迭代步骤如下:

(1)取x1初值为0.0;

(2)x0=x1,将x1的值赋给

x0;

(3)x1=cos(x0),求出一个

新的x1;

(4)若x0-x1的绝对值小

于0.000001,执行步聚(5),

否则执行步聚(2);

(5)所求x1就是方程

cos(x)-x=0的一个实根,作为

函数值返回。

程序将输出结果

Root=0.739086。

【答案】

float fun()

{

float x1=0.0,x0;

do

{

x0=x1;

x1=cos(x0);

}

while (fabs(x0-x1)>=1e-6);

return x1;

}

19

【填空】程序通过定义学生结

构体变量,存储学生的学号、

姓名和3门课的成绩。函数fun

的功能是:将形参a所指结构

体变量中的数据赋给函数中的

结构体变量b,并修改b中的

学号和姓名,最后输出修改后

的数据。

例如,a所指变量中的学

号、姓名和三门课的成绩依次

是:10001、"ZhangSan"、95、

80、88,则修改后输出b中的

数据应为:10002、"LiSi"、95、

80、88。

【答案】【1】a 【2】https://www.doczj.com/doc/3a5459718.html,

【3】score[i]

【改错】下列给定程序中函数

fun的功能是:删除s所指字

符中所有的小写字母c 。

【答案】【1】s[j++]=s[i];

【2】s[j]= ′\0′;

【编程】规定输入的字符串中

只包含字母和*号。请编写函数

fun,其功能是:将字符串中的

前导*号全部移到字符串的尾

部。例如,字符串中的内容为:

*******A*BC*DEF*G****,移动

后,字符串中的内容应当是:

A*BC*DEF*G***********。在编

写函数时,不得使用C语言提

供的字符串函数。

【答案】

void fun(char *a)

{

int i=0,n=0;

char *p;

p=a;

while (*p==′*′)

{

n++;p++;

}

while(*p)

{

a[i]=*p;i++;p++;

}

while(n!=0)

{

a[i]=′*′;i++;n--;

}

a[i]=′\0′;

}

20

【填空】下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数ReadText和WriteText实现。【答案】【1】*fw 【2】str 【3】str

【改错】下列给定程序中函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为7654321时,t中的数为7531。【答案】

【1】void fun(long s,long *t)

【2】s1=s1*10

【编程】编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

例如,当a=45,b=12时,调用该函数后,c=1524。

【答案】

void fun(int a,int b,long *c)

{

*c=a/10+(b%10)*10+(a%10)*1 00+(b/10)*1000;

}

21

【填空】下列给定程序中函数fun的功能是:有N×N矩阵,将矩阵的外围元素做顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,再使临时数组中的元素成为最后一列。

例如,若N=3,有下列矩阵:

1 2 3

4 5 6

7 8 9

操作后应为:

7 4 1

8 5 2

9 6 3

【答案】【1】0【2】j--【3】j 【改错】下列给定程序中函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。

例如,当n的值为5时,函数值应为10.407143。f(x)函数定义如下:

(x+1)/(x-2) x>0且x≠2

f(x)= 0 x=0或x=2

(x-1)/(x-2)

x<0

【答案】【1】double f(double x)

【2】return s ;【编程】编写函数fun,其功能是计算:s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明为:double log(double x)。例如,若m的值为20,则fun 函数值为6.506583。

【答案】

double fun(int m)

{

int i;

double s=0.0;

for(i=1;i<=m;i++)

s=s+log(i);

return sqrt(s);

}

22 【填空】下列给定程序中函数

fun的功能是:在形参ss所指

字符串数组中,查找含有形参

substr所指子串的所有字符

串,并输出,若没找到则输出

相应信息。ss所指字符串数组

中共有N个字符串,且串长小

于M。程序中库函数

strstr(s1,s2)的功能是在s1

串中查找s2子串,若没有,函

数值为0,若有,函数值为非0。

【答案】【1】N 【2】substr 【3】

【改错】下列给定程序中函数

fun的功能是:求三个数的最

小公倍数。例如,若给主函数

中的变量x1、x2、x3分别输入

15 11 2,则输出结果应当是

330。

【答案】

【1】fun(int x,int y, int z)

【2】return j;

【编程】规定输入的字符串中

只包含字母和*号。请编写函数

fun,其功能是:只删除字符前

导和尾部的*号,串中字母间的

*号都不删除。形参n给出了字

符串的长度,形参h给出了字

符串中前导*号的个数,形参e

给出了字符串中尾部*号的个

数。在编写函数时,不得使用

C语言提供的字符串函数。

【答案】

void fun (char *a,int n ,

int h , int e)

{

int i,j=0;

for(i=h;i

a[j++]=a[i];

a[j]=′\0′;

}

23

【填空】下列给定程序中函数

fun的功能是:计算一个带头

结点的单向链表中各结点的数

据域中数值之和,结果作为函

数值返回。

【答案】【1】data 【2】next

【3】head

【改错】下列给定程序中函数

fun的功能是:将s所指字符

串中出现的与t1所指字符串

相同的子串全部替换为t2所

指字符串,所形成的新串放在

w所指的数组中。要求t1和t2

所指字符串的长度相同。例如,

当s所指字符串中的内容为

"abcdabfab",t1所指子串中

的内容为"ab",t2所指子串中

的内容为"99"时,在w所指的

数组中的内容应为

"99cd99f99"。

【答案】【1】while( *r)

【2】{*a=*r;a++;r++;}

【编程】函数fun的功能是:

将s所指字符串中下标为偶数

的字符删除,剩余字符形成的

新串放在t所指数组中。例如,

当s所指字符串中的内容为

"ABCDEFGHIJK"时,在t所指数

组中的内容应是:"BDFHJ"。

【答案】

void fun(char *s,char t[])

{

int i,j=0,k=strlen(s);

for(i=1;i

t[j++]=s[i];

t[j]=’\0’;

}

24

【填空】程序通过定义学生结

构体变量,存储学生的学号、

姓名和3门课的成绩。函数fun

的功能是:将形参a所指结构

体变量s中的数据进行修改,

并把a的地址作为函数值返回

主函数,从主函数中输出修改

的数据。

例如,a所指变量s中的

学号、姓名和三门课的成绩依

次是:10001、"ZhangSan"、95、

80、88,修改后输出t中的数

据应为:10002、"LiSi"、96、

81、89。

【答案】【1】struct student*

【2】a->score[i] 【3】

a

【改错】下列给定程序中,函

数fun的功能是:从N个字符

串中找出最长的串,并将其地

址作为函数值返回。各字符串

在主函数中输入,并放入一个

字符串数组中。

【答案】【1】char *fun(char

(*sq)[M]) 【2】return sp;

【编程】编写函数fun,其功

能是:将a、b中的两个两位正

整数合并成一个新的整数放在

c中。合并的方式是:将a中

的十位和个位数依次放在变量

c的百位和个位上,b中的十位

和个位数依次放在变量c的十

位和千位上。例如,当a=45,

b=12,调用该函数后c=2415。

【答案】

void fun(int a,int b,long

*c)

{

*c=a%10+(b/10)*10+(a/10)*1

00+(b%10)*1000;

}

25

【填空】下列给定程序中函数

fun的功能是:将N×N矩阵主

对角线元素的值与反向对角线

对应位置上元素的值进行交

换。

例如,若N=3,有下列矩

阵:

1 2 3

4 5 6

7 8 9

交换后为:

3 2 1

4 5 6

9 8 7

【答案】【1】t[][N]

【2】i=0;i

【改错】由N个有序整数组成

的数列已放在一维数组中,下

列给定程序中函数fun的功能

是:利用折半查找法查找整数

m在数组中的位置。若找到,

返回其下标值;否则,返回-1。

折半查找的基本算法是:

每次查找前先确定数组中待查

的范围low和

high(low

中间位置(mid)上元素的值进

行比较。如果m的值大于中间

位置元素的值,则下一次的查

找范围落在中间位置之后的元

素中;反之,下一次的查找范

围落在中间位置之前的元素

中。直到low>high,查找结束。

【答案】

【1】int fun(int a[],int m)

【2】else if(m>a[mid])

【编程】假定输入的字符串中

只包含字母和*号。请编写函数

fun,其功能是:除了尾部的*

号之外,将字符中的其它的*

号全部删除。形参p已指向字

符串中最后的一个字母。在编

写函数时,不得使用C语言提

供的字符串函数。例如,字符

串中的内容为

****A*BC*DEF*G*******,删除

后,字符串中的内容应当是

ABCDEFG*******。

【答案】

void fun(char *a,char *p)

{

char *t=a;

for(;t<=p;t++)

if(*t!=′*′)

*(a++)=*t;

for(;*t!=′\0′;t++)

*(a++)=*t;

*a=′\0′;

}

26

【填空】下列给定程序中函数

fun的功能是:找出100~999

之间(含100和999)所有整数

中各位上数字之和为x(x为正

整数)的整数,并输出;符合条

件的整数个数作为函数值返

回。例如,当x值为5时,100~

999之间各位上数字之和为5

的整数有:104、113、122、131、

140、203、212、221、230、302、

311、320、401、410、500,共

有15个。当x值为27时,各

位数字之和为27的整数是:

999,只有1个。

【答案】【1】999 【2】t/10 【3】

x

【改错】下列给定程序中函数

fun的功能是:从低位开始依

次取出长整型变量s中偶数位

上的数,构成一个新数放在t

中。高位仍在高位,低位仍在

低位。例如,当s中的数为

7654321时,t中的数为642。

【答案】

【1】void fun(long s,long *t)

【2】while(s>0)

【编程】学生的记录由学号和

成绩组成,N名学生的数据已

放入主函数中的结构体数组s

中,请编写函数fun,其功能

是:按分数降序排列学生的记

录,高分在前,低分在后。

【答案】

void fun (STREC a[])

{

int i,j;

STREC t;

for(i=1;i

for(j=0;j

if(a[j].s

{t=a[j];a[j]=a[j+1];

a[j+1]=t;}

}

27

【填空】程序通过定义学生结

构体变量,存储学生的学号、

姓名和3门课的成绩。函数fun

的功能是:对形参b所指结构

体变量中的数据进行修改,并

在主函数中输出修改后的数

据。例如,若b所指变量t中

的学号、姓名和三门课的成绩

依次是:10002、"ZhangQi"、

93、85、87,修改后输出t中

的数据应为:10004、"LiJie"、

93、85、87。

【答案】【1】->sno 【2】->name

【3】&t

【改错】下列给定程序中函数

fun的功能是:用递归算法求

形参a的平方根。求平方根的

迭代公式如下:例如,a为2

时,平方根值为:1.414214。

【答案】

【1】double fun(double a,

double x0)

【2】

if(fabs(x1-x0)>=0.00001)

【编程】学生的记录由学号和

成绩组成。N名学生的数据已

放入主函数中的结构体数组s

中,请编写函数fun,其功能

是:把高于等于平均分的学生

数据放在b所指的数组中,高

于等于平均分的学生人数通过

形参n传回,平均分通过函数

值返回。

【答案】

double fun (STREC *a,STREC

*b, int *n)

{

int i;

double av=0.0;

*n=0;

for(i=0;i

av=av+a[i].s;

av=av/N;

for(i=0;i

if(av<=a[i].s)

{ b[*n]=a[i];*n=*n+1;}

return av;

}

28

【填空】下列给定程序中已建

立了一个带头结点的单向链

表,链表中的各结点按数据域

递增有序链接。函数fun的功

能是:删除链表中数据域值相

同的结点,使之只保留一个。

【答案】【1】q 【2】next 【3】

next

【改错】下列给定程序中函数

fun的功能是:用选择法对数

组中的n个元素进行升序排

列。

【答案】【1】p=j;【2】p=i;

【编程】编写函数fun,其功

能是:将1到m之间(含m)能

被7或11整除的所有整数放在

数组a中,并通过n返回这些

数的个数。例如,若传给m的

值为50,则程序输出:

7 11 14 21 22 28 33 35 42 44 49

【答案】

void fun(int m, int *a, int *n)

{

int i,j=0;

for(i=1;i<=m;i++)

if(i%7==0||i%11==0)

a[j++]=i;

*n=j;

}

29

【填空】下列给定程序中函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。

例如,若N=3,有下列矩阵:

1 2 3

4 5 6

7 8 9

计算后结果为

1 0 0

6 5 0

10 14 9

【答案】【1】[N] 【2】t[i][j] 【3】t[j][i]

【改错】下列给定程序中函数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。

【答案】【1】#define FU(m,n)(m)/(n) 【2】return (value);

【编程】规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。

例如,字符串中的内容为:*******A*BC*DEF*G****,删除后字符串中的内容应当是:

A*BC*DEF*G****。编写函数时,不得使用C语言提供的字符串函数。

【答案】

void fun (char *a)

{

char *p=a;

while(*p==′*′)

p++;

for(;*p!=′\0′;p++,a++) *a=*p;

*a=′\0′;

}

30

【填空】程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun 的功能是:从文件中找出指定学号的学生数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加3分,修改后重写文件中学生的数据,即用该学生的新数据覆盖原数据,其它学生数据指定不变;若找不到,则不做任何操作。

【答案】【1】fp 【2】== 【3】fp

【改错】下列给定程序中函数fun的功能是:用插入排序法对字符串中的字符进行升序排列。插入法的基本算法是:先对头两个字符进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。【答案】【1】n=strlen( aa ) ;

【2】ch=aa[i];

【编程】N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:找出学生的最高分,并由函数值返回。【答案】

double fun(STREC *h)

{

double max=h->s;

while(h!=NULL)

{ if(maxs) max=h->s;

h=h->next;

}

return max;

}

31

【填空】下列给定程序中函数

fun的功能是:计算下式前n

项的和,并作为函数值返回。

例如,当形参n的值为10时,

函数返回:-0.204491

【答案】【1】1【2】2*i 【3】

(-1)

【改错】下列给定程序中函数

fun的功能是:判断一个整数

是否为素数,若是素数返回1,

否则返回0。

在main()函数中,若fun

返回1输出YES,若fun返回0

输出NO!。

【答案】【1】k++ ;【2】

if(m==k)

【编程】请编写函数fun,其

功能是:找出一维整型数组元

素中最大的值及其所在的下

标,并通过形参传回。数组元

素中的值已在主函数中赋予。

主函数中x是数组名,n

是x中的数据个数,max存放

最大值,index存放最大值所

在元素的下标。

【答案】

void fun(int a[],int n, int

*max, int *d)

{

int i;

*max=a[0];

*d=0;

for(i=0;i

if(*max

{*max=a[i];*d=i;}

}

32

【填空】下列给定程序中函数

fun的功能是计算下式

直到,并将计算结果作为函数

值返回。例如,若形参e的值

为1e-3,函数的返回值为

2.985678。

【答案】【1】0 【2】i++ 【3】

2.0*i

【改错】下列给定程序中函数

fun的功能是:将s所指字符

串的正序和反序进行连接,形

成的新串放在t所指的数组

中。

例如,当s所指字符串为:

"ABCD"时,t所指字符串中的

内容应为:"ABCDDCBA"。

【答案】

【1】void fun ( char *s , char

*t ) 【2】t[d+i]=0;

【编程】编写函数fun,其功

能是:将s所指字符串中除了

下标为奇数同时ASCII值也为

奇数的字符之外,其余的所有

字符全部删除,串中剩余字符

所形成的一个新串放在t所指

的数组中。例如,若s所指字

符串的内容为:

"ABCDEFG12345",其中字符A

的ASCII码值为奇数,但所在

元素的下标为偶数,因此需要

删除;而字符1的ASCII码值

为奇数,所在数组中的下标也

为奇数,因此不应当删除,其

它依此类推。最后t所指数组

中的内容应为:"135"。

【答案】

void fun(char *s,char t[])

{

int i,j=0,n;

n=strlen(s);

for(i=0;i

if(i%2!=0&&s[i]%2!=0)

{

t[j]=s[i];

j++;

}

t[j]=′\0′;

}

33

【填空】下列给定程序中函数

fun的功能是:在形参s所指

字符串中的每个数字字符之后

插入一个*号。例如,形参s所

指的字符串为

def35adh3kjsdf7,执行后结果

为def3*5*adh3*kjsdf7*

【答案】【1】&& 【2】0 【3】

s[j]

【改错】下列给定程序中函数

fun的功能是:根据整型形参

m,计算如下公式的值。

例如,若m的值为5,则

应输出1.463611。

【答案】

【1】for(i=2;i<=m;i++)

【2】y+=1.0/(i*i);

【编程】编写函数fun,其功

能是:实现B=A+A',即将矩阵

A加上A的转置,存放在矩阵B

中。计算结果在main函数中输

出。例如,输入下面的矩阵:

其转置矩阵为:

1 2 3 1 4 7

4 5 6 2 5 8

7 8 9 3 6 9

程序输出:

2 6 10

6 10 14

10 14 18

【答案】

void fun (int a[3][3], int

b[3][3])

{

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

b[i][j]=a[i][j]+a[j][i];

}

34

【填空】给定程序中,函数fun

的功能是将不带头结点的单向

链表逆置,即若原链表中从头

至尾结点数据域一次为2,4,

6,8,10,逆置后,从头至尾

结点数据域依次为10,8,6,

4,2.

【答案】【1】NODE 【2】next

【3】r

【改错】下列给定程序中,函

数fun的功能是:将字符串s

中的位于奇数位置的字符或

ASCII码为偶数的字符依此放

入字符串t中。例如,字符串

中的数据为AABBCCDDEEFF,则

输出应当是ABBCDDEFF。

【答案】【1】if(i%2 ||

s[i]%2==0) 【2】

t[j]=0;

【编程】请编写函数fun,该

函数的功能是:将M行N列的

二维数组中的数据,按列的顺

序依此放到一维数组中。一维

数组中数据的个数存放在形参

n所指的存储单元中。

例如,若二维数组中的数

据为:

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应

是:

33 44 55 33 44 55 33 44

55 33 44 55

【答案】

void fun(int (*s)[10],int

*b,int *n,int mm,int nn)

{

int i,j;

for(j=0;j

for(i=0;i

{

b[*n]=*(*(s+i)+j);

*n=*n+1;

}

}

35

【填空】程序通过定义学生结

构体变量,存储学生的学号、

姓名和3门课的成绩。函数fun

的功能是:将形参a中的数据

进行修改,把修改后的数据作

为函数值返回主函数进行输

出。

例如,若传给形参a的数

据中学号、姓名和三门课的成

绩依次是:10001、"ZhangSan"、

95、80、88,修改后的数据应

为:10002、"LISi"、96、81、

89。

【答案】【1】 struct student

【2】a.name 【3】a.score[i]

【改错】假定整数数列中的数

不重复,并存放在数组中。下

列给定程序中函数fun的功能

是:删除数列中值为x的元素。

变量n中存放数列中元素的个

数。

【答案】【1】if(p==n) return

-1;【2】a[i]=a[i+1];

【编程】学生记录由学号和成

绩组成,N名学生的数据已放

入主函数中的结构体数组中,

请编写函数fun,其功能是:

把分数最低的学生数据放入b

所指的数组中,注意:分数最

低的学生可能不止一个,函数

返回分数最低的学生人数。

【答案】

int fun(STREC *a,STREC *b)

{

int i,j=0,n=0,min;

min=a[0].s;

for(i=0;i

if(a[i].s

min=a[i].s;

for(i=0;i

if(a[i].s==min)

{

*(b+j)=a[i];j++;n++;

}

return j;

}

36

【填空】给定程序中,函数fun

的功能是将带头结点的单向链

表逆置,即若原链表中从头至

尾结点数据域依次为2,4,6,

8,10,逆置后,从头至尾结点

数据域依次为10,8,6,4,

2.

【答案】【1】next【2】NULL

【3】r

【改错】下列给定程序中函数

fun的功能是:计算s所指字

符串中含有t所指字符串的数

目,并作为函数值返回。

【答案】【1】r=t;【2】r=t;

【编程】请编写函数fun,该

函数的功能是:将放在字符串

数组中的M个字符串(每串的

长度不超过N),按顺序合并组

成一个新的字符串。例如,若

字符串数组中的M个字符串为

“AAAA”,“BBBBBBB”,“CC”

则合并后的字符串内容应

该是AAAABBBBBBBCC

【答案】

void fun(char a[M][N],char

*b)

{

int i,j,k=0;

for(i=0;i

for(j=0;a[i][j]!=′\0′;

j++)

b[k++]=a[i][j];

b[k]=′\0′;

}

37

【填空】下列给定程序中函数

fun的功能是:将形参s所指

字符串中下标为奇数的字符取

出,并按ASCII码大小递增排

序,将排序后的字符存入形参

p所指字符数组中,形成一个

新串。例如,形参s所指的字

符为:baawrskjghzlicda,执

行后p所指字符数组中的字符

串应为:aachjlsw。

【答案】【1】t=i 【2】I 【3】

【改错】下列给定程序中函数

fun的功能是:用下面的公式

求π的近似值,直到最后一项

的绝对值小于指定的数(参数

num)为止。例如,程序运行后,

输入0.0001,则程序输出

3.1414。

【答案】【1】

while(fabs(t)>=num)

【2】t=s/n;

【编程】编写函数fun,其功

能是:删除一个字符串中指定1

2222

133557(21)(21)

(1)

244(2)

n

n n

S

n

-

????-??+

=-++-

?

-

下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n 中存指定的下标。

例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。

【答案】

void fun (char a(), char b(), int n)

{

int i,k=0;

for(i=0;a[i]!=′\0′;i++) if(i!=n)

b[k++]=a[i];

b[k]=′\0′;

}

38

【填空】给定程序中,函数fun 的功能是将不带头结点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为10,4,2,8,6,排序后链表结点数据域从头至尾的数据为2,4,6,8,10.

【答案】【1】p->next 【2】q

【3】p->next

【改错】下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(如Z转化为A,z转化为a),其他字符不变。【答案】【1】while(*s) 【2】s++;

【编程】请编写函数fun,函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容:1,2,3,4,5,6,7,8,9,10;p的值为3.移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。

【答案】

void fun (int *w,int p,int n )

{

int x,j,ch;

for(x=0;x<=p;x++)

{ch=w [0];

for (j=1;j

w [j-1]=w[j];

}

w [n-1]=ch;

}

39

【填空】给定程序中,函数FUN 的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串的方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

【答案】【1】FILE*【2】fp【3】ch

【改错】下列给定程序中函数fun的功能是:依此取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。【答案】【1】s[j++]=s[i];

【2】s[j]= ′\0′;【编程】请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依此放到一个字符串中。

例如,若二维数组中的数据为:W W W W

S S S S

H H H H

则字符串中的内容应是:WSHWSHWSHWSH。

【答案】

void fun(char (*s)[N],char *b)

{

int i,j,k=0;

for(i=0;i

for(j=0;j

b[k++]=s[j][i];

b[k]=′\0′;}

40

【填空】下列给定程序中函数

fun的功能是:在形参s所指

字符串中寻找与参数c相同的

字符,并在其后插入一个与之

相同的字符,若找不到相同的

字符则不做任何处理。例如,

若s所指字符串为baacda,c

中的字符为a,执行后s所指

字符串为baaaacdaa。

【答案】【1】′\0′【2】0 【3】

c

【改错】在主函数中从键盘输

入若干个数放入数组中,用0

结束输入并放在最后一个元素

中。下列给定程序中函数fun

的功能是:计算数组元素中所

有值为正数的平均值(不包括

0)。

例如:数组中元素中的值

依次为:39,-47,21,2,

-8,15,0,则程序的运行结果为

19.250000。

【答案】【1】double sum=0.0;

【2】sum/=c;

【编程】编写函数fun,其功

能是:根据以下公式计算s,

并计算结果作为函数值返回,n

通过形参传入。例如:若

n的值为11时,函数的值为

1.833333

【答案】

double fun(int n)

{

int i,s1=0;

float s=0.0;

for(i=1;i<=n;i++)

{

s1=s1+i;

s=s+1.0/s1;

}

return s;

}

s1=s1+i;

s=s+1.0/s1;

}

return s;

}

41

【填空】下列给定程序中函数

fun的功能是:将形参s所指

字符串中的所有字母字符顺序

前移,其他字符顺序后移,处

理后将新字符串的首地址作为

函数值返回。

例如,若s所指字符串为:

asd123fgh543df,处理后新字

符串为:asdfghdf123543。

【答案】【1】s[i] 【2】k 【3】

【改错】下列给定程序中函数

fun的功能是:将s所指字符

串中最后一次出现的与t1所

指字符串相同的子串替换成t2

所指字符串,所形成的新串放

在w所指的数组中。要求t1和

t2所指字符串的长度相同。例

如,当s所指字符串中的内容

为:"abcdabfabc",t1所指串

中的内容为"ab",t2所指子串

中的内容为"99"时,结果在w

所指的数组中的内容应为

"abcdabf99c"。

【答案】【1】while (*w)

【2】if ( *r == *p )

【编程】编写函数fun,其功

能是:将s所指字符串中ASCII

值为奇数的字符删除,剩余字

符形成的新串放在t所指数组

中。例如,若s所指字符串中

的内容为:"ABCDEFG12345",

其中字符A的ASCII码值为奇

数、…、字符1的ASCII码值

也为奇数、…都应当删除,其

它依此类推。最后t所指的数

组中的内容应是:"BDF24"。

【答案】

void fun(char *s,char t[])

{

int i,j=0,n;

n=strlen(s);

for(i=0;i

if(s[i]%2==0)

{

t[j]=s[i];

j++;

}

t[j]=′\0′;

}

42

【填空】给定程序中,函数fun

的功能是将参数给定的字符

串、整数、浮点数写到文本文

件中,再用字符串方式从此文

本文件中逐个读入,并调用库

函数atoi和atof将字符串转

换成相应的整数、浮点数,然

后将其显示在屏幕上。

【答案】【1】FILE*

【2】fclose(fp)【3】 fp

【改错】下列给定程序中函数

fun的功能是:对N名学生的

学习成绩,按从高到低的顺序

找出前m(m≤10)名学生来,并

将这些学生数据存放在一个动

态分配的连续存储区中,此存

储区的首地址作为函数值返

回。

【答案】

【1】t=calloc(m,

sizeof(STU));【2】

t[k]=b[j];

【编程】请编写函数fun,该

函数的功能是:删除一维数组

中所有相同的数,使之只剩一

个。数组中的数已按由小到大

的顺序排列,函数返回删除后

数组中数据的个数。

例如,若一维数组中的数

据是:

2 2 2

3

4 4

5

6 6 6 6 7

7 8 9 9 10 10 10

删除后,数组中的内容应

该是:

2 3 4 5 6 7 8 9 10。

【答案】

int fun(int a[], int n)

{

int i,j=1;

for(i=1;i

if(a[j-1]!=a[i])

a[j++]=a[i];

return j;

}

43

【填空】下列给定程序中函数

fun的功能是:计算N×N矩阵

的主对角线元素和反向对角线

元素之和,并作为函数值返回。

要求先累加主对角线元素中的

值,再累加反向对角线元素中

的值。

例如,若N=3,有下列矩

阵:

1 2 3

4 5 6

7 8 9

首先累加1、5、9,然后

累加3、5、7,函数返回值为

30。

【答案】【1】sum=0

【2】t[i][i] 【3】1

【改错】下列给定程序中函数

fun和funx的功能是:用二分

法求方程2x3-4x2+3x-6=0的

一个根,并要求绝对误差不超

过0.001。例如,若给m输入

-100,n输入90,则函数求得

的一个根为2.000。

【答案】【1】double r ;

【2】while

(fabs(n-m) >0.001)

【编程】规定输入的字符串中

只包含字母和*号。编写函数

fun,其功能是:除了字符串前

导和尾部的*号外,将串中其它

的*号全部删除。形参h已指向

字符串中第一个字母,形参p

指向字符串的中最后一个字

母。在编写函数时,不得使用

C语言提供的字符串函数。例

如,若字符串中的内容为

****A*BC*DEF*G*******,删除

后,字符串中的内容应当是:

****ABCDEFG********。

【答案】

void fun(char *a,char *h,

char *p)

{

int i=0;

char *q=a;

while (q

{

a[i]=*q;q++;i++;

}

while (q

{

if(*q!=′*′)

{

a[i]=*q;i++;

}

q++;

}

while (*q)

{

a[i]=*q;i++;q++;

}

a[i]=′\0′;

}

44

【填空】下列给定程序中函数

fun的功能是:找出100到x(x

≤999)之间各位上的数字之和

为15的所有整数,并在屏幕输

出;将符合条件的整数的个数

作为函数值返回。例如,当n

值为500时,各位数字之和为

15的整数有:159、168、177、

186、195、249、258、267、285、

294、339、348、357、366、375、

384、393、429、438、447、456、

465、474、483、492。共有26

个。

【答案】【1】0 【2】x 【3】

t++

【改错】下列给定程序中函数

fun的功能是:先将s所指字

符串中的字符按逆序存放到t

所指字符串中,然后把s所指

串中的字符按正序连接到t所

指串之后。

例如:当s所指的字符串

为"ABCDE"时,t所指的字符串

应为"EDCBAABCDE"。

【答案】【1】int i, s1;

【2】t[i]=s[s1-i-1];

【编程】函数fun的功能是:

将a、b的两个两位正整数合并

成一个新的整数放在c中。合

并的方式是:将a中的十位和

个位数依次放在变量c的百位

和个位上,b中的十位和个位

数依次放在变量c的千位和十

位上。

例如,当a=45,b=12,调

用该函数后c=1425。

【答案】

void fun(int a,int b,long

*c)

{

*c=a%10+(b%10)*10+(a/10)*1

00+(b/10)*1000;

}

45

【填空】下列给定程序中函数

fun的功能是:在形参ss所指

字符串数组中,将所有串长超

过k的字符串中后面的字符删

除,只保留前面的k个字符的。

ss所指字符串数组中共有N个

字符串,且串长小于M。

【答案】【1】[M]【2】N【3】′

\0′

【改错】下列给定程序中函数

fun的功能是:根据以下公式

求π值,并作为函数值返回。

例如,当给指定精度的变量eps

输入0.0005时,应输出

Pi=3.140578。π/2=1+1/3+1/3

×2/5+1/3×2/5×3/7+1/3×

2/5×3/7×4/9+……

【答案】【1】t=1.0;【2】

return(s*2);

【编程】规定输入的字符串中

只包含字母和*号。请编写函数

fun,其功能是:使字符串的前

导*号不得多于n个,若多于n

个,则删除多余的*号;若少于

或等n个,则不做处理,字符

串中间和尾部的*号不删除。

例如,字符串中的内容为:

*******A*BC*DEF*G****,若n

的值为4,删除后,字符串中

的内容应当是:

****A*BC*DEF*G****;若n的

值为8,则字符串中的内容仍

为:*******A*BC*DEF*G****。

n的值在主函数中输入。

【答案】

void fun(char *a,int n )

{

int i=0, k=0;

char *p, *t;

p=t=a;

while(*t==′*′)

{k++; t++;}

if(k>n)

{ while(*p)

{a[i]=*(p+k-n);

i++;

p++;

}

a[i]=′\0′;

}

}

46

【填空】下列给定程序中函数fun的功能是:将自然数1~10及其平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。

【答案】【1】fp 【2】fclose(fp) 【3】fname

【改错】下列给定程序中fun 函数功能是:将n个无序整数从小到大排序。

【答案】【1】for(i=j+1;i

【编程】编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。

例如,当a=45,b=12时,调用该函数后c=2514。

【答案】

void fun(int a,int b,long *c)

{

*c=a/10+(b/10)*10+(a%10)*1 00+(b%10)*1000;

}

47

【填空】下列给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去掉,剩余的数按原来从高位到低位的顺序组成一个新数,并通过形参指针n传回所指变量。

例如,若输入一个数27638496,则新数为739。

【答案】【1】10 【2】0 【3】x

【改错】下列给定程序中函数fun的功能是:计算n!。

例如,给n输入5,则输出120.000000。

【答案】【1】if( n==0)

【2】result *=n--;【编程】请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

【答案】

long fun(char *p)

{

long n=0;

int flag=1;

if(*p==′-′)

else if(*p==′+′)

p++;

while(*p!=′\0′)

{n=n*10+*p-′0′;

p++;

}

return n*flag;

}

48

【填空】下列给定程序中函数fun的功能是:将N×N矩阵中元素的值按列向右移动1个位置,右边被移出矩阵的元素绕回左边第1列。例如,N=3,有下列矩阵

1 2 3

4 5 6

7 8 9

计算结果为

3 1 2

6 4 5

9 7 8

【答案】【1】N 【2】N-1 【3】0 【改错】下列给定程序中函数

fun的功能是:计算并输出下

列级数的前N项和SN,直到

SN+1的值大于q为止,q的值

通过形参传入。例如,若q的

值为50.0,则函数值应为

49.394948。

【答案】【1】s=s +

(double)(n+1)/n;

【2】return t;

【编程】编写函数fun,其功

能是:求Fibonacci数列中大

于t的最小的数,结果由函数

返回。Fibonacci数列F(n)的

定义为:

F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2)

例如,当t=1000时,函数值为

1597。

【答案】

int fun(int t)

{

int f0=0, f1=1,f;

do{

f=f0+f1;

f0=f1; f1=f;

}while(f

return f;

}

49

【填空】下列给定程序中函数

fun的功能是:把形参a所指

数组中的最大值放在a[0]中,

接着求出a所指数组中的最小

值放在a[1]中,再把a所指数

组元素中的次大值放在a[2]

中,把a数组元素中的次小值

放在a[3]中,以此类推。例如,

若a所指数组中的数据最初排

列为:1、4、2、3、9、6、5、

8、7,按规则移动后,数据排

列为:9、1、8、2、7、3、6、

4、5。形参n中存放a所指数

组中数据的个数。

【答案】【1】a[] 【2】2 【3】

i+1

【改错】下列程序中函数fun

的功能是:按顺序给s所指数

组中的元素赋予从2开始的偶

数,然后再按顺序对每五个元

素求一个平均值,并将这些值

依次存放在w所指的数组中。

若s所指数组中元素的个数不

是5的倍数,则多余部分忽略

不计。

例如,s所指数组有14个

元素,则只对前10个元素进行

处理,不对最后的4个元素求

平均值。

【答案】【1】sum=0.0;

【2】if((i+1)%5==0)

【编程】学生的记录由学号和

成绩组成,N名学生的数据已

在主函数中放入结构体数组s

中,请编写函数fun ,其功能

是:把低于平均分的学生数据

放入b所指的数组中,低于平

均分的学生人数通过形参n传

回,平均分通过函数值返回。

【答案】

double fun(STREC *a, STREC

*b, int *n)

{

int i,j=0;

double av=0.0;

for(i=0;i

av=av+a[i].s;

av=av/N;

for(i=0;i

if(a[i].s

b[j++]=a[i];

*n=j;

return av;

}

50

【填空】下列给定程序中函数

fun的功能是:在带头结点的

单向链表中,查找数据域中值

为ch的结点。找到后通过函数

值返回该结点在链表中所处的

顺序号;若不存在值为ch的结

点,函数返回0值。

【答案】【1】NULL 【2】n

【3】head,ch

【改错】下列给定程序中函数

fun的功能是:删除指针p所

指字符串中的所有空白字符

(包括制表符、回车符及换行

符)。

输入字符串时用’#’结

束输入。

【答案】

【1】for(i=0,t=0;p[i];i++)

【2】c[t]= ′\0′;

【编程】编写函数fun,其功

能是:将ss所指字符串中所有

奇数位上的字母转换为大写

(若该位置上不是字母,则不转

换)。例如,若输入"abc4EFg",

则应输出"aBc4EFg"。

【答案】

void fun(char *ss)

{

int i;

for(i=0;ss[i]!=′\0′;i++)

if(i%2==1&&ss[i]>=′a′

&&ss[i]<=′z′)

ss[i]=ss[i]-32;

}

51

【填空】下列给定程序中函数

fun的功能是:将形参n中,

各位上为偶数的数取出,并按

原来从高位到低位的顺序组成

一个新数,作为函数值返回。

例如,从主函数输入一个

整数27638496,则函数返回值

为26846。

【答案】【1】 1【2】 s>0 【3】

i*10

【改错】下列给定程序中函数

fun的功能是:输出M×M整数

方阵,然后求两条对角线上元

素之和,并作为函数值返回。

【答案】【1】int fun(int n,

int xx[][M])【2】

printf("%d",xx[i][j]);

【编程】编写函数fun,其功

能是:将a、b中的两个两位数

正整数合并成一个新的整数放

在c中。合并的方式是:将a

中的十位和个位数依次放在变

量c的千位和十位上,b中的

十位和个位数依次在变量c的

个位和百位上。例如,当a=45,

b=12,调用该函数后c=4251。

【答案】

void fun(int a,int b,long

*c)

{

*c=b/10+(a%10)*10+(b%10)*1

00+(a/10)*1000;

}

52

【填空】下列给定程序中函数

fun的功能是:把形参a所指

数组中的偶数按原顺序依次存

放到a[0]、a[1]、a[2]、……

中,把奇数从数组中删除,偶

数的个数通过函数值返回。

例如,若a所指数组中的

数据最初排列列为:9、1、4、

2、3、6、5、8、7,删除奇数

后a所指数组中的数据为:4、

2、6、8,返回值为4。

【答案】【1】a[i]%2

【2】a[j] 【3】 j

【改错】下列给定程序中函数

fun的功能是:按以下递归公

式求函数的值。

fun(n)= /10

(n=1)

\fun(n-1)+2

(n>1)

例如,当给n输入5时,

函数值为18;当给n输入3时,

函数值为14。

【答案】【1】int fun (int n)

【2】if (n==1)

【编程】规定输入的字符串中

只包含字母和*号。请编写函数

fun,其功能是:使字符串中尾

部的*号不多于n个,若多于n

个,则删除多余的*号;若少于

或等于n个,则不做任何操作,

字符串中间和前面的*号不删

除。

例如,字符串中的内容为:

****A*BC*DEF*G*******,若n

的值为4,删除后,字符串中

的内容应为:

****A*BC*DEF*G****;若n的

值为7,则字符串中的内容仍

为:****A*BC*DEF*G*******。

n的值在主函数中输入。

【答案】

void fun( char *a,int n )

{

int i=0,k=0;

char *p, *t;

p=t=a;

while(*t)

t++;

t--;

while(*t==′*′)

{k++;t--;}

if(k>n)

{while(*p&&p

{a[i]=*p;

i++;p++;

}

a[i]=′\0′;

}

}

53

【填空】下列给定程序中函数

fun的功能是:统计带头结点

的单向链表中结点的个数,并

存放在形参n所指的存储单元

中。

【答案】【1】*n【2】 next【3】

head

【改错】下列给定程序中函数

fun的功能是:求出s所指字

符串中最后一次出现的t所指

字符串的地址,并通过函数值

返回,在主函数中输出从此地

址开始的字符串;若未找到,

则函数值为NULL。

例如,当字符串中的内容

为:"abcdabfabcdx",t中内

容为:"ab"时,输出结果应是:

abcdx。当字符串中的内容为:

"abcdabfabcdx",t中内容为:

"abd"时,则程序输出未找到信

息:not be found!。

【答案】【1】a=NULL;

【2】if(*r==*p)

【编程】函数fun的功能是:

将s所指字符串中除下标为偶

数同时ASCII码值也为偶数的

字符外,其余的全部删除;字

符串中剩余字符所形成的新串

放在t所指的数组中。

例如,若s所指字符串中

的内容为:"ABCDEFG123456",

其中字符A的ASCII码值为奇

数,因此应当删除;其中字符

B的ASCII码值为偶数,但在

数组中的下标为奇数,因此也

应当删除;字符2的ASCII码

值为偶数,但在数组中的下标

为奇数,因此不应当删除,其

它依此类推。最后t所指的数

组中的内容应是"246"。

【答案】

void fun(char*s, char t[])

{

int i,j=0;

for(i=0;s[i]!=′\0′;i++)

if(i%2==0&&s[i]%2==0)

t[j++]=s[i];

t[j]=′\0′

}

54

【填空】下列给定程序的功能

是调用fun函数建立班级通讯

录。通讯录中记录每位学生的

编号、姓名和电话号码。班级

人数和学生信息从键盘读入,

每个人的信息作为一个数据块

写到名为myfile5.dat的二进

制文件中。

【答案】【1】STYPE 【2】FILE

【3】 fp

【改错】下列给定程序中函数

fun的功能是:先将字符串s

中的字符按正序存放到字符串

t中,然后把s中的字符按逆

序连接到字符串t的后面。例

如,当s中的字符串为"ABCDE"

时,则t中的字符串应为:

"ABCDEEDCBA"。

【答案】【1】for ( i=0; i

i++) 【2】

t[2*s1]=‘\0’

【编程】函数fun的功能是:

将两个两位数的正整数 a、b

合并成一个整数放在c中。合

并的方式是:将a数的十位和

个位数依次放在c数的千位和

十位上,b数的十位和个位数

依次放在c数的百位和个位

上。

例如,当a=45,b=12时,调用该函数后c=4152。 【答案】 void fun(int a ,int b ,long *c) { *c=b%10+(a%10)*10+(b/10)*100+(a/10)*1000; } 55 【填空】程序通过定义学生结构体数组,存储若干名学生的学号、姓名和3门课的成绩。函数fun 的功能是:将存放学生数据的结构体数组,按姓名的字典序(从小到大)排序。 【答案】【1】struct student 【2】n-1【3】 a[i].name ,a[j].name 【改错】下列给定程序中函数fun 的功能是:从p 所指字符串中找出ASCII 码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。 例如,调用fun 函数之前给字符串输入:ABCDeFGH ,调用后字符串中的内容应为:eABCDFGH 。 【答案】【1】q=p+i ; 【2】while(q>p) 【编程】学生的记录由学号和成绩组成,N 名学生的数据已放入主函数中的结构体数组s 中,请编写函数fun ,其功能是:把指定分数范围内的学生数据放在b 所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60 69,则应当把分数在60~69的学生数据输出,包含60分和69分的学生数据。主函数中把60放在low 中,把69放在heigh 中。 【答案】 int fun (STREC *a, STREC *b, int l, int h ) { int i ,j=0; for(i=0;i=l&&a[i].s<=h) b[j++]=a[i]; return j ; } 56【填空】人员的记录由编号和出生年、月、日组成,N 名人员的数据已在主函数中存入结构体数组std 中,且编号唯一。函数fun 的功能是:找出制定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。 【答案】【1】 STU 【2】std[i].num 【3】std[i] 【改错】下列给定函数中函数fun 的功能是:从s 所指字符串中,找出t 所指字符串的个数作为函数值返回。例如,当s 所指字符串中的内容为abcdabfab ,t 所指字符串的内容为ab ,则函数返回整数3。 【答案】【1】if(*r= =*p) {r++;p++ ; }【2】if( *r= =′\0′) 【编程】请编写函数fun ,其功能是:将s 所指字符串中除了下标为奇数、同时ASCII 值为偶数的字符删除,串中剩余字符所形成的一个新串放在t 所指的数组中。 例如,若s 所指字符串中的内容为ABCDEFG12345,其中字符B 的ASCII 码值为偶数,字符2的ASCII 码值为偶数,都应当删除;其他依此类推,最后t 所指的数组中的内容应是ACEG135。 【答案】 void fun(char *s, char t[]) { int i=0; for(;*s!='\0';s++) if(*s%2==1) t[i++]=*s; t[i]='\0'; } 57 【填空】人员的记录由编号和出生年、月、日组成,N 名人员的数据已在主函数中存入结构体数组std 中。函数fun 的功能是:找出指定出生年份人员,将其数据放在形参k 所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。 【答案】【1】std[i].year 【2】std[i] 【3】n 【改错】下列给定程序的功能是:读入一个整数k(2≤k ≤10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。 【答案】【1】IsPrime(int n) 【2】if(!(n%i)) 【编程】已知学生的记录由学号和学习成绩构成,N 名学生的数据已存入a 结构体数组中。请编写函数fun ,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 【答案】 fun(STU a[], STU *s)

{

int i ; *s=a[0]; for(i=0;is1) 【编程】程序定义了N ×N 的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n 。例如,若n 的值为3,a 数组中的值为: 1 9 7 a= 2 3 8 4 5 6 则返回主程序后a 数组中的值应为: 3 9 7 6 9 8 12 15 18 【答案】 void fun(int a[][N],int n) { int i ,j ; for(i=0;i

能是:将数组左下半三角元素中的值全部置0。例如a 数组值为: 1 9 7 2 3 8 4 5 6 则返回主程序后a 数组中的值为: 0 9 7 0 0 8 0 0 0 【答案】 void fun (int a[][N]) { int i,j; for(i=0;imax) max=tt[i][j]; pp[j]=max; } } 61 【填空】程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun 的功能是输出这位学生的信息。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 【答案】【1】tt 【2】tt.score[i] 【3】std 【改错】下列给定程序中,函数fun 的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。 【答案】 【1】void fun(int *a, int n) 【2】m=i ; 【编程】编写函数fun ,w 是一个大于10的无符号整数,若w 是n(n ≥2)位的整数,则函数求出w 的后n -1位的数作为函数值返回。 例如,w 值为5923,则函数返回923;若w 值为923,则函数返回23。 【答案】 unsigned fun(unsigned w) { int n=1,j,s=1; unsigned t; t=w; while(t>=10) { t=t/10; n++; } for(j=1;j

return w%s; } 62 【填空】给定程序中,函数fun 的功能是:对形参ss 所指字符串组中的m 个字符串长度由短到长进行排序。ss 所指字符串数组中共有M 个字符串,切串长小于n 。 【答案】【1】i+1【2】k=j 【3】t 【改错】下列给定函数中函数fun 的功能是:判断ch 中的字符是否与str 所指中的某个字符相同,相同,什么也不做,不同则将其插在串的最后。

【答案】 【1】void fun( char *str ,char ch)【2】if (*str !=ch )【3】str[1]=0 【编程】请编一个函数fun(char *s), 该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg ,则调用该函数后,串中的内容为gfedcba 。 【答案】

fun(char *s) {char ch; int i,n; i=0; n=strlen(s)-1; while(i<=(n+1)/2) { ch=s[i]; s[i]=s[n]; s[n]=ch; i++; n--; } } 63 【填空】给定函数中,函数fun 的功能是:求出形参ss 所指字符串组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有m 个字符串,切串长小宇N 【答案】【1】k 【2】len 【3】ss[i][j] 【改错】下列给定程序中,函数fun 的功能是:计算整数n 的阶乘。 【答案】【1】result*=n--; 【2】return result ; 【编程】编写函数fun ,该函数的功能是:从字符串中删除指定的字符。同字母的大、小写按不同字符处理。 例如,若程序执行时输入字符串为:turbo c and borland c++ 从键盘上输入字符n ,则输出为: turbo c ad borlad c++ 如果输入的字符在字符串中不存在,则字符串照原样输出。

【答案】

void fun(char s[], int c) { int i=0; char *p ; p=s ; while(*p) { if(*p !=c) { s[i]=*p ; i++; } } s[i]=′\0′; } 64 【填空】给定程序中,函数fun 的功能是:求出形参ss 所指字符串组中最长字符串的长度。将其余字符串右边用字符*补齐,使其与等长。Ss 所指字符串数组中共有M 个字符串,切串长小于N 【答案】【1】ss[i]【2】n+j 【3】1 【改错】下列给定程序的功能是:读入一个英文文本行,将其中每个单词的最后一个字母

改成大写,然后输出此文本行(这里"单词"是指由空格隔开

的字符串)。例如,若输入I am astudent to take the examination,则应输出I aM A studenT To takE thE examinatioN。

【答案】【1】if(*p==’’)【2】

*(p-1)=toupper(*(p-1));

【编程】请编写函数fun(),对

长度为7个字符的字符串,除

首、尾字符外,将其余5个字符

按ASCII值码降序排列。例如:

原来的字符串为CEAedca,则排

序后输出为CedcEAa。

【答案】

int fun(char *s, int num) {

char ch;

int i, j;

for(i=1;i

for(j=i+1;j

if(*(s+i)<*(s+j))

{

ch=*(s+j);

*(s+j)= *(s+i);

*(s+i)=ch;

}

}

}

65

【填空】给定程序中,函数fun

的功能是:求ss所指字符串数

组中长度最长的字符串所在的

行下标,作为函数值返回,并

把其串长放在形参n所指变量中。ss所指字符串数组中共有

M个字符串,且串长

【答案】【1】[N]【2】len【3】

*n=len

【改错】下列给定程序中,fun

函数的功能是:根据形参m,

计算下列公式的值:

t=1+1/2+1/3+1/4+…+1/m

例如,若输入5,则应输

出2.283333。

【答案】【1】t+=1.0/i;

【2】return t;

【编程】编写一个函数,该函

数可以统计一个长度为2的字

符串在另一个字符串中出现的

次数。例如,假定输入的字符

串为asd asasdfg asd as zx67 asd mklo,子字符串为as,则

应当输出6。

【答案】

int fun(char *str, char

*substr)

{

int i,j=0;

for(i=0;str[i+1]!=′\0′;

i++)

if(str[i]==substr[0]&&str[

i+1]==substr[1])

j++;

return j;

}

66

【填空】函数fun的功能是进

行字母转换。若形参ch中的是

小写英文字母,则转换成对应

的大写英文字母:若ch中式大

写英文字母,则转换成对应的

小写英文字母;若是其他字符

则保持不变;并转换后的结果

作为函数值返回。

【答案】【1】&&【2】’A’【3】

ch

【改错】下列给定程序中,函

数fun的功能是:给一维数组

a输入任意4个整数,并按如

下的规律输出。例如,输入1、2、3、4,程序运行后输出以下

方阵:

4 1 2 3

3 4 1 2

2 3 4 1

1 2 3 4

【答案】【1】void fun(int *a)

【2】a[j]=a[j-1];

【编程】请编写一个函数fun,

它的功能是:计算并输出给定

整数n的所有因子(不包括1与

自身)之和。规定n的值不大于1000。

例如,若主函数从键盘给n输入的值为856,则输出为

sum=763。

【答案】

int fun(int n)

{

int s=0,i;

for(i=2;i<=n-1;i++)

if(n%i==0)

s+=i;

return s;

}

67

【填空】函数fun的功能是:

计算。。。的前n项和。若x=2.5,

n=15是,函数值为1.917914

【答案】【1】1.0 【2】-1 【3】

t

【改错】下列给定程序中,函

数fun的功能是:从3个红球、

5个白球、6个黑球中任意取出

8个作为一组,进行输出。在

每组中,可以没有黑球,但必

须要有红球和白球。组合数作

为函数值返回。正确的组合数

应该是15。程序中i的值代表

红球数,j的值代表白球数,k

的值代表黑球数。

【答案】【1】for(i=1;i<=3;

i++) 【2】

if((k>=0&&k<=6)

【编程】请编写函数fun,其

功能是计算并输出如下多项式

的值:

Sn=l+1/1!+1/2!+1/3!

+1/4!+…+1/n!

例如,若主函数从键盘给

n输入15,则输出为

S=2.718282。

【答案】

double fun(int n)

{

double t,sn=1.0;

int i,j;

for(i=1;i<=n;i++)

{

t=1.0;

for(j=1;j<=i;j++)

t*=j;

sn+=1.0/t;

}

return sn;

}

68

【填空】函数fun的功能是:

计算。。。若x=2.5,函数值为

1.917915.

【答案】【1】-x【2】n【3】abs

(t)

【改错】下列给定程序中函数

fun的功能是:求整数x的y

次方的低3位值。例如,整数

5的6次方为15625,此值的低

3位值为625。

【答案】

【1】for(i=1;i<=y;i++)

【2】t=t%1000;

【编程】请编写函数fun,其

功能是:计算并输出当x<0.97

时,如下多项式的值,直到

|Sn-Sn-1|<0.000001为止。例

如,若主函数从键盘给x输入

0.21后,则输出为

S=1.100000。

【答案】

double fun(double x)

{

double s1=1.0,p=1.0,

sum=0.0,s0,t=1.0;

int n=1;

do

{

s0=s1;

sum+=s0;

t*=n;

p*=(0.5-n+1)*x;

s1=p/t;

n++;

}while(fabs(s1-s0)>=1e-6);

return sum;

}

69

【填空】函数fun的功能是:

计算。。。的前n项和。若x=2.5,

函数值为12.182340.

【答案】【1】1.0 【2】1 【3】

i

【改错】下列给定程序中,函

数fun的功能是:找出100到

n(不大于1000)之间三个位上

的数字都相等的所有整数,把

这些整数放在s所指的数组

中,个数作为函数值返回。

【答案】【1】k=i;【2】b=k%10;

【编程】请编写函数fun,其

功能是:计算并输出给定10个

数的方差。

其中:例如,给定的10个数为

95.0,89.0,76.0,65.0,88.0,7

2.0,85.0,81.0,90.0,56.0,则

输出为S=11.730729。

【答案】

double fun(double x[10])

{

double x1=0.0,s=0.0;

int i;

for(i=0;i<10;i++)

x1=x1+x[i];

x1=x1/10;

for(i=0;i<10;i++)

s=s+(x[i]-x1)*(x[i]-x1);

return sqrt(s/10);

}

70

【填空】函数fun的功能是:

计算。。。。若x=2.5,函数值为

12.182494.

【答案】【1】x 【2】n 【3】t

【改错】下列给定程序中,函

数fun的功能是:计算n的5

次方的值(规定n的值大于2且

小于8),通过形参指针传回主

函数,并计算该值的个位、十

位、百位上数字之和作为函数

值返回。例如,7的5次方是1

6807,其低3位数的和值是15。

【答案】【1】d=1;【2】s=0;

【3】d=d/10;

【编程】请编写函数fun,其

功能是:计算并输出给定数组

(长度为9)中,每相邻两个元

素的平均值的平方根之和。

例如,若给定数组中的9

个元素依此为12.0、34.0、4.0、

23.0、34.0、45.0、18.0、3.0、

11.0,则输出应为

s=35.951014。

【答案】

double fun(double x[9])

{

double sum=0.0;

int i,j=1;

for(i=0;i<9;i++)

if(j<=8)

{

sum+=sqrt((x[i]+x[i+1])/2.

0);

j++;

}

return sum;

}

71

【填空】函数fun的功能是:

统计所有小于等于n(n>2)的

素数的个数,素数的个数作为

函数值返回。

【答案】【1】j=2【2】i【3】j

【改错】数列中,第一项为3,

后一项都比前一项的值增5。

下列给定程序中,函数fun的

功能是:计算前n(4≤n≤50)

项的累计和。在累加过程中把

那些被4除后余2的当前累加

值放入数组中,符合此条件的

累加值的个数作为函数值返回

主函数里。如当n的值为20时,

该数列为

3,8,13,18,23,28,…,93,98。

符合此条件的累加值应为

42,126,366,570,1010。

【答案】【1】int i,j=0,k,

sum;

【2】if(sum%4==2)

【3】return j++;

【编程】请编写函数fun,其

功能是:计算并输出下列多项

式值,

S=(1-1/2)+(1/3-1/4)+…

+(1/(2n-1)-1/2n)

例如,若主函数从键盘给

n输入8后,则输出为S=

0.662872。

【答案】

double fun(int n)

{

int i;

double s=0.0;

for(i=1;i<=n;i++)

s=s+(1.0/(2]

return s;

}

72

【填空】函数fun的功能是:

统计长整数n的各位上出现数

字1、2、3的次数,并用外部

(全局)变量c1\c2\c3返回主

函数。例如,当n=123114350

时,结果应该为:c1=3 c2=1

c3=2

【答案】【1】n%10【2】break 【3】

break

【改错】下列给定程序中函数

fun实现的功能是:统计一个

无符号整数中各位数字值为0

的个数,通过形参传回主函数,

并把该整数中各位上最大的数

字值作为函数值返回。例如,

若输入无符号整数30800,则

数字值为0的位的个数为3,

各位上数字值最大的是8。

【答案】【1】if(t==0)

【2】*zero=count;

【编程】请编写函数fun,其

功能是:计算并输出下列多项

式的值。

S=1+1/(1*2)+1/(1*2*3)+…

+1/(1*2*3*…*n)

例如,若主函数从键盘给

n输入50后,则输出为

S=1.718282。

【答案】

double fun(int n)

{

double s=0,m=1;

int i;

for(i=1;i<=n;i++)

{

m=m*i;

s+=1/m;

}

return s;

}

73

【填空】用筛选法可得到2~n

(n<10000)之间的所有素数,

方法是:首先从素数2开始,

将所有2的倍数的数从数表中

删去(把数表中相应位置的值

置0)…………这样会得到一

个序列:2,3,5,7,11,13…….

【答案】【1】a[i]【2】a[i]

【3】0

【改错】下列给定函数中函数

fun的功能是:为一个偶数寻

找两个素数,这两个素数之和

等于该偶数,并将这两个素数

通过形参指针传回主函数。

【答案】【1】y=1;【2】d=a-i;

【编程】请编写函数fun,它

的功能是:计算并输出n(包括

n)以内所有能被5或9整除的

自然数的倒数之和。例如,若

主函数从键盘给n输入20后,

则输出为s= 0.583333。

注意:n的值要求不大于100。

【答案】

double fun(int n)

{

int i;

double sum=0.0;

for(i=1;i<=n;i++)

if(i%5==0||i%9==0)

sum+=1.0/i;

return sum;

}

74

【填空】甲乙丙丁4人同时开

始放鞭炮,甲每隔t1s放一次,

乙每隔t2s放一次………第一

声响是在第0秒。

例如,t1=7,t2=5,t3=6,t4=4,

n=10,则总共可听到28次鞭炮

声。

【答案】【1】i【2】t++【3】

count

【改错】下列给定程序中函数

fun的功能是根据输入的3个

边长(整型值),判断能否构成

三角形:若能构成等边三角形,

则返回3,若是等腰三角形,

则返回2,若能构成三角形则

返回1,若不能,则返回0。

【答案】

【1】return 3;【2】return 1;

【编程】请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。

【答案】

double fun(int n)

{

int m,k,i;

double s=0.0;

for(m=3;m<=n;m++)

{

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>=k+1)

s+=sqrt(m);

}

return s;

}

75

【填空】函数fun的功能是:从三个形参啊a、b、c中找出中间的数,并作为函数返回值。例如a=3,b=5,c=4时,中间数为4

【答案】【1】a【2】a【3】b 【改错】下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第5个字母,若小写字母为v~z,则使小写字母的值减21。转换后的小写字母作为函数值返回。例如,若形参字母A,则转换为f;形参字母W,则转换为b。

【答案】【1】c=c+32;【2】c=c+5;

【编程】请编写函数fun,该函数的功能是:计算并输出…………………例如,若主函数从键盘给n输入20后,则输出为S=534.188884。

【答案】

double fun(int n)

{

int i;

double s=0.0,s1=0.0;

for(i=1;i<=n;i++)

{ s1=s1+pow(i,0.5);

s=s+s1;

}

return s;

}

76

【填空】程序通过定义学生结构体变量,存储了学生的学号、姓名、和三门课的成绩。所有学生的数据均以二进制方式输入到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。

【答案】【1】filename

【2】fp【3】fp

【改错】下列给定程序中的函数Creatink()的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。

【答案】【1】p=(NODE*)malloc (sizeof(NODE));

【2】return h;

【编程】请编写函数fun,其功能是:统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行开始没有空格。

【答案】

int fun(char *s)

{

int i,j=0;

for(i=0;s[i]!='\0';i++) if(s[i]!='

'&&(s[i+1]=='

'||s[i+1]=='\0')) j++;

return j;

}

77

【填空】给定程序中,函数fun 的功能是:计算形参x所指数组中的N个数的平均值(规定所有数均为正数),作为函数值返回,并将大于平均值的数放

在形参y所指数组中,在主函

数中输出。例如,有10个正数。

46.30.32.40.6.17.45.15.48.

26.其平均值为30.500000

主函数中输出:46,

32,40,45,48

【答案】【1】0.0【2】x[i]/N

【3】j++

【改错】下列给定程序中,函

数fun的功能是:根据整型参

数m,计算如下公式的值。

y=1/(100×100)+1/(200

×200)+1/(300×300)+…

+1/(m×m)例如,若m=2000,

则应输出0.000160。

【答案】【1】double fun(int m)

【2】for(i=100;i<=m;i+=100)

【编程】已知学生的记录由学

号和学习成绩构成,N名学生

的数据已存入a结构体数组

中。请编写函数fun,该函数

的功能是:找出成绩最低的学

生记录,通过形参返回主函数

(规定只有一个最低分)。已给

出函数的首部,请完成该函数。

【答案】

fun(STU a[], STU *s)

{

int i;

*s=a[0];

for(i=0;i

if(s->s>a[i].s)

*s=a[i];

}

78

【填空】给定程序中,函数fun

的功能是:计算x所指数组中

n个数的平均值(规定所有书

均为整数),平均值通过形参返

回给主函数,将小于平均值且

最接近平均值的书作为函数值

返回,在主函数中输出。例如,

有10个正数:

46.30.32.40.6.17.45.15.48.

26,平均值为30.500000

主函数中输出m=30.0

【答案】【1】*av【2】i【3】

x[j]

【改错】下列给定程序中函数

fun的功能是:根据整型形参

n,计算如下公式的值。

A1=1,A2=1/(1+A1),

A3=1/(1+A2),…,

An=1/(1+A(n-1))

例如,若n=10,则应输出

0.617977。

【答案】【1】float fun(int n)

【2】for(i=2;i<=n;i++)

【编程】下列程序定义了N×N

的二维数组,并在主函数中自

动赋值。请编写函数fun(int

a[ ][N],int n),该函数的功

能是:使数组右上半三角元素

中的值乘以m。例如,若m的

值为2,a数组中的值为:

1 9 7

a= 2 3 8

4 5 6

则返回主程序后a数组中的值

应为:

2 18 14

2 6 16

4 5 12

【答案】

void fun(int a[][N],int m)

{

int i,j;

for(j=0;j

for(i=0;i<=j;i++)

a[i][j]=a[i][j]*m;

}

79

【填空】给定程序中,函数FUN

的功能是:计算形参x所指数

组中n个数的平均值(规定所

有数均为正数),将所指数组中

大于平均值的数据移至数组的

前部,小于等于平均值的数据

移至x所指数组的后部,平均

值作为函数值返回. 例如,有

10个正数。

46.30.32.40.6.17.45.15.48.

26.其平均值为30.500000

主函数中输出:46,

32,40,45,48,30,6,17,15,26

【答案】【1】s/N【2】j++【3】

-1

【改错】下列给定程序的功能

是:读入一个英文文本行,将

其中每个单词的最后一个字母

改成大写,然后输出此文本行

(这里"单词"是指由空格隔开

的字符串)。例如,若输入I am

astudent to take the

examination,则应输出I Am A

StudenT To Take The

eExamination。

【答案】【1】void upfst(char

*p)

【编程】下列程序定义了N×N

的二维数组,并在主函数中赋

值。请编写函数fun,函数的

功能是:求出数组周边元素的

平均值并作为函数值返回给主

函数中的s。例如,若a 数组

中的值为:

0 1 2 7 9

1 9 7 4 5

2 3 8 3 1

4 5 6 8 2

5 9 1 4 1

则返回主程序后s的值应

为3.375。

【答案】

double fun (int w[][N])

{

int i,j,k=0;

double av=0.0;

for(i=0;i

for(j=0;j

if(i==0||i==N-1||j==0||j==

N-1)

{av=av+w[i][j];

k++;

}

return av/k;

}

80

【填空】给定程序中,函数fun

的功能是:计算形参X所指数

组中N个数的平均值(规定所

有数均为正数),将所指数组中

小于平均值的数据移至数据的

前部,大于等于平均值的数据

移至x所指数组的后部,平均

值作为函数值返回,在主函数

中输出平均值和移动后的数

据。例如,有10个正数:47,

30,32,40,6,17,45,15,

48,16,其平均值为30.500000.

移动后的输出为:30,6,17,

15,26,46,32,40,45,48.

【答案】【1】x[i]/N 【2】j++

【3】i++

【改错】下列给定程序中函数

fun的功能是:统计字符串中

各元音字母(即A、E、I、O、

U)的个数。注意:字母不分大

小写。例如,输入THIs is a

boot,则应输出是1 0 2 2 0。

【答案】

【1】void fun(char *s, int

num[5])

【2】num[k]=0;【3】

switch(*s)

【编程】请编写函数fun,函

数的功能是:求出二维数组周

边元素之和,作为函数值返回。

二维数组中的值在主函数中赋

予。

例如,若二维数组中的值

1 3 5 7 9

2 9 9 9 4

6 9 9 9 8

1 3 5 7 0

则函数值为61。

【答案】

int fun( int a[M][N])

{

int i,j,sum=0;

for(i=0;i

for(j=0;j

if(i==0||i==M-1||j=

=0||j==N-1)

sum=sum+a[i][j];

return sum;

}

81

【填空】给定程序中,函数fun

的功能是将a和b所指的两个

字符串分辨转换成面值相同的

整数,并进行相加作为函数值

返回,规定字符串中只含9个

以下数字字符。例如,主函数

中输入字符串“32486”和

“12345”,在主函数中输出的

函数值为44831.

【答案】【1】’0’【2】s++

【3】ctod(a)+ctod(b)

【改错】下列给定程序中,函

数fun的功能是:分别统计字

符串中大写字母和小写字母的

个数。例如,给字符串s输入:

AAaaBBbb123CCcccd,则应输出

结果:upper=6,lower=8。

【答案】

【1】void fun(char *s, int *a,

int *b)

【2】*a=*a+1;【3】 *b=*b

+1;

【编程】请编一个函数 float

fun(double h),函数的功能

是:对变量h中的值保留两位

小数,并对第三位进行四舍五

入(规定h中的值为正数)。

例如,若h 值为

1234.567,则函数返回

1234.570000;若h值为

1234.564,则函数返回

1234.560000。

【答案】

float fun (float h)

{

long t;

t=(h*1000+5)/10;

return (float)t/100;

}

82

【填空】给定程序中,函数fun

的功能是:调用随机函数产生

20个互不相同的整数放在形参

a所指数组中(此数组在主函

数中已置0)

【答案】【1】N【2】break 【3】

n

【改错】下列给定程序中,函

数fun的功能是:先从键盘上

输入一个3行、3列的矩阵的

各个元素的值,然后输出主对

角线元素之和。

【答案】【1】sum=0;

【2】scanf("%d",&a[i][j]);

【编程】编写程序,实现矩阵

(3行、3列)的转置(即行列互

换)。

例如,若输入下面的矩阵:

100 200 300

400 500 600

700 800 900

则程序输出:

100 400 700

200 500 800

300 600 900

【答案】

void fun (int array[3][3])

{

int i,j,t;

for(i=0;i<3;i++)

for(j=i+1;j<3;j++)

{t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

83

【填空】给定程序中,函数fun

的功能是:找出N*N矩阵中每

列元素中的最大值,并按顺序

依次存放于形参b所指的一维

数组中。

【答案】【1】a[0][i]【2】<【3】

x,y

【改错】函数fun的功能是:

将主函数中两个变量的值进行

交换。例如,若变量a中的值

为8,b中的值为3,则程序运

行后,a中的值为3,b中的值

为8。

【答案】

【1】void fun(int *x, int *y)

【2】t=*x; *x=*y; *y=t;

【编程】编写函数int fun(int

lim, int aa[MAX]),该函数的

功能是求出小于或等于lim的

所有素数并放在aa数组中,该

函数返回所求出的素数的个

数。

【答案】

int fun(int lim, int

aa[MAX])

{

int i,j,k=0;

for(i=2;i<=lim;i++) { for(j=2;j

if(i%j==0) break;

if(j>=i)

aa[k++]=i;

}

return k;

}

84

【填空】给定程序中,函数fun 的功能是建立一个N*N得矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第二层元素的值全部为2;第三层元素的值全部为3,。。。以此类推。例如,若N=5.生成的矩阵为:

1 1 1 1 1

1 2 2 2 1

1 2 3 2 1

1 2 2 2 1

1 1 1 1 1

【答案】【1】[N]【2】i【3】i+1 【改错】下列给定程序中,函数fun的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。

【答案】【1】void fun(int m, int k)

【2】aa[i]=m%k;

【3】printf("%d",aa[i-1]);【编程】编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

【答案】

char* fun(char (*a)[81], int num, char *max)

{

int i=0;

max=a[0];

for(i=0;i

if(strlen(max)

max=a[i];

return max;

85

【填空】给定程序中,函数fun 的功能是:判定形参a所指的N*N(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;若不是,函数返回值为0.“幻方”的判定条件是:矩阵每行每列主对角线及反对角线上元素之和都相等。

例如,一下3*3的矩阵就是一个“幻方”:

4 9 2

3 5 7

8 1 6

【答案】【1】0 【2】| | 【3】1 【改错】下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。

t=1/2-1/3-…-1/m,例如,若输入5,则应输出-0.283333。

【答案】

【1】t-=1.0/i;【2】return t;

【编程】请编写一个函数,用来删除字符串中的所有空格。

例如,输入asd af aa z67,则输出为asdafaaz67。

【答案】

void fun(char *str)

{

int i=0;char *p=str;

while(*p)

{

if(*p!=' ')

{

str[i]=*p;

i++;

}

p++;

}

str[i]=′\0′;

}

86

【填空】给定程序中,函数fun

的功能是:用函数指针指向要

调用的函数,并进行调用。规

定在(2)处使f指向函数f1,

在(3)处使f指向函数f2。当

调用正确时,程序输出:

x1=5.000000,

x1*x1+x1*x2=40.000000

【答案】【1】double【2】f1【3】

f2

【改错】下列给定程序的功能

是:建立一个带头结点的单向

链表,并用随机函数为各节点

数据域赋值。函数fun的作用

是将单向链表节点(不包括头

节点)数据域为偶数的值累加

起来,并且作为函数值返回。

【答案】【1】while(p!=NULL)

【2】p=p->next;

【编程】请编写函数fun(),该

函数的功能是判断字符串是否

为回文,若是则函数返回1,主

函数中输出YES;否则返回0,

主函数中输出NO。回文是指顺

读和倒读都一样的字符串。

例如:字符串LEVEL是回

文,而字符串123312就不是回

文。

【答案】

int fun(char *str)

{int i,n=0,fg=1;

char *p=str;

while(*p)

{n++; p++;}

for(i=0;i

if(str[i]==str[n-1-i]) ;

else

{fg=0; break;

}

return fg;

}

87

【填空】给定程序中,函数fun

的功能是:将带头结点的单向

链表结点数据域中的数据从小

到大排序。即若原链表节点数

据域从头至尾的数据为:

10.4.2.8.6,排序后链表结点数

据域从头至尾的数据为:

2.4.6.8.10.

【答案】【1】h->next 【2】

p->next

【3】>

【改错】下列给定程序的功能

是:建立一个带头结点的单向

链表,并用随机函数为各节点

数据域赋值。函数fun的作用

是求出单向链表节点(不包括

头节点)数据域中的最大值,并

且作为函数值返回。

【答案】【1】p=h->next;

【2】p=p->next;

【编程】请编写函数fun,该

函数的功能是:将M行N列的

二维数组中的数据,按行的顺

序依此放到一维数组中,一维

数组中数据的个数存放在形参

n所指的存储单元中。

例如,若二维数组中的数

据为:

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应该

是33 33 33 33 44 44

44 44 55 55 55 55

【答案】

void fun (int (*s)[10], int

*b, int *n, int mm, int nn)

{

int i,j,k=0;

for(i=0;i

for(j=0;j

b[k++]=s[i][j];

*n=k;

}

88

【填空】下列给定程序中函数

fun的功能是:将形参s所指

字符串中的所有数字字符顺序

前移,其他字符顺序后移,处

理后将新字符串的首地址作为

函数值返回。

例如,若s所指字符串为:

asd123fgh543df,处理后新字

符串为:123543asdfghdf。

【答案】【1】j 【2】k 【3】

p

【改错】给定程序中函数fun

的功能是:首先把b所指字符

串中的字符按逆序存放,然后

将a所指字符中的字符和b所

指字符中的字符,按排列的顺

序交叉合并到c中,过长的剩

余字符接在c所指的数组的尾

部。例如,a所指内容为

“abcdefg”,b所指内容“1234”

时,c所指内容应为

a4b3c2d1efg,而a所指

“1234”,b所指“abcdefg”

时,c为“1g2f3e4dcba。”

【答案】【1】while(i

【2】if(*a)

【编程】编写函数fun,其功

能是:将s所指字符串中下标

为偶数同时ASCII值为奇数的

字符删除,s所指字符串中剩

余字符形成的新串放在t所指

数组中。例如,若s所指字符

串中的内容为:

"ABCDEFG12345",其中字符C

的ASCII码值为奇数,在数组

中下标为偶数因此应当删除;

而字符1的ASCII码值为奇数,

在数组中下标为奇数因此不能

删除,其它依此类推。最后t

所指的数组中的内容应是:

"BDF12345"。

【答案】

void fun(char *s, char

t[])

{

int i, j = 0 ;

for(i = 0 ; i < strlen(s) ;

i++)

if(!((i % 2) ==0 &&

(s[i] % 2))) t[j++] = s[i] ;

t[j] = 0 ;

}

89

【填空】给定程序中,函数fun

的功能是:将a所指4X3矩阵中

第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

【答案】【1】k【2】N【3】a[k][i]

【改错】下列给定程序中,函

数fun的功能是:读入一个字符

串(长度<20),将该字符串中

的所有字符按ASCII码值升序

排序后输出。例如,若输入

“edcba”,则输出“abcde”。

【答案】

【1】for(i=strlen(t)-1;

i;i--)

【2】if(t[j]>t[j+1])

【编程】请编写函数fun,它的

功能是:将ss所指字符串中所

有下标为奇数位置的字母转换

为大写。(若该位置上不是字母

则不转换)。例如:若输入

“abc4Efg”,则输出“aBc4Efg”

【答案】

void fun(char *ss)

{

int i;

for(i=0;ss[i]!='\0';i++)

if(i%2==1&&ss[i]>='a'&&ss[

i]<='z')

ss[i]=ss[i]-32;

}

90

【填空】给定程序中,函数fun

的功能是:将a所指3X5矩阵中

第k列的元素左移到第0列,第k

列以后得每列元素依次左移,

原来左边的各列依次绕到右

边。

例如,有下列矩阵:

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

若k为2,程序执行结果为:

3 4 5 1 2

3 4 5 1 2

3 4 5 1 2

【答案】【1】k【2】N-1【3】

temp

【改错】下列给定程序中,函

数fun的功能是:根据形参m的

值(2≤m≥9),在m行m列的

二位数组中存放如下所示规律

的数据,由main函数输出

例如,输入2 输入4

输出:输出:

1 2 1 2 3

4

2 4 2 4 6

8

3 6 9

12

4 8

12 16

【答案】

【1】void fun(int

a[ ][M],int m)

【2】a[j][k]=(k+1)*(j+1);

【编程】请编写函数fun,其功

能是:将两个两位数的正整数

a,b合并形成一个整数放在c

中。合并的方式是:将a数的十

位和个位数依次在c数十位和

千位上,b数的十位和个位数依

次放在c数的个位和百位。例

如,当a=45,b=12,调用该函

数后,c=5241。

【答案】

void fun(int a,int b,long

*c)

{*c=(a%10)*1000+(b%10)*100

+(a/10)*10+(b/10);

}

91◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)j(2)0(3)i++

【改错】【参考答案】

(1)for(i = 2 ; i<= m ; i++) (2)y -= 1.0/(i * i)

【编程】【参考答案】 int fun(int score[],int m, int below[]) { int i,j=0; float av=0.0; for(i=0;i

av=av+score[i]/m;

for(i=0;i

if(score[i]

return j; }

92◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)t ,s (2)s[i] (3)0

或'\0'

【改错】【参考答案】

(1)if(i%k==0) (2)if(k==i)

【编程】【参考答案】

void fun (int x, int pp[], int *n) {

int i,j=0;

for(i=1;i<=x;i=i+2) if(x%i==0) pp[j++]=i; *n=j; }

93◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)s (2)--

(3)return 0

【改错】【参考答案】

(1)double fun(int n) (2)s =s +(double)a/b

【编程】【参考答案】

void fun(int m,int k,int xx[]) {

int i,j,n; for(i=m+1,n=0;n

{for(j=2;j

if(j>=i) xx[n++]=i; } } 94◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)n++ (2)0 (3)s++

【改错】【参考答案】

(1)t+=s[k]; (2)*aver=ave ;

【编程】【参考答案】

int fun(int *s,int t,int *k) {

int i;

*k=0;

for(i=0;i

if(s[*k]

return s[*k]; }

95◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)*s (2)s++

(3)n

【改错】【参考答案】

(1) {

【编程】【参考答案】

long jc(int m) {

long s=1; int i ;

for(i=1;i<=m;i++) s=s*i ;

return s; }

float fun(int m, int n) {

float p;

p=1.0*jc(m)/jc(n)/jc(m-n) ; return p; }

96

◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)48 (2)s++

(3)sum

【改错】【参考答案】

(1)if((k%13==0)||(k%17==0)) (2)}

【编程】【参考答案】

double fun( int n) {

double sum=0.0; int i;

for(i=21; i<=n; i++)

if((i % 3==0) && (i % 7==0)) sum+=i; return sqrt(sum) ; }

97◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)*s (2)1

(3)k[n]

【改错】【参考答案】

(1)double fun(int k) (2)return s ;

【编程】【参考答案】

double fun(int n) {

int i;

double s=0.0;

for(i=1;i<=n;i++)

s=s+1.0/(i*(i+1)); return s; }

98

◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)i (2)ps[j]

(3)tp

【改错】【参考答案】

(1)double fun(int n) (2)return sum ;

【编程】【参考答案】

double fun(double x, int n) {

int i;

double s=1.0,s1=1.0; for(i=1;i<=n;i++) {s1=s1*i;

s=s+pow(x,i)/s1; }

return s; }

99◆◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)double (2)f1

(3)f2

【改错】【参考答案】

(1)char *fun( char *s ,char *t) (2)ss++; (3)tt++

【编程】【参考答案】

void fun (char *w,int m) { int i,j; char t;

for(i=1;i<=m;i++) {t=w[0];

for(j=1;w[j]!='\0';j++) w[j-1]=w[j]; w[j-1]=t; } }

100◆

◆◆◆◆◆◆◆◆◆◆◆◆◆

【填空】【参考答案】

(1)"r"

(2)> (3)fwrite

【改错】【参考答案】

(1)p=s; (2)while(*p++);

【编程】【参考答案】

void fun(int *a, int *b)

{

int i,j;

for(j=0;j

b[j]=0;

for(i=0;i

if(a[i]>=100)

b[10]++;

else

b[a[i]/10]++;

}

double rnd()

{

static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((double)r/m);

}

计算机c语言二级考试复习资料

第一章C语言概述 一、选择题: 1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束 2、在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 4、一个C 语言程序是由( B )。 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题: 1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。 4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。 5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。 6、C 语言的标识符只能由字母、数字和下划线三种字符组成。 第三章数据类型、运算符和表达式

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

计算机二级C语言测试题

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和 */ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

计算机二级C语言上机考试操作步骤及流程和注意事项

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”

程序文件,点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案 写在对应位置。例如下图所示。 原“blank1.c”程序图: 打开

全国计算机二级考试C语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构占总分1% 2、数据类型及其运算占总分4% 3、选择结构程序设计占比分的3% 4、循环结构占比分的5% 5、数组的定义和引用占比分的5% 6、函数占比分的5% 7、编译预处理占比分1% 8、指针占比分的5% 9、结构体占比分的3% 10、位运算占比分的2% 11、文件操作占比分的2% 考试方式 上机考试,时长120分钟 单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题) 第一部分 C语言知识复习资料 第一章C语言基本知识(90分) 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。 【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

2017年全国计算机等级考试二级C语言上机题库

2017年全国计算机等级考试二级 C语言上机题库 第一套 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的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处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

计算机二级C语言考试内容

计算机二级 公共基础知识 基本要求 1.掌握算法的基本概念。 2.掌握基本数据结构及其操作。 3.掌握基本排序和查找算法。 4.掌握逐步求精的结构化程序设计方法。 5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6.掌握数据库的基本知识,了解关系数据库的设计。 考试内容 一、基本数据结构与算法 1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5.线性单链表、双向链表与循环链表的结构及其基本运算。 6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。

7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、程序设计基础 1.程序设计方法与风格 2.结构化程序设计。 3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、软件工程基础 1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3.结构化设计方法,总体设计与详细设计。 4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5.程序的调试,静态调试与动态调试。 四、数据库设计基础 1.数据库的基本概念:数据库,数据库管理系统,数据库系统。 2.数据模型,实体联系模型及E―R图,从E―R图导出关系数据模型。 3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。

计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 或35 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 :m联系 :n联系 :1联系 :l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

计算机二级C语言上机题库复习小抄(最新校正,精美排版)

计算机二级C语言上机题库复习小抄 (最新校正,精美排版) 第一套 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的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处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;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的功能是:计算下式前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的功能是:将形参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; 1

计算机二级C语言编程题库(100题)

2011,____年上机题100题库 1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。

答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; }

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

2020年9月全国计算机等级考试二级C语言上机题库(共60套全)

2020年9月全国计算机等级考试二级C语言上机题库(共60 套全) 第一套 1 程序填空 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指出的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。第1处if (std[i].year==year) 第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 i, max = a[0]. s, j=0; for (i=1; i

1 2 3 4 5 6 7 8 9 交换后: 3 2 1 4 5 6 9 8 7 第1处void fun (int t [] [N], int n) 第2处for (i=0; ia [mid]) 3 程序设计 假定输入的字符串中只包含字母和*号,请编写函数fun,它的的功能是:除了尾部的*号之外,将字符串中其他*全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 void fun (char *a,char *p) { char *q=a; int j=0; while (*q&&q

(完整版)历年全国计算机二级C语言题库

50道C语言知识题 1.以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出 D)用C程序实现的算法可以既没有输入也没有输出 2.下列可用于C语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段 inta=3,b=5,c=7;

相关主题
文本预览
相关文档 最新文档