题目就不放出来了,对着练习题号就行
练习5-1
-
- #include<stdio.h>
- int main()
- {
- int i = 0;
- int arr[5] = {0};
- for (i = 0; i < 5; i++)
- {
- arr[i] = i;
- }
- for (i = 0; i < 5; i++)
- {
- printf("arr[%d]=%d\n", i, i);
-
- }
- return 0;
- }
练习5-2
- #include<stdio.h>//54321
- int main()
- {
- int i = 0;
- int arr[5] = {0};
- int a = 5;
- for (i = 0; i < 5; i++)
- {
- arr[i] = a;
- a--;
- }
- for (i = 0; i < 5; i++)
- {
- printf("arr[%d]=%d\n", i, arr[i]);
-
- }
- return 0;
- }
练习5-3
- #include<stdio.h>//5-3
- int main()
- {
- int i = 0;
- int v[] = { 5,4,3,2,1 };
- for (i = 0; i < 5; i++)
- {
- printf("v[%d]=%d\n", i, v[i]);
- }
- return 0;
练习5-4
- #include <stdio.h>//5-4
-
- int main()
- {
- int i;
- int a[5] = { 17, 23, 36 }; // 使用{17,23,36,0,0} 进行初始化
- int b[5];
-
- for (i = 0; i < 5; i++) {
- b[4 - i] = a[i];
- }
-
- puts(" a b");
- puts("---------");
- for (i = 0; i < 5; i++)
- printf("%4d%4d\n", a[i], b[i]);
-
- return 0;
- }
练习5-4
- #include <stdio.h>
- #define number 7
-
- int main(void)
- {
- int i;
- int x[number];
-
- for (i = 0; i < number; i++) {
- printf("x[%d] : ", i);
- scanf("%d", &x[i]);
- }
-
- for (i = 0; i < 3; i++) {
- int temp = x[i];
- x[i] = x[6 - i];
- x[6 - i] = temp;
- }
-
- puts("倒序排列了。");
- for (i = 0; i < number; i++)
- printf("x[%d] = %d\n", i, x[i]);
-
- return 0;
- }
练习5-6
结果都是1
练习5-7
- #include <stdio.h>
- #define number 80
-
- int main(void)
- {
- int v[number];
- int num;
- int i;
- printf("数据个数:");
- scanf("%d", &num);
- for (i = 0; i < num; i++) {//数组创建
- printf("%d号:",i+1);
- scanf("%d", &v[i]);
- }
- printf("{");
- for (i = 0; i < num-1; i++) {
- printf("%d, ", v[i]);
- }
- printf("%d", v[num-1]);
- printf("}");
-
- return 0;
- }
练习5-8
-
- #include <stdio.h>
-
- #define NUMBER 80 /* 人数上限 */
-
- int main(void)
- {
- int i, j;
- int num; /* 实际的人数 */
- int tensu[NUMBER]; /* 学生的分数 */
- int bunpu[11] = { 0 }; /* 分布图 */
-
- printf("请输入学生人数:");
- scanf("%d", &num);
-
- printf("请输入%d 人的分数。\n", num);
-
- for (i = 0; i < num; i++) {
- printf("%2d号:", i + 1);
- scanf("%d", &tensu[i]);
- bunpu[tensu[i] / 10]++;
- }
-
- puts("\n---分布图---");
-
- for (i = 0; i <= 9; i++) { /* 不到100分 */
- printf("%3d - %3d:", i * 10, i * 10 + 9);
- for (j = 0; j < bunpu[i]; j++)
- putchar('*');
- putchar('\n');
- }
- printf(" 100:");
- for (j = 0; j < bunpu[10]; j++) /* 100分 */
- putchar('*');
- putchar('\n');
-
- return 0;
- }
练习5-9
- #include <stdio.h>
- #define NUMBER 80
-
- int main(void)
- {
- int i, j;
- int num, higt;
- int tensu[NUMBER];
- int bunpu[11] = { 0 };
-
- printf("请输入学生人数:");
- scanf("%d", &num);
-
- printf("请输入%d 人的分数。\n", num);
-
- for (i = 0; i < num; i++) {
- printf("%2d号:", i + 1);
- scanf("%d", &tensu[i]);
- bunpu[tensu[i] / 10]++;
- }
-
- puts("-------------------------------------------");//以下是空间高度
- higt = bunpu[0];
- for(i = 0;i < 11;i++)
- {
- if(bunpu[i] > higt){
- higt = bunpu[i];
- }
- }
-
- for( ;higt > 0;higt--)//限定空间的高,确定有从上到下有几行
- {
- for(j = 1;j <= 11;j++)//从1到11遍历一行中的每一列
- {
- if(bunpu[j] >= higt){//判定数组bunpu[j]>大于该层空间最大值
- printf(" *");//bunpu数组某个数大于空间最大值时,输出两个空格加*号
- }
- else{
- printf(" ");//bunpu数组不大于空间最大值时,输出三个空格
- }
- }
- putchar('\n');
- }
-
- puts("————————————————————————————————————————————");
- for (i = 0; i <= 10; i++)
- {
- printf("%4d",i*10);
- }
-
- return 0;
- }
练习5-10
- int main()
- {
- int arr1[4][3];//4行3列
- int arr2[3][4];//3行4列
- int c[4][4];//乘积变成4行4列
- int i,j,k,a,b;
-
- puts("4行3列");
- for(i = 0;i < 4;i++){//4行3列
- for(j = 0;j < 3;j++){
- scanf("%2d ",&arr1[i][j]);
- }
- }
-
- puts("3行4列");
- for(i = 0;i < 3;i++){//3行4列
- for(j = 0;j < 4;j++){
- scanf("%2d ",&arr1[i][j]);
- }
- }
-
- for (i = 0; i < 4; i++) { //计算矩阵c的值
- for (j = 0; j < 4; j++) {
- c[i][j] = 0;
- for (k = 0; k < 3; k++) {
- c[i][j] += arr1[i][k] * arr2[k][j];
- }
- }
- }
-
- for (a = 0; a < 4; a++)
- {
- for (b = 0; b < 4; b++){
- printf("%d\t", c[a][b]);
- }
- printf("\n");
- }
-
- return 0;
- }
-
-
- //别人的
- int main(void)
- {
- int a,b,c,d = 0;
- int array1[4][3]; //矩阵1
- int array2[3][4]; //矩阵2
- int origion[4][12] = {0}; //原始矩阵乘积数据的数组初始化
- int product[4][4] = {0}; //最终矩阵乘积的数组初始化
-
- puts("请依次输入矩阵1的各值");
-
- for (a = 0; a < 4; a++) //遍历矩阵1来赋值
- {
- for (b = 0; b < 3; b++)
- {
- printf("矩阵1[%d][%d]:",a,b);
- scanf("%d",&array1[a][b]);
- }
- }
-
- for (a = 0; a < 3; a++) //遍历矩阵2来赋值
- {
- for (b = 0; b < 4; b++)
- {
- printf("矩阵2[%d][%d]:",a,b);
- scanf("%d",&array2[a][b]);
- }
-
- }
- //遍历各个乘积赋值到原始数据矩阵中
- for ( a = 0; a < 4; a++) //矩阵1的每一行
- {
- d = 0;
- for (b = 0; b < 4; b++) //矩阵2的每一列
- {
- for (c = 0; c < 3; c++) //矩阵2每一列的各行
- {
- origion[a][d] = array1[a][c] * array2[c][b]; //将矩阵的原始乘积(未合并)赋值到原始数据数组origion
- d += 1;
- }
- }
- putchar('\n');
- }
-
- puts("{");
- //将原始乘积合并,赋值到product二维数组,即矩阵的乘积
- for ( a = 0; a < 4; a++)
- {
- b = 0;
- for (d = 0; d < 12; d++ )
- {
- product[a][b] += origion[a][d];
- if ((d+1)%3 == 0) //变量从0开始,原始数据矩阵每3个相乘数为一组相加
- { printf("%4d",product[a][b]);
- b++; //每一组加完后,更换到product数组元素的第二个元素
- }
- }
- putchar('\n');
- }
- puts("}");
-
-
- return 0;
- }
练习5-11
- #include <stdio.h>
-
- int main(void)
- {
- int s = 6; /*学生数量*/
- int c = 2; /*科目数量*/
- double tensu[s][c];
- int i, j;
- double sum0 = 0, sum1 = 0; /*科目1、科目2的总分*/
- double tmp = 0;
-
- for(i = 0; i < s; i++)
- {
- printf("学生%d\n", i + 1);
- for(j = 0; j < c; j++)
- {
- printf(" 科目%d:", j + 1);
- scanf("%lf", &tensu[i][j]);
- /*验证 显示每次输入的分数
- printf(" %.1f", tensu[i][j]);*/
-
- /*通过判断j的值,为0时,或为1时,分别计入到不同的统计结果中*/
- switch(j)
- {
- case 0 : sum0 += tensu[i][j]; break;
- case 1 : sum1 += tensu[i][j]; break;
- }
-
- putchar('\n');
- }
- }
-
- /*验证 显示输入后所有的科目以及对应分数
- for(i = 0; i < s; i++)
- {
- printf("学生%d\n", i + 1);
- for(j = 0; j < c; j++)
- {
- printf(" 科目%d:%.1f", j + 1, tensu[i][j]);
- putchar('\n');
- }
- }*/
-
- for(i = 0; i < c; i++) /*有c个科目*/
- {
- for(j = 0; j < s; j++) /*将s个学生的成绩加在一起*/
- {
- tmp += tensu[j][i]; /*临时储存每个科目的总分*/
- }
- printf("科目%d 总分:%.1f 平均分:%.1f", i + 1, tmp, tmp / s);
- tmp = 0;
- printf("\n");
- }
-
- printf("\n\n");
-
- for(i = 0; i < s; i++) /*有s个学生*/
- {
- for(j = 0; j < c; j++) /*将c个科目的成绩加在一起*/
- {
- tmp += tensu[i][j]; /*临时储存每个学生的总分*/
- }
- printf("学生%d 总分:%.1f 平均分:%.1f", i + 1, tmp, tmp / c);
- tmp = 0; /*计算出每个学生的平均分后,将临时储存清空*/
- printf("\n");
- }
-
-
- return 0;
- }
-
-
-
- 方法2,理解成6名学生在两次考试的成绩
-
-
- int main()
- {
- int a,b,c,d = 0;
- int array1[6][1];
- int array2[6][1];
- int sum[6][1];
-
-
- puts("请依次输入成绩的各值");
-
- for (a = 0; a < 6; a++) //遍历矩阵1来赋值
- {
- for (b = 0; b < 1; b++)
- {
- printf("成绩[%d][%d]:",a,b);
- scanf("%3d",&array1[a][b]);
- }
- printf("\n");
- }
- for (a = 0; a < 6; a++) //遍历矩阵2来赋值
- {
- for (b = 0; b < 1; b++)
- {
- printf("成绩[%d][%d]:",a,b);
- scanf("%3d",&array2[a][b]);
- }
- printf("\n");
- }
-
- for (a = 0; a < 6; a++) //两次分数
- {
- for (b = 0; b < 1; b++)
- {
- sum[a][b] = array1[a][b] + array2[a][b];
- }
- }
- puts("总分");
- for (a = 0; a < 6; a++) //总分
- {
- for (b = 0; b < 1; b++)
- {
- printf("%3d",sum[a][b]);
- }
- putchar('\n');
- }
- puts("平均分");
- for (a = 0; a < 6; a++) //平均分
- {
- for (b = 0; b < 1; b++)
- {
- printf("%3d",sum[a][b]/2);
- }
- putchar('\n');
- }
-
-
- return 0;
- }
练习5-12
- #include <stdio.h>
-
- int main(void)
- {
- int x, y, z;
- int tensu[2][4][3] = { { {91, 63, 78}, {67, 72, 46},{89, 34, 53}, {32, 54, 34} } ,{ {97, 67, 82}, { 73, 43, 46 }, { 97, 56, 21 }, { 85, 46, 35 } } };
-
-
- for (x = 0; x < 2; x++) {
- for (y = 0; y < 4; y++) {
- for (z = 0; z < 3; z++) {
- printf("%4d", tensu[x][y][z]);
-
- }
- putchar('\n');
- }
- }
- return 0;
-
-
- }