题目就不放出来了,对着练习题号就行
练习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;
}