[蓝蓝计算机考研算法]-day8
成绩转换
输入一个百分制的成绩M,将其转换成对应的等级,具体转换规则如下:
- 90-100 为 A;
- 80-89 为 B;
- 70-79 为 C;
- 60-69 为 D;
- 0-59 为 E;
思路
先判断100和0-59的成绩,因为这两和其他的成绩的计算方式不一样,设置一个变量j,判断了之后,100的j设置为9,0~59的j设置成5,其他的直接j=输入/10,再用switch判断。
具体实现
#include<stdio.h>
int main(){
int i,j;
scanf("%d",&i);
if(i==100){
j=9;
}else if(i<=59){
j=5;
}else{
j=i/10;
}
switch(j){
case 9:printf("A");break;
case 8:printf("B");break;
case 7:printf("C");break;
case 6:printf("D");break;
case 5:printf("E");break;
}
}
结果图
数值统计
统计给定的n个数中,负数、零和正数的个数。
输入
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
输出
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
示例
输入:0
输出:数值统计已结束
输入:100
输出:输入错误
输入:3
2 0 -1
输出:负数有1个,零有1个,正数有0个
输入:3 0 2 -3
输出:负数有1个,零有1个,正数有1个
输入:4 3 1 0 -4
输出:负数有1个,零有1个,正数有2个
思路
首先就是设一个变量接收输入的数有多少组,然后再用一个循环对每一组进行分析,我是用了很多个if else还有两个for嵌套做的,我觉得我写的很烂,可以用switch做的其实而且时间复杂度也很高;如果用结构体来做可能代码不会这么冗余
具体实现
#include<stdio.h>
int main(){
int num,i=0;
scanf("%d",&num);
printf("\n");
if(num==0)
{
printf("数值统计已结束");
}else if(num>=100){
printf("输入错误");
}
else if(num!=0){
for(int j=0;j<num;j++){
int sum1=0,sum2=0,sum3=0;
int k;
scanf("%d",&k);
for(;k>0;k--){
scanf("%d",&i);
if(i<0){
sum1++;
}else if(i==0){
sum2++;
}else if(i>0){
sum3++;
}
}
printf("负数有%d个,零有%d个,正数有%d个\n",sum1,sum2,sum3);
}
}
}