答案: char t ; int i, j ; for(i = 答案:int i,j; int t=0; for
1 ; i < num-2;i++) (i=2;i {t=s[i]; s[i]=s[j]; s[j]=t ;} 第20套 一、.填空 求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。Ss所指字符串数组中共有M个字符串 答案: [N] len *n=len 二、修改 根据形参答案,计算如下公式的值 答案: t +=1.0/i; return t; 三、程序 编写一个函数。该函数可以统计一个长度为2的字符串在另个字符串中出现的次数 答案: int cnt = 0; char *p = str, *q ; while(*p){q=strstr(p,substr); if(q==NULL)break; p=q+strlen(substr); cnt++; } return cnt ; 第21套 一、.填空 求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中 答案: M < k 二、修改 将tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变 答案:if((‘a’<=tt[i])&&(tt[i]<=’z’)) tt[i] -= 32; 三、程序 将大于1小于整数m的非素数存入xx所指数组中非素数的个数通过k传回 {j =2; while (j (i%j==0){xx[t]=i; t++;break; } j++;} *k=t;} 第22套 一、.填空 将s所指字符串中的所有数字字符转移到所有非数字字符之后,并保持数字字符和非数字字符串原有的前后次序 答案: j++ s[i]=t1[i] j 二、修改 用冒泡法对6个字符串由小到大的顺序进行排序 答案: for(j=i+1 ;j<6 ;j++) *(pstr + i)= *(pstr + j); 三 程序 求出ss所指字符串中指定字符的个数,并返回此值 答案: int cnt = 0 ; char *p= ss ; while(*p) { if(*p == c) cnt++ ; p++ ;} return cnt; 第23套 一、.填空 在形参所指字符串中的每个数字字符之后插入一个*号 答案: && 0 s[j] 二、修改 根据整形形参m,计算如下公式的值 答 案 :for(i=2;i <=m;i++) y+=1.0/(i*i); 三 程序 实现B=A+A’,即把矩阵A加上A的转置,存放到B中 答案: int c[3][3] ; int i, j ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) { c[i][j] = a[j][i] ; 三、程序 请编写一个函数。。。统计在tt所指字 b[i][j] = a[i][j] + c[i][j] ; } 第24套 一、.填空 统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。 答案: s[i] ‘9’ *t=n 二、修改 通过某种方式实现俩个变量值的交换,规定不予许增加语句和表达式 答案: t = *x ; *x = y ; return(t) ; 三、程序 求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将他们放在a所指的数组中,通过n返回这些数的个数 答案: int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ; 第25套 一、.填空 把形参s所指字符串中下标为奇数的字符右移到下一个奇数的位置,最后边被移除字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 答案: 1 s[k] c 二、填空 求s=aa?aa-?.aaa-aa-a 答案: long s=0, t=0; t=t/10; 符串中’a’到’z’26个小写字母各自出现的次数,并依次放在pp所指数组中 答案: char *p = tt ; int i ; for(i = 0 ; i < 26 ; i++) pp[i] = 0 ; while(*p ) { if(*p >= 'a' && *p <= 'z') pp[*p - 'a'] += 1 ;p++ ; } 第26套. 一、填空 对形参s所指字符串中下标为奇数的字符按ascii码大小递增排序,并将排序后下标为基数的字符取出,存入形参p所指字符数组中,形成一个新串 答案: t=I i 0 二、填空 用下面公式求π的近似值,直到最后一项的绝对值小于指定的数为止 答案: while (fabs(t)>=num) t=s/n; 三、程序 删除一个字符串中指定下标的字符,其中,a指向原字符,删除指定字符后的字符串存在b所指的数组中,n中存放指定下标 答案: int p,m=0; for(p=0;p if(p!=n) {b[m]=a[p]; m++;} b[m]=’\\0’; 第27套 一 填空 在形参所指字符串中寻找一个字符串与参数c相同的字符,并在其后插入一个与 之相同的字符,若找不到相同的字符则函数不做任何处理 答案: 0 0 c 二 修改 计算数组元素中值为正数的平均值 答案: double sum=0.0; sum/=c; 三 设计 根据以下公式s,计算结果作为函数返回值,n通过形参传入 答案: int k; float str =1.0, sum=1.0; 三 设计 求Fibon?.数列中大于t的最小的一个数,结果由函数返回, 答案: int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ; for(k=2;k<=n; k++) { sum =sum+k; str =str+1/sum;} return str; 第28套 一 填空 有N*N的矩阵,根据给定的m的值,将每行元素中的值均右移m个位置,左边置为0 答案: i++ m m 二 修改 计算并输出high以内最大的10个素数之和。High的值由主函数传给fun函数 答案: while((2<=high) && (n<10)) yes=0; break; 三 设计 利用一下所示的简单迭代方法求方程: 答案: float x0, x1=0.0; do{x0=x1; x1=cos(x0);}while(fabs(x0-x1)>0.000001); return x1; 第29.套 一 填空 将N*N的矩阵中元素值按列右移1个位置,右边被移出矩阵的元素绕回左边 答案: N N-1 0 二 修改 计算并输出下列的前N项之和Sn,Sn+1大于q为止,q的值通过形参传入 答案: s=s+(n+1.)/n; return t; 第30套 一.填空 有N*N矩阵,将矩阵的外围元素顺时针逆转,操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行, 最后一行成为第一列,最后一列成为最后一行。临时数组中的元素成为最后一列 答案: 0 j- - j 二 修改 计 算 s=f(-n)+f(-n+1)+ ? +f(0)+f(1)+f(2)+?+f(n)的值, 答案: double f(double x) return s ; 三 设计 编写函数fun,他的功能是计算s=ln(1)+ln(2.)..ln(m)开根号 答案: double s = 0.0 ; int i ; for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ; s = sqrt(s) ; return s ; 第31套 一.填空 有N*N矩阵,以主对角线为对称线,对称元素相加并将结构存放在左下三角元素中,右上三角元素之位0 答案: [N] t[i][j] t[j][i] 二 修改 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等 答案: ((m)/(n)) return (value); 三 设计 将字符串中的前导*号全部删除,中间和尾部的*号不删除 答案: int j=0; char *p = a ; 除了尾部的*号外,将字符串中的*号全 答案: int j=0; char *q=a; while(*q &&q *p++ ; a[j] = ‘\\0’; while(*p == '*') p++ ; while(*p) {a[j++] = *p;p++; } a[j]=’\\0’ ; 第32套 一.填空 将N*N矩阵主对角线元素中的值域反向对角线对应位置上的元素中的值交换 答案: t[ ][N] i=0;i 利用折半查找法查找整数答案在整数数组的位置。若找到,返回其下标;反之,返回-1 答案: int fun(int a[],int m) else if (m>a[mid]) 三 设计 除了尾部的*号外,将字符串中的*号全部删除,形参p以指向字符串中最后的一个字符, 答案: char *q=a; int j=0; while(*q && q 第33套 一.填空 计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回, 答案: sum=0 t[i][i] 1 二 修改 用二分法求方程的一个根,并要求绝对误差不超过0.001 答 案 : double r; while(fabs(n-m)>0.001) 三 设计 第34套 一.填空 把形参a所指数组中的奇数按原顺序依 次存放到a【0】,a【1】?.中,偶数从数组 中删除,奇数个数通过函数值返回 答案: 1 j++ j 二 修改 求出连个非零正整数的最大公约数,并作为函数值返回 答案: t=a;a=b;b=t; return (b); 三 设计 除了尾部的*号外,将字符串中的*号全部删除,形参答案以指向字符串中最后的一个字母, 答案: int j =0 ; char *p=a; while(*p) {if(*p!='*') a[j++]=*p;p++; } a[j]=`\\0`; 第35套 一 填空 把形参所指数组中的偶数按原顺序依次存放到a【0】、a【1】,?中,奇数从数组中删去,偶数个数通过函数值返回 答案: a[i]%2 a[j] j 二 修改 按一下递归公式求函数值 答案: int fun(int n ) if(n==1) 三 设计 使字符串尾部的*号不得多于n个;若 多于n个,则删除多于的*号,若少于n个, 则什么也不做,字符串中间和前面的*号不 删除 答案:int i=0,j=0; char *p,*t; p=t=a; While(*t) t++; t--; while(*t==’*’) {j++;t--;}t++; if(j>n) {while(*p&&p {a[i]=*p;i++;p++;}a[i]=’\\0’;} 第36套 一.填空 把形参a所指数组中的最小值放在元素a【0】中,按着把形参a所指数组中的最大值放在a【1】元素中;在把a所指数组中的 次小元素放在a【2】所指的数组中,把a所指的数组元素中的次大放在a【3】;其余以此类推 答案: a[i] a[j] a[j] 二 修改 用递归算法计算非波拉且数列中第n项的值, 答案:switch(g) case 1:return 1;case 2:return 1; 三 设计 求学生的平均分放在记录的ave成员中 答案: int i ; for(i =0 ; i < N ; i++) a->ave = a->ave+a->s[i] ; a->ave /= N ; 第37套 一.填空 把形参a所指数组中的最大值放在a【1】中,按着求出a所指数组中的最小值放在a【1】数组中;把a所指数组元素的次大值放在a【2】中,把a数组元素中的次小值放在a【3】中;其余以此类推。 答案: *a 2 i+1 二 修改 按顺序给s所指数组中的元素赋予从2开始的偶数,在按顺序对每五个元素求个一平均值,并将这些值依次存放在w所指的数组中,若s所指数组元素的个数不是5的倍 数,多于部分忽略不计 答案: sum=0.0; if((i+1)%5==0) 三 设计 把低于平均分的学生数据放在答案所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回 答案: int i ; double ave = 0.0 ; *n = 0 ; for(i = 0; i < N ; i++) ave = ave + a[i].s ; ave/=N;for(i=0;i 第38套 一 .填空 将形参a所指的数组中的前半部分元素中的值和后半部分元素中的值兑换,形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动 答案: 1 i a[p+i] 二 修改 把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中 答案: float k; if(*a<*c) 三 设计