算法练习-day08成绩转化和数值统计

143 阅读1分钟

题目一

成绩转换**

输入一个百分制的成绩M,将其转换成对应的等级,具体转换规则如下:

  • 90--100 为 A;

  • 80--89 为 B;

  • 70--79 为 C;

  • 60--69 为 D;

  • 0--59 为 E;

思路

这题比较简单,就是用if-else条件判断语句来判断即可,通过判断的语句来输出对应的等级制成绩。

算法实现

int main()
{
	int M;//接收成绩的变量
	printf("请输入您的成绩:");
	scanf("%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
		printf("E");

	return 0;
}

示例

image.png

题目二

数值统计**

统计给定的n个数中,负数、零和正数的个数。

  • 输入:

    输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。

  • 输出:

    对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。

思路

通过循环scanf函数来进行遍历数值进而统计正负数以及零的个数。

算法实现

int main()
{
	int n;//n代表每一行需要输入多少个数
	while ((scanf("%d", &n)), n)//当n为0时,终止循环
	{
		if (n == 0)
			break;
		int k = 0, j = 0, p = 0;//记录正数,零和负数的个数
		int s;//接收需要判断的数据
		for (int i = 0; i < n; i++)//循环遍历数组来进行统计
		{
			scanf("%d",& s);
			if (s > 0)
			{
				k++;
			}
			else if (s == 0)
			{
				j++;
			}
			else
			{
				p++;
			}
		}
		printf("输出:正数有%d个,零有%d个,负数有%d个", k, j, p);
	}
		
	//}
	return 0;
}

示例

1678169193895.jpg

  • 补充知识点

while语句中用到的scanf作为真假条件
while ((scanf("%d", &n)), n)当n为0时,终止循环
while(scanf("%d", &n)!=EOF)读到文件结尾时终止循环
while(~scanf("%d", &n))读到文件结尾时终止循环
while ((scanf("%d", &n))==1)赋值失败,跳出循环
  • ‘~’按位取反
总结

两题中都用到了if-else语句,还是比较简单的,值得注意的是第二题中如何写while中的scanf来停下程序, 这里还是需要去好好去琢磨一下的。