11.成绩转换
输入一个百分制的成绩M,将其转换成对应的等级,具体转换规则如下:
- 90-100 为 A;
- 80-89 为 B;
- 70-79 为 C;
- 60-69 为 D;
- 0-59 为 E;
思路
利用if的嵌套进行输出。
具体实现
#include <stdio.h>
int main()
{
int M;//代表输入的成绩
scanf_s("%d", &M);
if ( M >= 90 && M <= 100) {
printf("成绩为:A");
}
else if (M >= 80 && M <= 89) {
printf("成绩为:B");
}
else if (M >= 70 && M <= 79) {
printf("成绩为:C");
}
else if (M >= 60 && M <= 69) {
printf("成绩为:D");
}
else if (M >= 0 && M <= 59) {
printf("成绩为:E");
} else{
printf("输入成绩非法");
}
return 0;
}
运行结果
复杂度
时间:O(1) ---没有复杂的循环 空间:O(1)-----没有存储量所以是O(1)
12.数值统计
数值统计:统计给定的n个数中,负数、零和正数的个数。
输入描述
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
输出描述
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
示例
输入: 3 -1 0 1
输出: 1 1 1
说明: 统计3个数字其中负数,零,正数的个数分别为1 1 1输入:2 -10 8
输出:101
思路
1.输入个数后,用个数做循环输入需要判断正负的数,再用if.. else做对应的累加,
具体实现
#include <stdio.h>
int main() {
int count;//count表示每行输入的个数
int a = 0, b = 0, c = 0;//分别a表示给定的数据中负数、b表示零和c表示正数的个数。
int x;//表示代表的具体数字
printf("输入:");
scanf_s("%d", &count);
if (count>0&&count < 100) {
for (int i = 1; i <= count; i++) {
scanf_s("%d", &x);
if (x <0) {
a++;
}
else if (x == 0) {
b++;
}
else {
c++;
}
}
printf("输出:负个数:%d 零个数:%d 正个数:%d", a, b, c);
}
return 0;
}
运行结果
复杂度
时间:O(n) ---n为for循环的次数 空间:O(1)-----没有存储量所以是O(1)
小结
今天的代码在思考上对于我基础差的,还能思考的过来,就是在实际操作的时候,犯难。
如1.if()里的判断写错成if(90<=M<=100),正确是:if ( M >= 90 && M <= 100)
2.在输入函数里加入额外的字符,导致输出结果错误 ,错误样式scanf_s("数值%d", &x);错在%d占位符处加了额外字符,调试了很久。正确是:scanf_s("%d", &x);