#include <stdio.h> #define ROW 3 #define COL 4 void stduents_name(char name[30]) { printf("请输入学生姓名:\n"); for(int i=0;i<3;i++) { scanf("%s",name[i]); } } void input_scores(int nums[][COL], int row ,char name[30]) { printf("请输入学生成绩:\n"); for (int i = 0; i < row; i++) { printf("第%d名学生成绩是: ", name[i]); for (int j = 0; j < COL; j++) { scanf("%d", &nums[i][j]); } } } void print_scores(int nums[][COL], int row) { printf("\n输入的学生成绩为:\n"); for (int i = 0; i < row; i++) { for (int j = 0; j < COL; j++) { printf("%5d", nums[i][j]); } printf("\n"); } } void calculate_sum(int nums[][COL], int sum[], int row) { for (int i = 0; i < row; i++) { sum[i] = 0; for (int j = 0; j < COL; j++) { sum[i] += nums[i][j]; } } } void bubble_sort(int nums[][COL], int sum[], int row) { int temp, temp_sum; for (int k = 0; k < row - 1; k++) { for (int i = 0; i < row - k - 1; i++) { if (sum[i] > sum[i + 1]) { temp_sum = sum[i]; sum[i] = sum[i + 1]; sum[i + 1] = temp_sum; for (int j = 0; j < COL; j++) { temp = nums[i][j]; nums[i][j] = nums[i + 1][j]; nums[i + 1][j] = temp; } } } } } int main() { int nums[ROW][COL]; int sum[ROW]; char name[30]; stduents_name(name); input_scores(nums, ROW, name); print_scores(nums, ROW); calculate_sum(nums, sum, ROW); bubble_sort(nums, sum, ROW); printf("\n排序后学生成绩为(由低到高):\n"); for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { printf("%5d", nums[i][j]); } printf("\n"); } return 0; }
时间: 2024-03-30 22:33:32 浏览: 92
这是一段 C 语言代码,主要实现了一个学生成绩排序的功能。首先通过 stduents_name 函数获取输入的学生姓名,然后通过 input_scores 函数获取学生的成绩信息并存储在 nums 数组中。接着通过 calculate_sum 函数计算每个学生的总成绩并存储在 sum 数组中,最后通过 bubble_sort 函数对学生的成绩进行排序并输出结果。整个程序可以在 main 函数中执行。
相关问题
请用c语言代码写一个象棋游戏
很抱歉,我是一名语言模型,不能编写代码。但是,以下是一个简单的象棋游戏的游戏规则和部分代码示例,供参考。
游戏规则:
1. 棋盘上共有32个棋子,分为红黑两方,每方16个棋子。
2. 每个棋子只能在棋盘上特定的位置移动,每次只能移动一个格子。
3. 红方先走,每次走一步,黑方紧随其后,轮流进行。
4. 当一方棋子到达对方底线,可以升变成更强的棋子(兵变为炮、马、车、象等),但不能升变为将军。
5. 当其中一方的将军被将军对方的棋子吃掉时,游戏结束。
代码示例:
```c
#include <stdio.h>
// 定义棋子类型
#define CHE 'C'
#define MA 'M'
#define XIANG 'X'
#define SHI 'S'
#define JIANG 'J'
#define PAO 'P'
#define BING 'B'
// 定义棋盘大小
#define ROW 10
#define COL 9
// 定义红黑方
#define RED 0
#define BLACK 1
// 定义棋子初始位置
char chess[ROW][COL] = {
{'C', 'M', 'X', 'S', 'J', 'S', 'X', 'M', 'C'},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', 'P', ' ', ' ', ' ', ' ', ' ', 'P', ' '},
{'B', ' ', 'B', ' ', 'B', ' ', 'B', ' ', 'B'},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{'R', ' ', 'R', ' ', 'R', ' ', 'R', ' ', 'R'},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', 'P', ' ', ' ', ' ', ' ', ' ', 'P', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
};
// 定义棋子结构体
struct Chess {
char name; // 棋子名称
int x; // 棋子横坐标
int y; // 棋子纵坐标
int side; // 棋子所属方(红0,黑1)
};
// 定义函数:初始化棋子
void initChess(struct Chess *chessArray) {
int index = 0; // 棋子数组下标
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (chess[i][j] != ' ') {
chessArray[index].name = chess[i][j];
chessArray[index].x = i;
chessArray[index].y = j;
if (i < 5) {
chessArray[index].side = RED; // 红方
} else {
chessArray[index].side = BLACK; // 黑方
}
index++;
}
}
}
}
// 定义函数:打印棋盘
void printChessboard(struct Chess *chessArray) {
printf("---------------------------\n");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
int flag = 0; // 是否打印棋子标记
for (int k = 0; k < 32; k++) {
if (chessArray[k].x == i && chessArray[k].y == j) {
printf("%c", chessArray[k].name);
flag = 1;
break;
}
}
if (flag == 0) {
printf(" ");
}
printf(" ");
}
printf("\n");
}
printf("---------------------------\n");
}
int main() {
struct Chess chessArray[32]; // 定义棋子数组
initChess(chessArray); // 初始化棋子
printChessboard(chessArray); // 打印棋盘
return 0;
}
```
阅读全文