C语言刷题——lesson5

1. BC41-你是天才吗?

题目描述

据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。

输入描述:

多组输入,每行输入包括一个整数表示的智商。

输出描述:

针对每行输入,输出“Genius”。

示例1

输入

160

输出

Genius

参考代码:

//方法1
#include 
int main()
{
	int n = 0;
	while (scanf("%d", &n) != EOF)
	{
		if (n >= 140)
			printf("Genius\n");
	}
	return 0;
}
//方法2
#include 
int main()
{
	int n = 0;
	//这种写法是因为scanf读取失败返回EOF,EOF是-1,所以按位取反后的结果是0,0为假,可以让循环停止。
		while (~scanf("%d", &n))
		{
			if (n >= 140)
				printf("Genius\n");
		}
	return 0;
}

答案解析:

关于对组输入的题目,一定要处理好多组数据的输入问题,然后考虑循环如何结束。

方法1和方法2,给出了2种多组输入的方法。

2. BC42-完美成绩

题目描述

KiKi想知道他的考试成绩是否完美,请帮他判断。从键盘输入一个整数表示的成绩,编程判断成绩是否在90~100之间,如果是则输出“Perfect”。

输入描述:

多组输入,每行输入包括一个整数表示的成绩(90~100)。

输出描述:

针对每行输入,输出“Perfect”。

示例1

输入

98

输出

Perfect

参考代码:

#include 
int main()
{
	int score = 0;
	while (scanf("%d", &score) != EOF)
	{
		if (score >= 90 && score <= 100)
			printf("Perfect\n");
	}
	return 0;
}

答案解析:

  1. 多组输入。

  2. 数学中的 90<=score<=100 的写法,在C语言中直接写是有bug的。

3. BC43-及格分数

题目描述

KiKi想知道他的考试分数是否通过,请帮他判断。从键盘任意输入一个整数表示的分数,编程判断该分数是否在及格范围内,如果及格,即:分数大于等于60分,是输出“Pass”,否则,输出“Fail”。

输入描述:

多组输入,每行输入包括一个整数表示的分数(0~100)。

输出描述:

针对每行输入,输出“Pass”或“Fail”。

示例1

输入

94

输出

Pass

示例2

输入

44

输出

Fail

参考代码:

#include 
int main()
{
	int score = 0;
	while (scanf("%d", &score) != EOF)
	{
		if (score >= 60)
			printf("Pass\n");
		else
			printf("Fail\n");
	}
	return 0;
}

答案解析:

4. BC44-判断整数的奇偶性

题目描述

KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-231~231-1),编程判断它的奇偶性。

输入描述:

多组输入,每行输入包括一个整数。

输出描述:

针对每行输入,输出该数是奇数(Odd)还是偶数(Even)。

示例1

输入

4
7

输出

Even
Odd

参考代码:

#include 
int main()
{
	int num = 0;
	while (~scanf("%d", &num))
	{
		if (num % 2 == 1)
			printf("Odd\n");
		else
			printf("Even\n");
	}
	return 0;
}

答案解析:

5. BC45-最高分数

题目描述

KiKi参加了语文、数学、外语的考试,请帮他判断三科中的最高分。从键盘任意输入三个整数表示的分数,编程判断其中的最高分。

输入描述:

多组输入,每行输入包括三个整数表示的分数(0~100),用空格分隔。

输出描述:

针对每行输入,输出为一行,即三个分数中的最高分。

示例1

输入

94 98 99
100 88 60

输出

99
100

参考代码:

#include 
int main()
{
    int i = 0;
    int score[3] = { 0 };
    while (scanf("%d %d %d", &score[0], &score[1], &score[2]) != EOF)
    {
        int max = 0;//每一组测试,max都恢复到0
        int i = 0;
        for (i = 0; i < 3; i++)
        {
            if (score[i] > max)
                max = score[i];
        }
        printf("%d\n", max);
    }

    return 0;
}

答案解析:

  1. 多组输入

  2. 每组输入接受3个数字,求出最大值,因为成绩不能是负数,所以假设max期初是0

6. BC46-判断元音还是辅音

题目描述

KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。

输入描述:

多组输入,每行输入一个字母。

输出描述:

针对每组输入,输出为一行,如果输入字母是元音(包括大小写),输出“Vowel”,如果输入字母是非元音,输出“Consonant”。

示例1

输入

A
b

输出

Vowel
Consonant

参考代码:

