4.3 使用二维数组 P91 4.3.1 求两个矩阵的和 4.3.2 求方阵对角线上元素之和 4.3.3 显示算术题和学生答题信息 4.3.4 编写不同级别的打字练习程序 4.3.5 统计一个学习小组的成绩 返回
4.3.1 求两个矩阵的和 P91 【实例4.6】编写程序,计算两个35矩阵的和。 编程思路 定义3个二维数组a、b、c。 对2个矩阵的所有对应元素求和即可得到该2个矩阵之和。
#include <stdio.h> main() { int a[3][4]={{3,8,12,15}, {2,6,15,13},{5,7,10,16}}; int b[3][4]={{6,10,17,15}, {5,12,19,20},{7,16,21,16}}; int c[3][4]={0},i=0,j=0;
a[0][0] a[1][0] a[2][0] a[0][1] a[0][2] a[0][3] a ? a[1][2]
a[0][0] a[1][0] a[2][0] a[0][1] a[0][2] a[0][3] a ? a[2][1]
printf("Array a:\n"); for(i=0; i<3; i++) { for(j=0; j<4; j++) printf("%4d",a[i][j]); printf("\n"); } printf("Array b:\n"); printf("%4d",b[i][j]); 输出三行 输出一行后换行
for(i=0; i<3; i++) for(j=0; j<4; j++) c[i][j]=a[i][j]+b[i][j]; printf("Array c:\n"); { for(j=0; j<4; j++) printf("%4d",c[i][j]); printf("\n"); }
4.3.2 求方阵对角线上元素之和 P93 【实例4.7】编写程序,分别计算55方阵的主对角线上的元素之和与副对角线上的元素之和。
if(i==j) s1=s1+a[i][j]; if(i+j==4) s2=s2+a[i][j]; 行下标和列下标的值相等 3 18 21 25 28 2 61 52 23 35 25 17 81 56 63 26 60 53 31 65 45 37 21 56 63 if(i==j) s1=s1+a[i][j]; if(i+j==4) s2=s2+a[i][j]; 行下标和列下标的值相等 行下标与列下标的和为4
#include <stdio.h> main() { int a[5][5]={{3,18,21,25,28}, {2,61,52,23,35}, {25,17,81,56,63}, {26,60,53,31,65}, {45,37,21,56,63}}; int i=0,j=0,s1=0,s2=0;
printf("Array a:\n"); for(i=0; i<5; i++) { for(j=0; j<5; j++) printf("%4d",a[i][j]); printf("\n"); }
for(i=0; i<5; i++) for(j=0; j<5; j++) { if(i==j) s1=s1+a[i][j]; if(i+j==4) s2=s2+a[i][j]; } printf("s1=%d,s2=%d\n",s1,s2);
4.3.3 显示算术题和学生答题信息 P94 【实例4.8】编写程序,给小学生出4道100以内2个数的加法题,每道题分数为25,最后将题目与学生的答题结果、正确答案、实际得分显示在屏幕上。
a[0][0] a[1][0] a[2][0] a[0][1] a[0][2] a[0][3] a a[0][4] a[0][5] a[3][0] 加数1 加数2 学生 答案 正确 是否 本题 得分 第1题 第2题 第3题 第4题
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 4 main() { int i=0,total=0; int a[N][6]={0};
for(i=0; i<N; i++) { a[i][0]=random(100); a[i][1]=random(100); printf("%d+%d=",a[i][0],a[i][1]); scanf("%d",&a[i][2]); a[i][3]=a[i][0]+a[i][1]; if(a[i][3]==a[i][2]) { a[i][4]=1; a[i][5]=25; } else { a[i][4]=0; a[i][5]=0; } total=total+a[i][5]; }
for(i=0; i<N; i++) printf("%2d+%2d=%3d%5d %5d%5d\n",a[i][0],a[i][1], a[i][2],a[i][3],a[i][4], a[i][5]); printf("The score is:%d\n",total); }
P96 4.3.4 编写不同级别的打字练习程序 【实例4.9】假设有3个级别的文字,其中初级由一串小写字母构成,中级由一串大小写字母构成,高级由英文字母和其他字符组成。编写程序,选择1个级别的文字练习打字,要求显示准确率。按回车键可随时停止练习,这时总字数是实际输入的字符数。
a p r o g r a m m i n … 1级 H e w e n t t o 2级 W h a t ’ s 2 a 3级
#include <stdio.h> #define N 3 main() { char a[N][80]={"programming", "He went to Beijing", "What's 2 and 3?"}; char ch='\0'; int i=0,j=0,right=0;
printf("Pleese select from 0 to 2:"); scanf("%d",&i); puts(a[i]); ch=getch(); while(ch!='\r') { putchar(ch); if(a[i][j]==ch) right++; j++; } printf("\nThe correct rate is: %f\n",(float)right/j*100); 选择1个级别 显示所选级别的文字 从键盘输入1个字符
P97 4.3.5 统计一个学习小组的成绩 【实例4.10】假设一个学习小组由5名学生组成,每个组员有数学、英语和物理课的考试成绩。编写程序,求学习小组各科的平均成绩和总平均成绩。
姓名 数学 英语 物理 张 80 75 92 王 61 65 71 李 59 63 70 赵 85 87 90 周 76 77 85 均值 v
#include <stdio.h> main() { int i=0,j=0,s=0,a[5][3]={0}; float v[3]={0.0},ave=0.0; printf("Input score:\n"); for(i=0; i<3; i++) { for(j=0; j<5; j++) { scanf("%d",&a[j][i]); s=s+a[j][i]; } v[i]=s/5.0; s=0; ave=(v[0]+v[1]+v[2])/3;
printf("The score:\n Math English Physics\n"); for(i=0; i<5; i++) { for(j=0; j<3; j++) printf("%15d",a[i][j]); printf("\n"); } printf("The average:\n"); printf("Math:%.1f English:%.1f Physics:%.1f\n",v[0],v[1],v[2]); printf("Total:%.1f\n",ave);
贯穿教学全过程的实例 P99 根据教材第99~105页上机操作 返回