二级C编写程序上机题库一、求和求平均值1、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875.voidfun(STREC*a){doubleave=0.0;inti;for(i=0;iN;i++)a-ave=a-ave+a-s[i];/*求各门成绩的总和*/a-ave/=N;/*求平均分*/}2、N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写fun,功能是:求出平均分,并由函数值返回。doublefun(STREC*h){doubleave=0.0;STREC*p=h-next;while(p!=NULL){ave=ave+p-s;p=p-next;}returnave/N;}5、编写函数fun,其功能是:计算n门课程的平均分,结果作为函数值返回。floatfun(float*a,intn){inti;floatav=0.0;for(i=0;in;i++)/*求分数的总和*/av=av+a[i];return(av/n);/*返回平均值*/}44、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,其功能是:把低于平均分的学生数据放入b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。doublefun(STREC*a,STREC*b,int*n){inti,j=0;doubleave=0.0;for(i=0;iN;i++)ave=ave+a[i].s;ave=ave/N;/*求平均值*/for(i=0;iN;i++)if(a[i].save)b[j++]=a[i];/*将低于平均值的学生记录存入结构体b中*/*n=j;/*指针传回低于平均值的学生人数*/returnave;/*返回平均值*/}65、请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素的平均值的平方根之和。doublefun(doublex[9]){doublesum=0.0;inti,j=1;for(i=0;i9;i++)if(j=8){sum+=sqrt((x[i]+x[i+1])/2.0);j++;/*相邻两个元素之平均值的平方根之和*/}returnsum;}74、doublefun(intw[][N]){inti,j,k=0;doubleav=0.0;for(i=0;iN;i++)for(j=0;jN;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下标中有一个为0或N-1,则它一定是周边元素*/{av=av+w[i][j];/*将周边元素求和*/k++;}returnav/k;/*求周边元素的平均值*/}75、请编写函数fun,功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为:13579299946999813570则函数值为61.intfun(inta[M][N]){inti,j,sum=0;for(i=0;iM;i++)for(j=0;jN;j++)if(i==0||i==M-1||j==0||j==N-1)/*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/sum=sum+a[i][j];/*将周边元素相加*/returnsum;}99、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如:当score数组中的数据为10,20,30,40,50,60,70,80,90时,函数返回的人数应该是4,below中的数据应为10,20,30,40.intfun(intscore[],intm,intbelow[]){inti,j=0;floatav=0.0;for(i=0;im;i++)av=av+score[i]/m;/*求平均值*/for(i=0;im;i++)if(score[i]av)/*如果分数低于平均分,则将此分数放入below数组中*/below[j++]=score[i];returnj;/*返回低于平均分的人数*/}二、字符串1)删除9、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a){inti,j=0;for(i=0;a[i]!='\0';i++)if(a[i]!='*')a[j++]=a[i];/*若不是要删除的字符'*'则留下*/a[j]='\0';}17、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如:字符串中的内容应当是“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“****ABCDEFG”voidfun(char*a){inti=0;char*p=a;while(*p&&*p=='*'){a[i]=*p;i++;p++;}while(*p){if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';}19、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*不动。在编写函数时,不得使用C语言提供的字符串函数。例如:字符串中的内容应当是“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“****A*BC*DEF*G”。voidfun(char*a){while(*a!='\0')a++;a--;/*指针a指向字符串的尾部*/while(*a=='*')a--;/*指针a指向最后一个字母*/*(a+1)='\0';/*在字符串最后加上结束标志符*/}24、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:将字符串前导的*号全部删除,尾部和中间的*不动。在编写函数时,不得使用C语言提供的字符串函数。例如:字符串中的内容应当是“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是A*BC*DEF*G*******voidfun(char*a){char*p=a;while(*p=='*')p++;/*指针p指向字符串第一个字母*/for(;*p!='\0';p++,a++)*a=*p;/*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/*a='\0';/*在字符串最后加上字符串结束标识*/}27、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:将字符串前导和尾部的*号全部删除,中间的*不动。形参n给出了字符串的长度,形参h给出了字符串中前导*的个数,形参e给出了字符串中尾部*的个数。在编写函数时,不得使用C语言提供的字符串函数。例如:字符串中的内容应当是“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是A*BC*DEF*Gvoidfun(char*a,intn,inth,inte){inti,j=0;for(i=h;in-e;i++)/*第一个字母和最后一个字母之间的字符全不删除*/a[j++]=a[i];a[j]='\0';/*在字符串最后加上结束标识*/}28、函数fun的功能是:将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指的数组中。例如:当s所指字符串中的内容为”ABCDEFGHIJK”时,在t所指数组中的内容影视”BDFHJ”voidfun(char*s,chart[]){inti,j=0,k=strlen(s);/*k为字符串的长度*/for(i=1;ik;i=i+2)/*将s所指字符串中下标为奇数的字符存入t所指字符串中*/t[j++]=s[i];t[j]='\0';}30、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:除了尾部的*外,其余符串前导的*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如:字符串中的内容应当是“ABCDEFG*******”,删除后,字符串中的内容应当是A*BC*DEF*G*******voidfun(char*a,char*p){char*t=a;for(;t=p;t++)if(*t!='*')*(a++)=*t;for(;*t!='\0';t++)*(a++)=*t;*a='\0';/*在字符串最后加上字符串结束标识*/}32、编写函数fun,其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如:输入的一个字符穿”world”,然后输入3,则调用该函数后的结果为”word”。voidfun(chara[],charb[],intn){inti,k=0;for(i=0;a[i]!='\0';i++)if(i!=n)/*将不是指定下标的字符存入数组b中*/b[k++]=a[i];b[k]='\0';/*在字符串最后加上结束标识*/}46、编写函数fun,功能是:将s所指字符串中ASCII码值为奇数的字符删除,剩余字符形成的新串放在t所指数组中。例如,若s所指字符串中的内容为”ABCDEFG12345”,其中字符A的ASCII码值为奇数,字符1的ASCII码值也为奇数,都应当删除,其他依次类推。最后t所指的数组中的内容应是”BDF24”voidfun(char*s,chart[]){inti,j=0,n;n=strlen(s);for(i=0;in;i++)/*找出ASCII码值为偶数的字符依次存入数组中*/if(s[i]%2==0){t[j]=s[i];j++;}t[j]='\0';}51、编写函数fun,功能是:将s所指字符串中ASCII码值为偶数的字符删除,剩余字符形成的新串放在t所指数组中。例如,若s所指字符串中的内容为”ABCDEFG12345”,其中字符B的ASCII码值为偶数,字符2的ASCII码值也为偶数,都应当删除,其他依次类推。最后t所指的数组中的内容应是”ACEG135”voidfun(char*s,chart[]){inti=0;for(;*s!='\0';s++)/*找出ASCII值为奇数的字符依次存入数组t中*/if(*s%2==1)t[i++]=*s;t[i]='\0';/*在字符串的末尾加上串结束符*/}57、规定输入的字符串中只包含字符和*号。编写函数fun,其功能是:使字符串中尾部的*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。例如:字符串中的内容应当是“****A*BC*DEF*G*******”,若n的值为4,则字符串中的内容是:****A*BC*DEF*G****voidfun(char*a,intn){inti=0,k=0;char*p,*t;p=t=a;/*将指针移动到字符串末尾*/while(*t)t++;t--;/*从后往前如果是'*'则使k++,找到最后一个*所在的位置,并记录'*'的个数*/while(*t=='*')/*指针t指向前一个,同时标量k增加一*/{k++;t--;}if(kn){while(*p&&pt+n+1){a[i]=*p;i++;p++;}a[i]='\0';}}58、编写函数fun,功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除,剩余字符形成的新串放在t所指数组中。例如,若s所指字符串中的内容为”ABCDEFG123456”,