result=temp;for(temp=1.0,i=1;i<=n;i++) temp=temp*i; result=result/temp; for(temp =1.0,i=1;i<=m-n;i++) temp =temp *i; result =result/temp; return result;
第78套 一填空
将形参s所指字符串中的数字字符串转换成对应的数值,计算出这些数值的累加和作为函数值返回。
答案:48 s++ sum 二 修改
计算小于形参k的最大的10个能被13或17整出的自然数之和,
答案:if((k==0)||(k%7==0)) } 三 设计
求小于形参n同时能被3或7整出的所有自然数之和的平方根,
答案:double sum=0.0; int i ; for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0)) sum+=I; return sqrt(sum);
第79套 一填空
找出形参s所指字符串中出现频率最高的字母,并统计出现的次数。
答案;*s 1 k[n] 二修改
求S的值。 S=22/1*3*42/3*5?(2k)2/(2k-1)*(2k+1)
答案: double fun(int k) return s; 三 设计
计算并输出下列级数和 S=1/1*2+1/2*3?+1/n(n+1)
答案:double s=0.0; int i; for(i=1;i<=n;i++) s=s+1.0/(i*(i+1)); return s;
第80套 一填空
利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序。并输
出排序结果。Ss所指字符串数组中共有N个字符,且串长小于M。
答案: i ps[j] tp 二 修改
计算并输出该数列前n项的平方根之和。N的值通过形参传入。
答案; double fun(int n) return sum;
三 设计
编写函数fun计算下列级数和,和值由函数值返回。S1+x+x2/2!+x3/3!+..+xn/n!
答案:double s=1.0, y=x; int i; long k=1; for(i=1;i<=n;i++) {k*=i; s+=y/k; y*=x;} return s;
第81套 一 填空
在形参ss?..将形参ss所指字符串数组中查找与形参t所指字符串相同的串,
答案; N i -1 二 修改
从整数1到55之间,选出能被3整除,且有一位上的书是5的那些数,
答案:a2=k/10; return i; 三 设计
将字符串尾部的*号全部删除,前面和中间的*号不删除。
答案:int i=0; char *p,*q; p=q=a; while(*p) p++;p--; while(*p==`*`) p--; while(q<=p) {a[i]=*q; i++; q++;} a[i]=`\\0`;
第82套 一填空
在形参ss所指字符串数组中,删除所有串长超过k的字符串。函数返回所剩字符串的个数。ss所指字符串数组中共有N个字
符串,且串长小于M。
答案: N k ss[i] 二 修改
逐个比较p,q所指两个字符串对应位置中的字符,把ASCII值大或等于的字符依次存放到c所指数组中,形成一个新的字符串。
答案:int k=0; while(*p||*q) 三 设计
除了字符串前导的*号之外,将串中其他*号全部删除。
答案;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`;
第83.套 一 填空
在形参ss?..将形参ss所指字符串数组中,查找含有形参su答案str所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组共有N个字符串,且串长小于M
答案: N substr 0 二 修改
求三个数的最小公倍数。
答案: int fun(int x,int y, int z ) return j;
三 设计
只删除字符串中前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。
答案: char *p=a ; int j=0,len=0; while(*p) {p++; len++;} while(j 第84.套 一填空 在形参ss?.将形参ss所指字符串数组中,将所有串长超过k的字符串中右边的 字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,串长小于M 答案: [M] N 0 二 修改 根据公式求π值,并作为函数值返回。 答案: t=1; return(2*s); 三 设计 使字母串中的前导*号不得多于n个,若多于n个,则删除多余的*号,若少于或 答案: int i=0,k=0; char *t=a; while (*t==`*`) {k++;t++;} t=a; if(k>n)t=a+k-n; while(*t){a[i]=*t; i++;t++;}a[i]=`\\0`; 第85套 一.填空 程序。。。将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修。 答案: a b.name score[i] 二修改 从s字符串中删除所有小写字母c。 答案: s[j++]=s[i]; s[j]='\\0'; 三 设计 将使字母串中的前导*号全部移到字符串的尾部。 答案: 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`; 第86.套 一 填空 对形参b所指结构体变量中的数据进行修改,最后主函数中输出修改后的数据。 答案: ->sno ->name &t 二 修改 应用递归算法求形参a的平方根。 答案: double fun(double a,double x0) if(fabs(x1-x0)>0.00001) 三 设计 将字符串中的前导*号全部移到尾部。 二 修改 从N个字符串中找出最长的那个串,并将其地址作为函数返回。 答案: char *fun(char(*sq)[M]) return sp 三 设计 将a、b中的两个两位正整数合并形成 答案: double t=0 ; int i ; *n = 0 ; for(i = 0 ; i < N ; i++)t = t + a[i].s ; t = t / N ; for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ; 第87套 一.填空 程序。。。。形参a中的数据进行修改, 把修改后的数据作为函数值返回主函数进 答案: struct student a.name a.score[i] 二 修改 应用递归算法算。。删除数列中值为x 的元素。n中存放的是数列中元素的个数。 答案: if(p==n)return -1; a[i]=a[i+1]; 三 设计 把分数最低的学生数据放在b数组中, 答案: int i,j=0,min=a[0].s; for(i=1;i 第88.套 一 填空 程序。。。将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。 答案: struct student * a->score[i] a 一个新的整数放在c中。合并的方式是:将 a中的十位和个位数依次放在变量c的百位 和个位上,b中的十位和个位数依次放在变 量c的十位和千位上。 *c=(b)*1000+(a/10)*100+(b/10)* 10+a; 第89.套 一 填空 程序。。。将存放学生数据的结构体数 组,按照姓名的字典序(从小到大)排序。 答案: struct student n-1 a[i].name,a[j].name 二 修改 在p所指的字符串找出ASCII码值最大 的字符,将其放在第一个位置上;并将该字 符前的原字符向后顺序移动。 答案: q=p+i; while(q>p) 三 设计 把指定分数范围内的学生数据放在答 案所指的数组中,分数范围内的学生人数由函数值返回。 答案: int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= l && a[i].s <= h) b[j++] = a[i] ; return j ; 第90.套 一填空 程序、、、、指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据, 答案: fp == fp 二 修改 利用插入排序法对字符串中的字符按从小到大的顺序进行排序。 答案: n=strlen( aa ); ch=aa[i]; 三 设计 找出学生的最高分,由函数值返回。 答案: double max=h->s; STREC *p; p=h->next; while(p) { if(p->s>max ) max=p->s; p=p->next; } return max; 第91.套 一 填空 给定程序中用函数指针指向要调用的函数, 答案: double f1 f2 二 修改 给定程序中将单向链表结点(不包括头结点)数据域为偶数的值累加起来, 答案: p=h->next; p=p->next; 三 设计 判断字符串是否为回文?若是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。 答案: int i,n=0,flag=1; flag=1 char*p=str; while(*p) { n++;p++;} for(i=0;i if(str[i]==str[n-1-i]); else {flag=0;break;}return flag; 第92套 一 .填空 给定程序中将带头结点的单向链表结点数据域中的数据从小到大排序。 答案: h->next p->next >= 二 修改 给定程序求出单向链表结点数据域中的最大值,并且作为函数值返回。 答案: p=h->next; p=p->next 三 设计 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中的数据的个数存放在形参n的所指的存储单元中。 答案: int i,j; for(i=0;i {b[*n]=*(*(s+i)+j);*n=*n+1;} 第93套 一 .填空 给定程序,将不带头结点的单向链表逆置。 答案: NODE* next r 二 修改 将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指的数组中 答案 :if(i%2||s[i]%2==0) t[j]=`\\0` 三 设计 将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。 答案: int i,j;for(j= 0 ; j < nn ; j++) for(i = 0 ; i< mm ; i++) { b[*n] = *(*(s+i)+j); *n+=1; 第94.套 一 填空 给定程序中。。。将带头结点的单向链表逆置。 答案: next 0 r 二 修改 计算s所指。。。把s所指的字符串中含有t的指字符串的数目,并作为函数值返回。 答案: r=t ; if(*r== 0) 三 设计 将放在字符串数组中的M个字符串,按顺序合并组成一个新的字符串。 答案: int i ,j,k=0; for(i=0;i 第95.套 一 填空 给定程序中将不带头结点的单向链表结点数据域中的数据从小到大排序。 答案: p->next q p->next 二 修改 将s所指的字符串中的字母转换为按字母序列的后续字母,其它字符不变。 答案: while(*s) s++; 三 设计 移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后。 答案: int i, j = 0, b[N] ; for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ; for(i = 0 ; i <= p ; i++) b[j++] = w[i] ; for(i = 0 ; i < n ; i++) w[i]= b[i] ; 第96.套 一填空 给定程序中。。根据形参i的值返回某个函数的值。 答案: double f1 f2 二 修改 比较两个字符串,将长的那个字符串的首地址作为函数值返回。 答案: char *fun(char *s,char *t) ss++; tt++; 三 设计 移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的 前部。 答案: int i; for(i = 0 ; i < m ; i++)fun1(w); 第97.套 一填空 给定程序中。。将参数给定的字符串、整数、浮点数写到文本文件中,再用字符方 式从此文本文件中逐个读入并显示在终端屏幕上。 答案: FILE* fp ch 二 修改 依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 答案: s[j++]=s[i]; s[j]=`\\0`; 三 设计 将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中; 答案: int i,j; n=0; for(i=0;i 第98套 一.填空 给定程序中。。将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 答案: FILE * fclose(fp) fp 二 修改