//方法1
#include 
int main()
{
    char ch = 0;
    char arr[] = "AEIOUaeiou";
    while ((ch = getchar()) != EOF)
    {
        int i = 0;
        for (i = 0; i < 10; i++)
        {
            if (ch == arr[i])
            {
                printf("Vowel\n");
                break;
            }
        }
        if (i == 10)
            printf("Consonant\n");
        getchar();//去除每个字符后的\n
    }
    return 0;
}
//方法2
#include 
int main()
{
    char ch = 0;
    char arr[] = "AEIOUaeiou";
    //在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符
    while (scanf(" %c", &ch) != EOF)
    {
        int i = 0;
        for (i = 0; i < 10; i++)
        {
            if (ch == arr[i])
            {
                printf("Vowel\n");
                break;
            }
        }
        if (i == 10)
            printf("Consonant\n");
    }
    return 0;
}
//方法3
#include 
int main()
{
    char ch = 0;
    char arr[] = "AEIOUaeiou";
    //在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符
    //不会为下次留下空白字符的隐患
    while (scanf("%c\n", &ch) != EOF)
    {
        int i = 0;
        for (i = 0; i < 10; i++)
        {
            if (ch == arr[i])
            {
                printf("Vowel\n");
                break;
            }
        }
        if (i == 10)
            printf("Consonant\n");
    }
    return 0;
}

答案解析:

7. BC47-判断是不是字母

题目描述

KiKi想判断输入的字符是不是字母,请帮他编程实现。

输入描述:

多组输入,每一行输入一个字符。

输出描述:

针对每组输入,输出单独占一行,判断输入字符是否为字母,输出内容详见输出样例。

示例1

输入

A
6

输出

A is an alphabet.
6 is not an alphabet.

参考代码:

#include 
#include 
int main()
{
    int ch = 0;
    while ((ch = getchar()) != EOF)
    {
        //判断字母
        //if((ch>='A' && ch<='Z') || (ch>='a' && ch<='z'))
        if (isalpha(ch))
        {
            printf("%c is an alphabet.\n", ch);
        }
        else
        {
            printf("%c is not an alphabet.\n", ch);
        }
        //清理掉\n
        getchar();
    }
    return 0;
}

答案解析:

本题和BC46是一个道理的,三种方法均可使用。

8. BC48-字母的大小写转换

题目描述

KiKi想完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。

输入描述:

多组输入,每一行输入一个字母。

输出描述:

针对每组输入,输出单独占一行,输出字母的对应形式。

示例1

输入

a
A
Z

输出

A
a
z

参考代码:

#include 
#include 
int main()
{
	int ch = 0;
	//多组输入
	while ((ch = getchar()) != EOF)
	{
		if (islower(ch))
		{
			printf("%c\n", toupper(ch));
		}
		else
		{
			printf("%c\n", tolower(ch));
		}
		//处理'\n'
		getchar();
	}
	return 0;
}

答案解析:

本地和BC46、BC47题一样。

9. BC50-计算单位阶跃函数

题目描述

KiKi最近学习了信号与系统课程,这门课里有一个非常有趣的函数,单位阶跃函数,其中一种定义方式为:

C语言刷题——lesson5_第1张图片

现在试求单位冲激函数在时域t上的值。

输入描述:

题目有多组输入数据,每一行输入一个t(-1000<t<1000)表示函数的时域t。

输出描述:

输出函数的值并换行。

示例1

输入

11
0
-11

输出

1
0.5
0

参考代码:

#include
int main()
{
	int t = 0;
	while (scanf("%d", &t) != EOF)
	{
		if (t > 0)
			printf("%d\n", 1);
		else if (t == 0)
			printf("%.1f\n", 0.5f);
		else
			printf("%d\n", 0);
	}
	return 0;
}

答案解析:

10. BC51-三角形判断

题目描述

KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

输入描述:

题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。

输出描述:

针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。

示例1

输入

2 3 2
3 3 3

输出

Isosceles triangle!
Equilateral triangle!

参考代码:

#include 
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	while (scanf("%d %d %d", &a, &b, &c) != EOF)
	{
		//满足条件就是三角形
		if (a + b > c && b + c > a && c + a > b)
		{
			if (a == b && b == c)
				printf("Equilateral triangle!\n");
			else if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a))
				printf("Isosceles triangle!\n");
			else
				printf("Ordinary triangle!\n");
		}
		else
			printf("Not a triangle!\n");
	}
	return 0;
}

答案解析:

这里就是搞清楚三角形的判断规则,并去一一穷举就行了,因为只有三条边。

你可能感兴趣的:(C语言刷题,c语言)