127、编写一个程序,读取整数并将它们存储在一个 5×5 数组的第一行和第一列中。然后,程序应创建托普利茨矩阵并以代数形式显示其元素。
#include <stdio.h>
#define ROWS 5
int main(void) {
int i, j, t[ROWS][ROWS];
printf("Enter [0][0] element: ");
scanf("%d", &t[0][0]);
for (i = 1; i < ROWS; i++) {
printf("Enter [0][%d] element: ", i);
scanf("%d", &t[0][i]);
}
for (i = 1; i < ROWS; i++) {
printf("Enter [%d][0] element: ", i);
scanf("%d", &t[i][0]);
}
for (i = 0; i < ROWS - 1; i++)
for (j = 0; j < ROWS - 1; j++)
t[i + 1][j + 1] = t[i][j];
for (i = 0; i < ROWS; i++) {
for (j = 0; j < ROWS; j++)
printf("%3d", t[i][j]);
printf("\n");
}
return 0;
}
128、编写一个程序,将100名学生在10门课程中的成绩读取并存储在一个100×10的数组中,然后显示每个学生的平均成绩、最高成绩和最低成绩。该程序还应显示数组中持有最佳和最差平均成绩的位置。如果有多个学生具有相同的最佳或最差平均成绩,程序应显示找到的第一个位置。程序应强制用户输入的成绩在[0, 10]范围内。
#include <stdio.h>
#define STUDS 100
#define COURSES 10
int main(void){
int i, j, min_pos, max_pos;
float sum, min_grd, max_grd, avg_grd, min_avg_grd, max_avg_grd, grd[STUDS][COURSES];
max_avg_grd = -1;
min_avg_grd = 11;
for(i = 0; i < STUDS; i++){
sum = 0;
max_grd = -1;
min_grd = 11;
for(j = 0; j < COURSES; j++){
do{
printf("Enter grade of student_%d for lesson_%d: ", i+1, j+1);
scanf("%f", &grd[i][j]);
} while(grd[i][j] < 0 || grd[i][j] > 10);
sum += grd[i][j];
if(grd[i][j] >= max_grd)
max_grd = grd[i][j];
if(grd[i][j] <= min_grd)
min_grd = grd[i][j];
}
avg_grd = sum / COURSES;
if(avg_grd > max_avg_grd){
max_avg_grd = avg_grd;
max_pos = i;
}
if(avg_grd < min_avg_grd){
min_avg_grd = avg_grd;
min_pos = i;
}
printf("Student_%d: Avg = %.2f Max = %.2f Min = %.2f\n", i+1, avg_grd, max_grd, min_grd);
}
printf("Best average grade position: %d\n", max_pos + 1);
printf("Wo