C语言 输入一个非负整数n,再输入n个学生的成绩
时间: 2024-09-28 11:10:00 浏览: 34
在C语言中,你可以通过循环结构(如for或while)以及`scanf`函数来实现这个功能。首先,你需要从用户那里获取非负整数n,然后存储每个学生的成绩。下面是一个简单的示例程序:
```c
#include <stdio.h>
int main() {
int n, score;
// 获取学生人数
printf("请输入学生人数(非负整数):");
scanf("%d", &n);
// 确保输入的n是非负的
if (n < 0) {
printf("错误:输入的学生人数必须是非负的。\n");
return 1; // 结束程序
}
// 读取并存储成绩
for (int i = 0; i < n; i++) {
printf("请输入第%d名学生的成绩:", i + 1);
scanf("%d", &score);
// 您可以在这里对成绩做进一步处理,例如添加到数组或链表中
}
printf("已输入所有学生成绩。\n");
return 0;
}
相关问题
C语言,有一些非负整数序列,把所有数字拼接起来排成一个数(可能很长)。输出能拼接出的所有数字中最小的那一个。 【输入形式】 输入一些非负整数,以-1结束。 【输出形式】 输出拼接后的最小的整数
这是一个经典的问题,可以使用排序算法来解决。我们可以将所有的数字转化为字符串,然后通过比较两个字符串的大小来确定它们在拼接后的顺序。
以下是使用选择排序算法的 C 语言实现:
```c
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void selection_sort(char str[][11], int len) {
int i, j, min;
for (i = 0; i < len - 1; i++) {
min = i;
for (j = i + 1; j < len; j++) {
if (strcmp(str[j], str[min]) < 0) {
min = j;
}
}
if (min != i) {
swap(str[i], str[min]);
}
}
}
int main() {
int num[1000], i, j;
char str[1000][11];
for (i = 0; ; i++) {
scanf("%d", &num[i]);
if (num[i] == -1) {
break;
}
sprintf(str[i], "%d", num[i]);
}
int len = i;
selection_sort(str, len);
for (i = 0; i < len; i++) {
printf("%s", str[i]);
}
printf("\n");
return 0;
}
```
首先,我们定义一个整型数组 num,用于存储输入的非负整数。然后,我们使用 sprintf 函数将每个数字转化为字符串,并存储在一个字符串数组 str 中。接着,我们使用选择排序算法对字符串数组 str 进行排序。最后,我们遍历排序后的字符串数组,将每个字符串拼接起来,输出结果。
需要注意的是,我们定义的字符串数组 str 的长度为 11,这是因为一个整数最多只有 10 位,再加上一个终止符号,所以字符串的长度需要为 11。
1.统计MOOC证书:学生修读程序设计MOOC,60分及以上获得合格证书,85分及以上获得优秀证书,不到60分则没有证书。输入一个非负整数n,再输入n个学生的MOOC成绩,统计优秀、合格证书的数量,以及没有获得证书的数量。用C语言编写
以下是用C语言编写的程序:
```c
#include <stdio.h>
int main() {
int n, score, qualified = 0, excellent = 0, no_certificate = 0;
printf("请输入学生人数n:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
printf("请输入第%d个学生的成绩:", i);
scanf("%d", &score);
if (score >= 85) { // 优秀证书
excellent++;
} else if (score >= 60) { // 合格证书
qualified++;
} else { // 没有证书
no_certificate++;
}
}
printf("获得优秀证书的学生数量:%d\n", excellent);
printf("获得合格证书的学生数量:%d\n", qualified);
printf("没有获得证书的学生数量:%d\n", no_certificate);
return 0;
}
```
程序中使用了循环语句for来输入n个学生的成绩,并根据成绩统计优秀、合格证书的数量,以及没有获得证书的数量。最后输出统计结果。
阅读全文