C语言程序作业6(数组)(平均成绩))(矩阵运算)(矩阵的转置(即行列互换))(逆序)

1. (程序题)

假如score数组中的成绩如下:80、90、60、70、50,请编写函数 int fun(int score[], int m, int below[]),其功能是:计算 score 中 m 个人的平均成绩 aver, 将低于aver的成绩放在 below 中, 通过函数名返回人数。在主函数中调用fun,并输出低于aver的成绩。

**无输入提示信息和输入数据

**输出格式要求:"低于平均分的成绩如下:\n"

                       "%d\n"

 

  1 #include<stdio.h>      
  2 
  3 
  4 
  5 int fun(int score[], int m, int* below)
  6 
  7 {
  8 
  9 int i;
 10 
 11 int sum = 0;
 12 
 13 int aver;
 14 
 15 for (i = 0; i < m; i++)
 16 
 17 {
 18 
 19 sum += score[i];
 20 
 21 }
 22 
 23 aver = sum / m;
 24 
 25 for (i = 0; i < m; i++)
 26 
 27 {
 28 
 29 if (score[i] < aver)
 30 
 31 {
 32 
 33 below[i] = score[i];
 34 
 35 }
 36 
 37 else
 38 
 39 {
 40 
 41 below[i] = { 0 };
 42 
 43 }
 44 
 45 }
 46 
 47 return aver;
 48 
 49 }
 50 
 51 
 52 
 53 int main()
 54 
 55 {
 56 
 57 int score[5] = { 80,90,60,70,50 };
 58 
 59 int m = 5;
 60 
 61 int below[5];
 62 
 63 fun(score, m, below);
 64 
 65 printf("低于平均分的成绩如下:\n");
 66 
 67 for (int i = 0; i < m; i++)
 68 
 69 {
 70 
 71 if (below[i] != 0)
 72 
 73 {
 74 
 75 printf("%d\n", below[i]);
 76 
 77 }
 78 
 79 }
 80 
 81 return 0;
 82 
 83 }
 84 
 85 
 86 
 87 正确答案:
 88 程序语言 C/C++
 89 #include <stdio.h>
 90 
 91 #include <stdlib.h>
 92 
 93 #define N 5
 94 
 95 int fun(int score[], int m, int below[])
 96 
 97 {
 98 
 99      double sum = 0.0, aver;
100 
101      int i, n = 0;
102 
103      for(i=0; i<m; i++)
104 
105      {
106 
107          sum += score[i];
108 
109      }
110 
111      aver=sum/m;
112 
113      for(i=0; i<m; i++)
114 
115      {
116 
117          if(score[i] < aver)
118 
119          {
120 
121               n++;
122 
123               below[n-1] = score[i];
124 
125          }
126 
127      }
128 
129      return n;  //返回低于平均分的人数
130 
131 }
132 
133 int main(void)
134 
135 {  
136 
137      int i, n, below[N];
138 
139      int score[N]={80,90,60,70,50};
140 
141      n=fun(score, N, below);
142 
143      printf("低于平均分的成绩如下:\n");
144 
145      for (i=0; i<n; i++)
146 
147          printf("%d\n", below[i]);
148 
149      //system("pause");
150 
151      return 0;
152 
153 }
154 
155 
156 
157 
158 用例1:
159 输入
160 输出
161 低于平均分的成绩如下: 60 50

2. (程序题)

编写函数fun,函数的功能是: 计算N*N矩阵的主对角线元素和副对角线元素之和,  例如,若N=3,有下列矩阵: 

函数的返回值为30。

**无输入提示信息和输入数据

**输出格式要求:"sum=%d\n"

运行结果:

 

我的答案:
#include <stdio.h>  

#define N 3

int fun(int n, int matrix[][N]) 

{

int sum = 0;

for (int i = 0; i < n; i++) {

sum += matrix[i][i]; 

sum += matrix[i][n - i - 1]; 

}

return sum;

}



int main() {

int n = 3;

int matrix[][N] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

int sum = fun(n, matrix);

printf("sum=%d\n", sum);

return 0;

}



正确答案:
程序语言 C/C++
#include <stdio.h>

#include <stdlib.h>

#define N 3

 

int  fun(int  t[][N], int  n)

{

     int  i, sum=0;

     for(i=0; i<n; i++)

         sum+=t[i][i];              

     for(i=0; i<n; i++)

         sum+= t[i][n-1-i] ;          

     return sum;

}

int main(void)

{  

int a[N][N] = {1,2,3,4,5,6,7,8,9}, sum;

     /*int i,j,n;

     printf("Input n(n<10):");

     scanf("%d", &n);*/

     //为数组赋值

/*for ( i=0; i<n; i++ )

         for ( j=0; j<n; j++ )

              scanf("%d",&a[i][j]);*/

     //计算数组主对角线元素和副对角线元素之和

sum = fun(a, N);

     printf("sum=%d\n", sum);

     //system("pause");

     return 0;

}


