A类
1.(原创)耿老师有10个学生,现在老师很生气,想找出成绩最差的学生打PP,下列程序实现这一功能,要求用户输入10个成绩,输出其中最低的成绩及学生编号,效果如图:

(注:如果有多个学生成绩最低,输出第一个学生的编号)
请补充下列代码,实现此功能:
#include <stdio.h>
int main() {
int input, min, i, who;
min = _________________;
//此处选填:A.-9999 B.0 C.9999
printf("请输入10个成绩:");
for (i = 0; i < 10; i++) {
scanf("%d", &input);
if (input < min) {
min = input;
who = ___________________;
}
}
printf("得分最低的学生为:%d\n", who);
printf("最低分为:%d\n", min);
return 0;
}
B类
2.(原创)请编写一个程序,输出1、2、3的全排列,效果如图(注:只要能输出所有排列即可,顺序未必要与示例相同)

C类
3.(原创)请编写一个程序,要求用户输入n,然后输出1到n的全排列,效果如图

-------------------------------以下为答案------------------------------
1.
#include <stdio.h>
int main() {
int input, min, i, who;
min = 9999;
printf("请输入10个成绩:");
for (i = 0; i < 10; i++) {
scanf("%d", &input);
if (input < min) {
min = input;
who = i + 1;
}
}
printf("得分最低的学生为:%d\n", who);
printf("最低分为:%d\n", min);
return 0;
}
2.
#include <stdio.h>
int main() {
int a, b, c;
for (a = 1; a <= 3; a++) {
for (b = 1; b <= 3; b++) {
for (c = 1; c <= 3; c++) {
if (a != b && a != c && b != c) {
printf("%d %d %d\n", a, b, c);
}
}
}
}
return 0;
}
3.
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}
void perm(int *a, int index, int length) {
int i;
if (index == length) {
for (i = 0; i < length; i++) {
printf("%d ", a[i]);
}
putchar('\n');
} else {
for (i = index; i < length; i++) {
swap(&a[i], &a[index]);
perm(a, index + 1, length);
swap(&a[i], &a[index]);
}
}
}
int main() {
int n, i, *a;
printf("请输入n:");
scanf("%d", &n);
a = (int *)malloc(sizeof(int) * n);
for (i = 0; i < n; i++) {
a[i] = i + 1;
}
perm(a, 0, n);
return 0;
}
本文提供三道程序设计题目解答,包括查找最低分学生、生成数字全排列及任意长度数的全排列,涵盖基本输入输出、循环及递归算法。
1284

被折叠的 条评论
为什么被折叠?



