1.数组编程 (3)某歌手大赛,共有10个评委给歌手打分,分数采用百分制,去掉一个最高 分,去掉一个最低分,然后取平均分,得到歌手的成绩。10个分数由键盘输入, 编写程序计算某歌手的成绩。 float calculates(float s[10]) int float max=s[OL, min=s[O], sum=0, ave for(i=0;l<10;i++) if(s[]>max)max=s[]: if(s[i]<min )min=[i] sum=sum+s[] ave=( sum-max-min/8 return(ave) int is float score, s[ 10]; printf( \nplease input the 10 scores: n") for(i=0;<10;i+ scanf( %f, &s[i: score=calculates(s) printf( \ nThe singers score is %f score) (4)有一个一维数组包含10个元素,编写程序将其中的值按逆序重新存放。即 第一个元素和最后一个元素交换位置,第二个元素和倒数第二个元素交换位置 依次类推 #definen 10 ma int i,j, a[N], m, n, temp: printf( " \nPlease input %d integer: \n",n; for(i=0; K<N; i++) scanf(%d"&[D (N-1)/2 for(i=0; i<=m; i++) j=N-1; temp=a[j]:
1.数组编程 (3) 某歌手大赛,共有 10 个评委给歌手打分,分数采用百分制,去掉一个最高 分,去掉一个最低分,然后取平均分,得到歌手的成绩。10 个分数由键盘输入, 编写程序计算某歌手的成绩。 float calculates(float s[10]) { int i; float max=s[0],min=s[0],sum=0,ave; for(i=0;i<10;i++) { if(s[i]>max) max=s[i]; if(s[i]<min) min=s[i]; sum=sum+s[i]; } ave=(sum-max-min)/8; return(ave); } main() { int i; float score,s[10]; printf("\nPlease input the 10 scores:\n"); for(i=0;i<10;i++) scanf("%f",&s[i]); score=calculates(s); printf("\nThe singer's score is %f",score); } (4) 有一个一维数组包含 10 个元素,编写程序将其中的值按逆序重新存放。即 第一个元素和最后一个元素交换位置,第二个元素和倒数第二个元素交换位置, 依次类推。 #define N 10 main() { int i,j,a[N],m,n,temp; n=N; printf("\nPlease input %d integer:\n",n); for(i=0;i<N;i++) scanf("%d",&a[i]); m=(N-1)/2; for(i=0;i<=m;i++) { j=N-1-i; temp=a[i];
a[]=al]: al]=temp; printf( nthe array has been inverted: n"; for(i=0; i<N; i++) printf( %d "a[D: (5)有n个数,已按由小到大的顺序排好,要求输入一个数,将它插入到数列的 合适位置,使数组仍然有序,并输出新数列。编程时应考虑插入的数的各种可能 性(比原所有数都大;比原所有数都小:在最大数和最小数之间) maino static int a[11]={3,8,11,17,20,284058,6785} int num, i; printf( " \nThe list is: \n"); for(i=0;i<10;++) printf( %d "ai printf( \nPlease input the insert number: ) scanf(%d", &num) 9 while(num<a[j&&i>=0) ai+1]=a[; a[i+1]=num printf( " \nThe result is: \n); for(i=0;<11;|++) printf("°%d",a[i]); (8)输入一个M行M列的二维数组,分别计算四周元素及两条对角线上的元素 之和。M由下面的符号常量定义 # define M 5 #define m 5 maino int a[MI[M],ij, m, n,sum1=0, sum2=0 m=M; printf( "\nPlease input %d numbers: \n",m*m) for(i=0; K<M; i++) for=0; j<M;j++) scanf(%d",&a[GD printf( \nThe array is: n);
a[i]=a[j]; a[j]=temp; } printf("\nThe array has been inverted:\n"); for(i=0;i<N;i++) printf("%d ",a[i]); } (5) 有 n 个数,已按由小到大的顺序排好,要求输入一个数,将它插入到数列的 合适位置,使数组仍然有序,并输出新数列。编程时应考虑插入的数的各种可能 性(比原所有数都大;比原所有数都小;在最大数和最小数之间)。 main() { static int a[11]={3,8,11,17,20,28,40,58,67,85}; int num,i; printf("\nThe list is:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\nPlease input the insert number:"); scanf("%d",&num); i=9; while(num<a[i]&&i>=0) { a[i+1]=a[i]; i--; } a[i+1]=num; printf("\nThe result is:\n"); for(i=0;i<11;i++) printf("%d ",a[i]); } (8) 输入一个 M 行 M 列的二维数组,分别计算四周元素及两条对角线上的元素 之和。M 由下面的符号常量定义: #define M 5 #define M 5 main() { int a[M][M],i,j,m,n,sum1=0,sum2=0; m=M; printf("\nPlease input %d numbers:\n",m*m); for(i=0;i<M;i++) for(j=0;j<M;j++) scanf("%d",&a[i][j]); printf("\nThe array is:\n");
for(i=0; K<M; i ++) for=0;j<M; j++) printf( %d "a[GD: f==j(i+j)==(M-1)sum2=sm2+a]; f(i==0i==(M-1川|i==0|==(M-1) suml=sum1+a[G] printf( \n) printf "\nThe round sum is %d"); printf( "\nThe corner sum is %d"sum2) (11)有一段文字,共有5行,分别统计出其中英文大写字母、小写字母、数字、 空格以及其它字符的个数 #indlude"string. h char a[5 [100] int i,j=O, alpha=0, lalpha=0, number=0, space=0, other=0; printf( "iNput 5 string: \n"); for(i=0<5;i++) gets(a[D for(i=0;<5;++) ualpha=0; lalpha=0; number=0; space=0 other=0 forj=0j<100j++) if(a[[]!="0) f(a[>=65&&aJ]<=90) alpha++; else if(a[0]>=97&&a[0]<=122) lalpha++ else if(a[[]>=48&&a[0]<=57)number++i else if(a[G]==32) space++ else other++ else break. printf("n%d: alpha: %d, lalpha: %d, number: %d space: %d, other: %d",i, ualpha lalpha, number, space, other);
for(i=0;i<M;i++) { for(j=0;j<M;j++) { printf("%d ",a[i][j]); if(i==j||(i+j)==(M-1)) sum2=sum2+a[i][j]; if(i==0||i==(M-1)||j==0||j==(M-1)) sum1=sum1+a[i][j]; } printf("\n"); } printf("\nThe round sum is %d",sum1); printf("\nThe corner sum is %d",sum2); } (11) 有一段文字,共有 5 行,分别统计出其中英文大写字母、小写字母、数字、 空格以及其它字符的个数。 #include "string.h" main() { char a[5][100]; int i,j=0,ualpha=0,lalpha=0,number=0,space=0,other=0; printf("\nInput 5 string:\n"); for(i=0;i<5;i++) gets(a[i]); for(i=0;i<5;i++) { ualpha=0;lalpha=0;number=0;space=0;other=0; for(j=0;j<100;j++) { if(a[i][j]!='\0') { if(a[i][j]>=65&&a[i][j]<=90) ualpha++; else if(a[i][j]>=97&&a[i][j]<=122) lalpha++; else if(a[i][j]>=48&&a[i][j]<=57) number++; else if(a[i][j]==32) space++; else other++; } else break; } printf("\n%d:ualpha:%d,lalpha:%d,number:%d,space:%d,other:%d",i,ualpha ,lalpha,number,space,other); }
(13)从键盘输入一个字符串,分别输出其完全大写和完全小写的形式。 #indlude <string h> maino char str[20], low[20], up[20]; int i; printf("nPlease input a string: ) gets(str) printf( " \nThe letter list is: \n ) puts(str ) while(str[!=0) if(str[>=65&&str[门]<=90 low[=str[+32 up[]=st[]; else if(str[]>=97&&str[]<=122) low[=str[]: up[i]=str[]-32; ++; printf( "\nThe result is: n") puts(up; puts(low )
} (13) 从键盘输入一个字符串,分别输出其完全大写和完全小写的形式。 #include <string.h> main() { char str[20],low[20],up[20]; int i; printf("\nPlease input a string:"); gets(str); printf("\nThe letter list is:\n"); puts(str); i=0; while(str[i]!='\0') { if(str[i]>=65&&str[i]<=90) { low[i]=str[i]+32; up[i]=str[i]; } else if(str[i]>=97&&str[i]<=122) { low[i]=str[i]; up[i]=str[i]-32; } i++; } printf("\nThe result is:\n"); puts(up); puts(low); }