【答案】 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+(a)*100+(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】0
【改错】下列给定程序中函数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]=′\\0′; } 23◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】下列给定程序中函数fun的功能是:计算一个带头结点的单向链表中各结点的数据域中数值之和,结果作为函数值返回。 【答案】【1】data 【2】next 【3】head 【改错】下列给定程序中函数fun的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。例如,当s所指字符串中的内容为\,t1所指子串中的内容为\,t2所指子串中的内容为\时,在w所指的数组中的内容应为\。 【答案】【1】while( *r) 【2】{*a=*r;a++;r++;} 【编程】函数fun的功能是:将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为\时,在t所指数组中的内容应是:\。 【答案】 void fun(char *s,char t[]) { int i,j=0,k=strlen(s); for(i=1;i t[j]=’\\0’; } 24◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:将形参a所指结构体变量s中的数据进行修改,并把a的地址作为函数值返回主函数,从主函数中输出修改的数据。 例如,a所指变量s中的学号、姓名和三门课的成绩依次是:10001、\、95、80、88,修改后输出t中的数据应为:10002、\、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+(b/10)*10+(a/10)*100+(b)*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 【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 27◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。例如,若b所指变量t中的学号、姓名和三门课的成绩依次是:10002、\、93、85、87,修改后输出t中的数据应为:10004、\、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 for(i=0;i