字符串中间和尾部的*号不删除。
例如,字符串中的内容为****A*BC*DEF*G** *****,若n的值为2,删除后,字符串中的内容则应当是**A*BC*DEF*G*******;若n的值为4,则字符串中的内容仍为****A*BC*DEF*G*******。N的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 #include
void fun(char *a,int n) {
int i=0, k=0; char *p, *t; p=t=a;
while(*t=='*') { k++; t++; } if(k>n) {
while(*p) {
a[i]=*(p+k-n); i++; p++; } a[i]='\\0'; } }
main() {
char s[81];int n;
printf(\ gets(s);
printf(\ scanf(\
fun( s,n );
printf(\ puts(s); score(); }
void score() 58 程序设计题
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:求出平均分,由函数值返回。
例如,若学生的成绩是85、76、69、91、72、64、87,则平均分应当是78.625。 #include
{double s;
struct slist *next; };
typedef struct slist STREC; double fun(STREC *h) {
double av=0.0; STREC *p=h->next; while(p!=NULL) {
av=av+p->s; p=p->next; }
return av/N;
}
STREC *creat(double *s) /*创建链表*/ {
STREC *h,*p,*q; int i=0;
h=p=( STREC*)malloc(sizeof(STREC)); p->s=0;
while(i q=( STREC*)malloc(sizeof(STREC)); q->s=s[i];i++;p->next=q;p=q; } p->next=0; return h; } outlist(STREC *h) { STREC *p; p=h->next; printf(\ do { printf(\ p=p->next; /*输出各成绩*/ } while(p!=0); 59 程序设计题 假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。 例如,若字符串中的内容为****A*BC*DEF*G* ******,删除后,字符串中的内容则应当是 ****A*B C*DEF*G。 #include void fun (char *a) { while(*a!='\\0') a++; a--; while(*a=='*') a--; *(a+1)='\\0'; } main() { char s[81]; printf(\60 .程序设计题 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。 例如,若a所指数组中的数据依次为:11 22 33 1 44 55 66,则调换后为:44 55 66 1 11 22 33。 #include void fun(int b[],int n) { int j,temp,p; p=(n%2==0) ? n/2:n/2+1; for(j=0;j temp=b[j]; b[j]=b[p+j]; b[p+j]=temp; } } main() { FILE *fp; int x[M]={11,22,33,1,44,55,66},i; printf(\ for(i=0;i 61 程序设计题 请编写函数fun(),其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。 例如,当s所指字符串中的内容为ABCDEFGHI JK,则在t所指数组中的内容应是BDFHJ。 #include #include void score(); void fun(char *s,char t[]) { int i,j=0,k=strlen(s); for(i=1;i main() { char s[100],t[100]; system(\ printf(\ scanf(\ fun(s,t); printf(\ score(); } 62 程序设计题 编写函数fun(),它的功能是计算并输出下列级数的和: S=1/(1×2)+1/(2×3)+?+1/(n×(n+1))例如,当n=10时,函数值为0.909091。 #include int i; double s=0.0; for(i=1;i<=n;i++) s=s+1.0/(i*(i+1)); return s; } main() { system(\ printf(\ score(); } void score() { FILE *fp; fp=fopen(\fprintf(fp,\ fclose(fp); 63 程序设计题 假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言中提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*** ****,删除后,字符串中的内容则应当是ABCDEFG。 #include int i,j=0; for(i=0;a[i]!='\\0';i++) if(a[i]!='*') a[j++]=a[i]; a[j]='\\0'; } main() { char s[81]; printf(\ gets(s); fun(s); 64 程序设计题 请编写函数fun,其功能是:计算并输出给定10个数的方差: 例如,给定的10个数为75.0、66.0、73.0、84.0、57.0、67.0、45.0、92.0、44.0、58.0,则输出为F=14.982990。 #include double fun(double y[10]) { int i,j; double f=0.0,f1=0.0; for(i=0;i<10;i++) f1+=y[i]; f1/=10; for(j=0;j<10;j++) f+=(y[j]-f1)*(y[j]-f1);