先上图片
小明的妈妈非常关心小明的成绩,每次考试后都会问小明是否进步了。机智的小明会努力找出之前比这次成绩低的试卷
进行比较,如果找到了,他会回答妈妈自己进步了(Y),如果没找到,他只能回答妈妈没进步(N)。已知小明的n次
成绩,请问每次妈妈询问小明,小明的回答是怎么样的。e
时间限制:1000-
内存限制:65536
输入e
1
输入为2行,第1行是一个整数n(n<100),即考试成绩的数量,第二行是n个整数,即每次考试成绩。输入保证n不
大于100,考试成绩在0到100之间。一
输出e
n行,每行是小明的回答(Y或N)
提示
对于每一次成绩,只要之前的成绩有任意一次成绩比当前成绩低,就输出Y,否则输出N
直接上代码,核心就是三个for嵌套
#include<stdio.h>
int main() {
int kaoshi_geshu;
int score [10]; //用来存放输入的成绩
char fina [10]; //存放比较后的结果
fina[0] = 'N'; //第一位因为没有分数可以和他比较,所以初始直接为N;
printf("输入考试成绩的个数\n");
scanf("%d", &kaoshi_geshu);
int i;
for (i = 0; i < kaoshi_geshu; i++) {
printf("第%d次成绩\n", (i + 1));
scanf("%d", &score[i]);
}
int j, k, l;
for (j = 0; j < kaoshi_geshu; j++) { //第一个循环是循环的次数,5个分数就循环5次;
for (k = 1; k < kaoshi_geshu; k++) { //第二个循环是决定比较的一个分数,第一位,第二位等;因为第一位没有数可以和他比较,所以直接从第二位开始;
for (l = 0; l < k; l++) { //第三个循环是被比较的分数;
if (score[l] > score[k]) {
fina[k] = 'Y';
break; //如果前面已经有一位分数比现在分数高就直接退出循环;
}
}
if (fina[k] != 'Y') { //如果fina[k]没有被赋值为Y,说明前面的任意一个分数没有比现在的分数大,所以赋值为N;
fina[k] = 'N';
}
}
}
int n;
for (n = 0; n < kaoshi_geshu; n++) { //循环输出结果;
printf("%c\n", fina[n]);
}
return 0;
}
如果想更多的分数去比较就扩大这两个数组长度,我这里弄了十个。fina的长度要>=score的长度。
int score [10]; //用来存放输入的成绩
char fina [10]; //存放比较后的结果
因为没有分数可以和第一个分数比较,所以就是没有进步,也就是‘N’
fina[0] = 'N'; //第一位因为没有分数可以和他比较,所以初始直接为N;
分别输入成绩的个数和每次考试成绩的分数
printf("输入考试成绩的个数\n");
scanf("%d", &kaoshi_geshu);
int i;
for (i = 0; i < kaoshi_geshu; i++) {
printf("第%d次成绩\n", (i + 1));
scanf("%d", &score[i]);
}
核心部分:数据处理(三个for嵌套),重点理解每个for的作用是什么就好了。
int j, k, l;
for (j = 0; j < kaoshi_geshu; j++) { //第一个循环是循环的次数,5个分数就循环5次;
for (k = 1; k < kaoshi_geshu; k++) { //第二个循环是决定比较的一个分数,第一位,第二位等;因为第一位没有数可以和他比较,所以直接从第二位开始;
for (l = 0; l < k; l++) { //第三个循环是被比较的分数;
if (score[l] > score[k]) {
fina[k] = 'Y';
break; //如果前面已经有一位分数比现在分数高就直接退出循环;
}
}
if (fina[k] != 'Y') { //如果fina[k]没有被赋值为Y,说明前面的任意一个分数没有比现在的分数大,所以赋值为N;
fina[k] = 'N';
}
}
}
最后遍历一遍fina就行
int n;
for (n = 0; n < kaoshi_geshu; n++) { //循环输出结果;
printf("%c\n", fina[n]);
}