【填空】下列给定程序中函数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; } 12◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】下列给定程序中函数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(\,*a); 【编程】编写函数fun,其功能是:比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符长度相同,则返回第一个字符串。 例如,输入beijing 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={\,-1}; if(strcmp(a[i].num,b)==0) str=a[i]; return str; } 17◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】下列给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。 【答案】【1】\【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+(a/10)*10+(b/10)*100+(a)*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、\、95、80、88,则修改后输出b中的数据应为:10002、\、95、80、88。 【答案】【1】a 【2】b.name 【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语言提供的字符串函数。