struct list {
double s;
struct list *next; };
typedef struct list STR; double fun(STR *a) {
double max; STR *q=a; max=a->s; do
{
if(q->s>max) max=q->s; q=q->next; }
while(q!=0); return max;
3.程序设计题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。 #include
}STREC;
STREC fun(STREC*a,char*b) {
STREC t={NULL,-1}; int k;
for(k=0; k main() { STREC s[N]={{\ {\ {\ STREC h; 11.程序设计题 函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 #include void fun(char *s,char t[]) { int k,n=0; for(k=0; k main() { char s[100],t[100]; 12.程序设计题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 例如,字符串中的内容为:***A*BC*DEF*G***,移动后字符串中的内容应当是:A*BC*DEF*G******。在编写函数时,不得使用C语言提供的字符串函数。 #include void fun(char *a) { int n=0, m=strlen(a),j=0,k=0; while(a[j]=='*') /*统计有多少个前导'*'存入计数器n中*/ { n++;j++; } for(; j for(j=0; j a[k]='\\0'; /*添加字符串结束符*/ } main() { char s[81],*p; int n=0; printf(\13.程序设计题 给定程序中,函数fun的功能是:把形参str所指字符串中下标为奇数的字符右移到下一个 奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注意:字符串的长度大于等于2)。 注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。 #include for(i=0;str[i]!='\\0';i++) n++; if(n%2==0) j=n-1; else j=n-2; c=str[j]; for(i=j-2;i>=1;i=i-2) str[i+2]=str[i]; str[1]=c; } main() { FILE *fp; char str[100]=\ 14.程序设计题 函数fun的功能是:将两个三位数的正整数a、b合并形成一个长整数在c中。合并的方式是:将a数的百位、十位和个位放在c数的十万位、千位和十位上,b数的百位、十位和个位放在c数的万位、百位和个位上。 例如:当a=456,b=123,调用该函数后c=415263。 #include *c=a/100; *c=*c*10+b/100; *c=*c*10+(a/10); *c=*c*10+(b/10); *c=*c*10+a; *c=*c*10+b; } 16.程序设计题 下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是: 求出数组周边元素的平均值并作为函数值返回给主函数中的变量r。 例如,若c数组中的值为: 则返回主程序后r的值应为4.625000。 #define N 3 double fun(int b[][N]) { int i,j,k=0; double r=0.0; for(j=0;j r+=b[0][j]; k++; } for(j=0;j r+=b[N-1][j]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][0]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][N-1]; k++; } return r/=k; } main() { int c[N][N]={1,8,4,7,5,3,3,9,2}; 17.程序设计题 请编写一个函数void fun(char *tt, int pp[]),统计在tt所指字符串中'a'到'z' 26个小写字母各自出现的次数,并依次放在pp所指数组中。 #include void fun(char *tt,int pp[]) { int n; for(n=0; n<26; n++) pp[n]=0; while(*tt!='\\0') { if(*tt>='a' && *tt <='z') pp[*tt-'a']++; tt++; } } main() { char aa[1000]; 18.程序设计题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 #include void fun(char *a,char *h,char *p) { char *q=h; int n=0; while(q<=p) { if(*q!='*') h[n++]=*q; q++; } while(*q) { h[n++]=*q; q++; } h[n]='\\0'; } main() 19.程序设计题 请编写函数fun,其功能是:计算并输出当x<0.97时如下多项式的值,直到|Sn - Sn-1|<0.000001为止: #include double fun(double x) { int n=1; double s0,s1=1.0,t=1.0; do { s0=s1; t=t*(0.5-n+1)*x/n; s1=s0+t;