主要程序部分给你写了。输出格式你可以修改满足你的需要。
输入格式 允许 前面有任意空格,中间分隔符为1个或多个空格,数据后允许任意个空格(不知道是不是有这样花里胡哨的要求)。
#include <stdio.h>
#include <stdlib.h>
void f1(char *s){
printf("input one line string\n");
gets(s);
printf("your input is:\n%s\n",s);
}
void f2(char *s, int *x, int *n){
char ss[100];
int i,j,k,nn;
for (i=0;i<strlen(s);i++) if (s[i]!=' ') {k=i;break;}
if (k!=0) for (i=k;i<=strlen(s);i++) s[i-k]=s[i];
for (i=strlen(s);i>0;i--) if (s[i-1]==' ' && s[i]==' ') for (j=i;j<=strlen(s);j++)s[j]=s[j+1];
printf("string is:\n%s\n",s);
k=0;
nn=0; sscanf(s,"%s",ss);
for (j=0;j<strlen(ss);j=j+3) {sscanf(&ss[j],"%3d",&x[nn]);nn++;};
while(1) {
k = k+strlen(ss)+1;
if (k > strlen(s)) break;
sscanf(&s[k],"%s",ss);
for (j=0;j<strlen(ss);j=j+3) {sscanf(&ss[j],"%3d",&x[nn]);nn++;}
} ;
*n=nn;
}
void f3(int *x, int n, int *mx, int *mi, float *ave){
int i;
*mx=x[0]; *mi=x[0]; *ave=0.0;
for (i=0;i<n;i++) {
*ave = *ave+x[i];
if (x[i]> *mx) *mx=x[i];
if (x[i]< *mi) *mi=x[i];
}
*ave = * ave / (float) n;
}
main(){
char str[120];
int x[100],n;
int mx,mi;
float ave;
int i;
f1(str);
f2(str,x,&n);
for (i=1;i<=n;i++) {printf("%4d",x[i-1]); if (i%5==0) printf("\n"); else printf(",");};
f3(x, n, &mx, &mi, &ave);
printf("\nmax=%5d min=%5d ave=%7.2f\n",mx,mi,ave);
return 0;
}
温馨提示:答案为网友推荐,仅供参考