用例1:
输入
输出
sum=30

编写程序, 实现矩阵(3行3列)的转置(即行列互换)。例如,输入下面的矩阵:

             100  200  300

             400  500  600

             700  800  900

 

则运行结果如下:

**无输入提示信息和输入数据

**输出格式要求:"%5d"

【提示】:矩阵是按行存储在二维数组 array[3][3] 中的,要实现矩阵的转置,实际上就是将矩阵主对角线两侧的元素(即数组元素 array[i][j] 与 array[j][i])互换,矩阵主对角线上的元素(i与j相等时)不动;

具体可以用两层循环实现,第一层循环用 i 控制矩阵的行,第二层循环用 j 控制矩阵的列,循环体为两变量的值用一个中间量实现互换;

 

我的答案:
#include <stdio.h>  



void transpose(int matrix[3][3]) {

int temp;

for (int i = 0; i < 3; i++) {

for (int j = i; j < 3; j++) {

temp = matrix[i][j];

matrix[i][j] = matrix[j][i];

matrix[j][i] = temp;

}

}

}



int main() {

int matrix[3][3] = { {100, 200, 300}, {400, 500, 600}, {700, 800, 900} };

transpose(matrix);

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

printf("%5d", matrix[i][j]);

}

printf("\n");

}

return 0;

}



正确答案:
程序语言 C/C++
#include <stdio.h>

#include <stdlib.h>

#define N 3

 

void fun(int array[N][N])

{

     int i,j,t;

     for(i=0;i<N;i++){   

         for(j=0;j<i;j++){

              t=array[i][j];

              array[i][j]=array[j][i];

              array[j][i]=t;

         }

}

}

int main(void)

{  

     int a[N][N] = {{100,200,300},{400,500,600},{700,800,900}};

     int i, j;

     fun(a);

     for ( i=0; i<N; i++ ) {

         for ( j=0; j<N; j++ )     {

              printf("%5d",a[i][j]);

         }

         printf("\n");

     }

     //system("pause");

     return 0;

}


用例1:
输入
输出
100 400 700 200 500 800 300 600 900

4.编写函数fun,函数的功能是:将一个数组中的数据逆序重新存放。在主函数中定义一个长度为5的整型一维数组,从键盘输入数据为数组元素赋值,调用fun函数将数组中的数据逆序存放,输出修改后的数组元素。

 

**输入提示信息:"Input five numbers:\n"

**输出格式要求:"%d "

运行结果如:

 

  1 我的答案:
  2 #include<stdio.h>
  3 
  4 void fun(int a[],int m)
  5 
  6 {
  7 
  8 int i;
  9 
 10 int tem;
 11 
 12 for (i = 0; i < m/2;i++)
 13 
 14 {
 15 
 16 tem= a[i];
 17 
 18 a[i] = a[m - i - 1];
 19 
 20 a[m - i - 1] = tem;
 21 
 22 }
 23 
 24 }
 25 
 26 int main()
 27 
 28 {
 29 
 30 int m = 5,i;
 31 
 32 int a[5];
 33 
 34 printf("Input five numbers:\n");
 35 
 36 for (i = 0; i < 5; i++)
 37 
 38 {
 39 
 40       scanf("%d",& a[i]);
 41 
 42 }
 43 
 44 fun(a, m);
 45 
 46 for (i = 0; i < 5; i++)
 47 
 48 {
 49 
 50 printf("%d ", a[i]);
 51 
 52 }
 53 
 54 return 0;
 55 
 56 }
 57 
 58 正确答案:
 59 程序语言 C/C++
 60 #include <stdio.h>
 61 
 62 #include <stdlib.h>
 63 
 64 #define N 5
 65 
 66  
 67 
 68 void fun(int a[],int n)
 69 
 70 {
 71 
 72      int  i,j,t;
 73 
 74      for(i=0,j=n-1;i<j;i++,j--) 
 75 
 76      {
 77 
 78          t=a[i];
 79 
 80          a[i] =a[j];
 81 
 82          a[j]=t;
 83 
 84      }
 85 
 86 }
 87 
 88  
 89 
 90 int main(void)
 91 
 92 {  
 93 
 94      int a[N],i;
 95 
 96      printf("Input five numbers:\n");
 97 
 98      for(i=0;i<N;i++)
 99 
100      {
101 
102          scanf("%d",&a[i]);
103 
104      }
105 
106      fun(a,N);
107 
108      for(i=0;i<N;i++)
109 
110      {
111 
112          printf("%d ",a[i]);
113 
114      }
115 
116      printf("\n");
117 
118      //system("pause");
119 
120      return 0;
121 
122 }
123 
124 
125 用例1:
126 输入
127 1 2 3 4 5
128 
129 输出
130 Input five numbers: 5 4 3 2 1

 

posted @ 2023-12-21 22:29  ZDhr  阅读(104)  评论(0)    收藏  举报