选择结构程序练习题

本系列实验涵盖了从简单的日常逻辑判断到复杂的数学运算,包括日期判断、几何计算、成绩统计、税务计算以及字符串加密。例如,实验通过取余运算判断是否在‘打鱼’或‘晒网’,计算三角形的面积和周长,统计学生成绩分布,计算个人所得税,比较整数大小,根据月份输出季节,以及实现特定的字符加密。这些练习旨在提升编程思维和问题解决能力。
摘要由CSDN通过智能技术生成

A. 实验3-9 三天打鱼两天晒网

题目描述

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入

输入在一行中给出一个不超过1000的正整数N。

输出

在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。

输入样例:103

输出样例:Fishing in day 103

实验代码:

#include <stdio.h> 
int main()
{
	int N, x;
	scanf("%d", &N);
	x = N % 5;      //取余,五天为一周期,判断的关键
	if (x>=1 && x <= 3)
	{
		printf("Fishing in day %d", N);
	}
	else
	{
		printf("Drying in day %d", N);
	}
	return 0;
}

B. 实验3-8 输出三角形面积和周长

题目描述

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√​s(s−a)(s−b)(s−c)​​​,其中s=(a+b+c)/2。

输入

输入为3个正整数,分别代表三角形的3条边a、b、c。

输出

如果输入的边能构成一个三角形,则在一行内,按照

area = 面积; perimeter = 周长

的格式输出,保留两位小数。否则,输出

These sides do not correspond to a valid triangle

输入样例1 :

5 5 3

输出样例1:

area = 7.15; perimeter = 13.00

实验代码:

#include <stdio.h> 
#include<math.h>
int main()
{
    int a,b,c;
    double s,area,perimeter;   //注意输出样例要求的精度
    scanf("%d %d %d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a)
	{
        s=(a+b+c)*1.0/2;
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        perimeter=a+b+c;
        printf("area = %.2f; perimeter = %.2f",area,perimeter);
    }
    else 
    printf("These sides do not correspond to a valid triangle");
}

C. 实验3-7 统计学生成绩

题目描述

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入

输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出

在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例1 

7
77 54 92 73 60 65 69

输出样例1

1 0 2 3 1

实验代码:

#include <stdio.h>
int main()
{
    int N, A = 0, B = 0, C = 0, D = 0, E = 0;
    scanf("%d", &N);
    int score[N];            //思考如何对五个成绩进行运算
    for( int i=0; i<N; i++)
    {
        scanf(" %d", &score[i]);
        if( score[i] < 60 )
            E++;
        else if( score[i] >= 60 && score[i] < 70 )
            D++;
        else if( score[i] >= 70 && score[i] < 80 )
            C++;
        else if( score[i] >= 80 && score[i] < 90 )
            B++;
        else
            A++;
    }
    
    printf("%d %d %d %d %d", A, B, C, D, E);
    return 0;
}

D. 实验3-6 计算个人所得税

题目描述

假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:

  • 当工资不超过1600时,税率为0;
  • 当工资在区间(1600, 2500]时,税率为5%;
  • 当工资在区间(2500, 3500]时,税率为10%;
  • 当工资在区间(3500, 4500]时,税率为15%;
  • 当工资超过4500时,税率为20%。

输入:

输入在一行中给出非负工资。

输出:

在一行输出个人所得税,精确到小数点后2位。

输入样例1

1600

输出样例1

0.00

实验代码:

#include<stdio.h>
int main()
{
    double wage,rate;
    scanf("%lf",&wage);
    if(wage<0)
    {
        printf("errow");
        scanf("%lf",&wage);
    }
    if(wage<=1600)
    {
        rate=0;
    }
    else if(wage<=2500)
    {
        rate=0.05*(wage-1600);
    }
    else if(wage<=3500)
    {
        rate=0.1*(wage-1600);
    }
    else if(wage<=4500)
    {
        rate=0.15*(wage-1600);
    }
    else
    {
        rate=0.2*(wage-1600);
    }
    printf("%.2lf",rate);
    return 0;
}

E. 实验3-3 比较大小

题目描述

本题要求将输入的任意3个整数从小到大输出。

输入

输入在一行中给出3个整数,其间以空格分隔。

输出

在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例1

4 2 8

输出样例1

2->4->8

实验代码:

#include"stdio.h"
int main(void)
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int min;
    if(a>b)
    {
        min=a;
        a=b;
        b=min;
    }
    if(a>c)
    {
        min=a;
        a=c;
        c=min;
    }
    if(b>c)
    {
        min=b;
        b=c;
        c=min;
    }
    printf("%d->%d->%d",a,b,c);
}

F. 【B卷第2题】输入月份输出不同句子(选择)

题目描述

请你编写程序,根据键盘输入的整数月份,显示如下这样一句话:
3,4,5:X月是春季
6,7,8:X月是夏季
9,10,11:X月是秋季
12,1,2:X月是冬季
其他输入:X月不存在
(其中X代表月份的数值)。

输入

月份X

输出

对应月份X的一句话输出

输入样例1 :

3

输出样例1:

3月是春季

实验代码:

#include <stdio.h>
int main()
{
	int x;
	scanf("%d", &x);
	if(x==3||x==4||x==5)
	{
		printf("%d月是春季", x);
	}
	else if(x==6||x==7||x==8)
	    {
		printf("%d月是夏季", x);
	}
	else if(x==9||x==10||x==11)
	    {
		printf("%d月是秋季", x);
	}
	else if(x==12||x==1||x==2)
	    {
		printf("%d月是冬季", x);
	}
	    else
	    {
		printf("%d月不存在", x);
	}
	return 0;
}

G. 判断相等

题目描述

判断输入的x与y是否相等

输入

一个正整数n,表示有n组输入

对于每一组,判断x与y是否相等,如果相等输出Yes,否则输出No

输出

每一组输出判断结果,每个判断结果输出后要换行

输入样例1 

3
1 2
3 4
2 2

输出样例1

No
No
Yes

实验代码

#include <stdio.h>
int main(void)
{
	int n,a,b;
	scanf("%d", &n);
	for (int i=0;i<n;++i)
	{
		scanf("%d %d", &a, &b);
		if (a == b) 
        printf("Yes\n");
		else 
        printf("No\n");
	 } 
	 return 0;
}

H. 加密 I

题目描述

请利用scanf函数连续输入任意5个字符,如'C'、'h'、'i'、'n'、'a',或'K'、'o'、'r'、'e'、'a',将这5个字符组成的单词(如"China"或"Korea")译成密码。译码规律是:用原来字母后面的第3个字母代替原来的字母。

例如,字母A后面第3个字母是D,用D代替A。因此,"China"应译为"Fklqd","Korea"应译为"Nruhd"。最后用printf函数输出这5个字符。

输入

请编一程序,用scanf函数键盘输入的方法给c1、c2、c3、c4、c5五个char变量赋任意英文字母(大小写都可以)。

输出

经过运算(即加密),使字符c1、c2、c3、c4、c5分别转换为对应的加密字符,并输出。

输入样例1 

China

输出样例1

China的密码是Fklqd

实验代码 

#include <stdio.h>
int main()
{ 
    char c1,c2,c3,c4,c5;
    scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);
    int a=c1,b=c2,c=c3,d=c4,e=c5;
    c1=c1+3;
    c2=c2+3;
    c3=c3+3;
    c4=c4+3;
    c5=c5+3;
    printf("%c%c%c%c%c的密码是%c%c%c%c%c\n",a,b,c,d,e,c1,c2,c3,c4,c5);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值