c语言用二维数组表示学生学号和姓名
时间: 2024-12-23 22:25:52 浏览: 8
在C语言中,你可以使用二维数组来存储每个学生的学号和姓名,假设每行代表一个学生,第一列是学号,第二列是姓名。下面是一个示例:
```c
#define ROWS 5 // 定义学生数量
#define COLS 2 // 每个学生有两个字段
// 定义二维字符数组,用于存储学生姓名和学号
char students[][COLS][50] = {
{"001", "李四"}, // 第1个学生
{"002", "王五"},
{"003", "赵六"},
{"004", "陈七"},
{"005", "刘八"} // 注意:字符串常量结束需用'\0'
};
// 访问学生信息
void display_student(int row) {
printf("学号: %s 姓名: %s\n", students[row][0], students[row][1]);
}
// 遍历所有学生
int main() {
for (int i = 0; i < ROWS; i++) {
display_student(i);
}
return 0;
}
相关问题
C语言只使用一维数组二维数组按降序输出学生姓名学号成绩
假设有一个结构体类型为`Student`,包含学生的姓名、学号和成绩三个字段,可以按照以下方式定义:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char name[20];
int id;
int score;
} Student;
```
接下来,我们可以定义一个包含多个`Student`类型元素的一维数组或二维数组,然后按照成绩的降序输出学生的姓名、学号和成绩。
一维数组示例代码如下:
```c
int main() {
Student students[MAX_STUDENTS];
int n, i, j;
printf("请输入学生个数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、学号、成绩:", i + 1);
scanf("%s%d%d", students[i].name, &students[i].id, &students[i].score);
}
// 冒泡排序按成绩降序排列
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
Student tmp = students[j];
students[j] = students[j + 1];
students[j + 1] = tmp;
}
}
}
// 输出结果
printf("按成绩降序输出学生信息:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d\n", students[i].name, students[i].id, students[i].score);
}
return 0;
}
```
二维数组示例代码如下:
```c
int main() {
Student students[MAX_STUDENTS][3];
int n, i, j;
printf("请输入学生个数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、学号、成绩:", i + 1);
scanf("%s%d%d", students[i][0].name, &students[i][1].id, &students[i][2].score);
}
// 冒泡排序按成绩降序排列
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j][2].score < students[j + 1][2].score) {
Student tmp[3];
memcpy(tmp, students[j], sizeof(Student) * 3);
memcpy(students[j], students[j + 1], sizeof(Student) * 3);
memcpy(students[j + 1], tmp, sizeof(Student) * 3);
}
}
}
// 输出结果
printf("按成绩降序输出学生信息:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d\n", students[i][0].name, students[i][1].id, students[i][2].score);
}
return 0;
}
```
用C语言,二维数组,统计学生的成绩和学号(可用函数实现)
在C语言中,你可以定义一个函数来统计学生的成绩和学号。这里有一个简单的例子,假设我们有二维数组`student_scores`存储了每个学生的成绩,我们可以创建一个名为`process_scores`的函数来完成这个任务:
```c
#include <stdio.h>
// 定义二维数组结构体来包含学号和成绩
typedef struct {
int student_id;
float score;
} Student;
// 函数来统计学生信息
void process_scores(Student scores[], int num_students) {
int total_students = 0;
int highest_score = 0;
int lowest_score = INT_MAX;
for (int i = 0; i < num_students; i++) {
total_students++;
if (scores[i].score > highest_score)
highest_score = scores[i].score;
else if (scores[i].score < lowest_score)
lowest_score = scores[i].score;
printf("学号 %d 的成绩: %.2f\n", scores[i].student_id, scores[i].score);
}
printf("总共有 %d 名学生\n", total_students);
printf("最高分: %.2f\n", highest_score);
printf("最低分: %.2f\n", lowest_score);
}
int main() {
// 假设有如下学生成绩数据
Student student_data[] = {
{1, 85.0},
{2, 92.5},
{3, 78.0},
{4, 96.0},
{5, 88.5}
};
int num_students = sizeof(student_data) / sizeof(student_data[0]);
process_scores(student_data, num_students);
return 0;
}
阅读全文