【编程】请编写函数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】0 【改错】下列给定程序中函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。例如,程序运行后,输入0.0001,则程序输出3.1414。 【答案】【1】while(fabs(t)>=num) 【2】t=s/n; 【编程】编写函数fun,其功能是:删除一个字符串中指定下标的字符。其中,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 [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 } 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】0 【改错】下列给定程序中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。例如,当s所指字符串中的内容为:\,t1所指串中的内容为\,t2所指子串中的内容为\时,结果在w所指的数组中的内容应为\。 【答案】【1】while (*w) 【2】if ( *r == *p ) 【编程】编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中。例如,若s所指字符串中的内容为:\,其中字符A的ASCII码值为奇数、?、字符1的ASCII码值也为奇数、?都应当删除,其它依此类推。最后t所指的数组中的内容应是:\。 【答案】 void fun(char *s,char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i 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 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所