1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h> #define M 5 #define N 5 int main() { int a,b,c,d,f,sum; double he[5]={0},shu[M][N]={{11,12,13},{14,15,16},{17,18,19},{21,22,22},{23,24,25}}; printf(" 语文 数学 英语 总和 平均 "); for(a=0;a<M;a++) { sum=0;d=3;f=4; for(b=0;b<N-2;b++) { sum=sum+shu[a][b]; } shu[a][d]=sum; shu[a][f]=shu[a][d]/(N-2); } for(a=0;a<M;a++) { printf(" "); for(b=0;b<N;b++) { printf("%.2f ",shu[a][b]); } printf(" "); } for(a=0;a<M;a++) { sum=0; for(b=0;b<N;b++) { sum+=shu[b][a]; } he[a]=(double)sum/N; } printf("平均数 "); for(a=0;a<N;a++) { printf("%.2f ",he[a]); } return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
# include<stdio.h> # include<stdlib.h> #define N 100 #define M 100 int main() { int a,b,c,d,e=0,shu[N][M]={0},sum,sum1=0,sum2=0,sum3,he[N]={0},he1[N]={0}; printf("输入数组有几行几列方阵 "); scanf("%d%d",&c,&d); x=1; for(a=0;a<c;a++) { for(b=0;b<d;b++) { scanf("%d",&shu[a][b]); } } system("cls"); printf("对角元素和 "); for(a=0,b=0;a<M;a++,b++) { sum1=sum1+shu[a][b]; } printf("%d ",sum1); for(a=0,b=d-1;a<M;a++,b--) { sum2=sum2+shu[a][b]; } printf("%d ",sum2); printf("就各行各列的和 "); for(a=0;a<c;a++) { sum=0; for(b=0;b<d;b++) { sum=sum+shu[a][b]; } he[a]=sum; } for(a=0;a<N;a++) { sum3=0; for(b=0;b<M;b++) { sum3=sum3+shu[b][a]; } he1[a]=sum3; } for(b=0;b<c;b++) { printf("第%d行和是%d ",b+1,he[b]); } for(b=0;b<d;b++) { printf("第%d列和是%d ",b+1,he1[b]); } printf(" 输出 "); for(a=0;a<c;a++) { for(b=0;b<d;b++) { printf("%d ",shu[a][b]); } printf(" "); } return 0; }
1.按照以下形式打印杨辉三角(要求输出10行)
# include<stdio.h> # define N 10 # define M 10 void shu(int a); int main() { int a,b,c,d,e,f,shu[N][M]={0},i,m,z; printf("输出杨辉三角 "); shu[0][4]=1; z=1; e=4; for(a=0;a<10;a++) { c=a; for(b=0;b<10;b++) { if(10-c>0) { printf(" "); c++; } } f=e; for(c=0;c<z;c++) { printf("%4d",shu[a][f]); f++; } printf(" "); z++; m=0; if(z%2==0) { for(d=0;d<z;d++) { shu[a+1][e+m]=shu[a][e-1+m]+shu[a][e+m]; m++; } } else { e--; for(d=0;d<z;d++) { shu[a+1][e+m]=shu[a][e+m]+shu[a][e+1+m]; m++; } } } }
2.猴子选大王
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
# include <stdio.h> # define N 1000 int main() { int a,max,min,b,f,c,d,e,shu[N]={0}; printf("输入 "); scanf("%d",&b); c=1; d=0; do { f=0; for(a=0;a<b;a++) { if(shu[a]!=0) { continue; } else { d++; if(d%3==0) { shu[a]=c; c++; d=0; } } } for(a=0;a<b;a++) { if(shu[a]==b) { f=1; } } if(f==1) { break; } }while(1); for(a=0;a<b;a++) { if(shu[a]==b) { printf("%d",a+1); } } return 0; }
实验总结:
1.不会做啊,硬想都想不出来,真尴尬;
2.二维数组输出需要自己加换行;
3.整体框架的构造,....
4.格式对不齐使用/t
5.注意数组不要越界