C语言编程练习——选择结构(一)

帮一个 C语言小白 朋友撸代码,改进空间还有很大,希望大神多多指教!

一、12-24小时制

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
输入格式:
输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。
提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。
输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。
输入样例:

21:11

输出样例:

9:11 PM

代码如下:

#include<stdio.h>
int main(){
    int hour,minute;    
    scanf("%d:%d",&hour,&minute);    
    if(hour <= 11 && hour >= 0){
        printf("%d:%d AM",hour,minute);
    }else if(hour > 11 && hour < 24){
        if(hour == 12){
             printf("%d:%d PM",hour,minute);
        }else{        
             printf("%d:%d PM",hour - 12,minute);
         }
     }    
     return 0;
 }

二、 三天打鱼两天晒网

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:

103

输出样例1:

Fishing in day 103

输入样例2:

34

输出样例2:

Drying in day 34

代码如下:

#include<stdio.h>
int main(){
    int N;
    scanf("%d",&N);
    if(N % 5 == 1 || N % 5 == 2 || N % 5 == 3){
        printf("Fishing in day %d",N);    
    }else{
        printf("Drying in day %d",N);
    }
    return 0;
}

三、计算符号函数的值

对于任一整数n,符号函数sign(n)的定义如下:
表达式
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:

10

输出样例1:

sign(10) = 1

输入样例2:

0

输出样例2:

sign(0) = 0

输入样例3:

-98

输出样例3:

sign(-98) = -1

代码如下:

#include<stdio.h>
int main()
{
 int n;
 scanf("%d",&n);
 if(n < 0){
  printf("sign(%d) = -1",n);
 }else if(n == 0){
  printf("sign(0) = 0",n);
 }else{
  printf("sign(%d) = 1",n);
 }
 return 0;
}

四、阶梯电价

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1:

10

输出样例1:

cost = 5.30

输入样例2:

100

输出样例2:

cost = 55.50

代码如下:

#include<stdio.h>
int main()
{
 int n;
 scanf("%d",&n);
 if(n >= 0 && n <= 50){
  printf("cost = %.2f",0.53 * n);
 }else if(n > 50){
  printf("cost = %.2f",0.58 * (n-50) + 26.5);
 }else{
        printf("Invalid Value!");
    }
 return 0;
}

五、7-5 两个数的简单计算器

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
输入样例1:

-7 / 2

输出样例1:

-3

输入样例2:

3 & 6

输出样例2:

ERROR


#include<stdio.h>
int main()
{
	int a,b;
	char ch;
	scanf("%d %c %d",&a,&ch,&b);
	switch(ch){
		case '+':
			printf("%d",a + b);
			break;
		case '-':	
			printf("%d",a - b);
			break;
		case '*':
			printf("%d",a * b);
			break;	
		case '/':
			printf("%d",a / b);
			break;
		case '%':	
			printf("%d",a % b);
			break;
		default:
			printf("ERROR");
			break;
		
		return 0;	
	}
}

六、 判断输入的字符是哪种类型

通过键盘输入一个字符,编程判断并输出用户输入的是什么类型的字符。
输入格式:
输入一个字符。
输出格式:
在一行中输出该字符是哪种类型的字符。

  • 若用户输入字符为’0’和’9’之间,输出This is a digit.
  • 若用户输入字符在’A’和’Z’之间,输出This is a capital letter.
  • 若用户输入字符在’a’和’z’之间,输出This is a small letter.
  • 其他情况,输出Other character.

输入样例:

6

输出样例:

This is a digit.

#include<stdio.h>
int main(){
    char ch;
    scanf("%c",&ch);
    if(ch >= '0' && ch <= '9'){
        printf("This is a digit.");
    }else if(ch >= 'A' && ch <= 'Z'){
        printf("This is a capital letter.");
    }else if(ch >= 'a' && ch <= 'z'){
        printf("This is a small letter.");
    }else{
        printf("Other character.");    }
    return 0;
}

七、计算工资

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:

5 40

输出样例1:

2000.00

输入样例2:

3 50

输出样例2:

1650.00

代码如下:

#include<stdio.h>
int main()
{
    int year,time;
    float salary;
    scanf("%d %d",&year,&time);
    if(year < 5){
        if(time <= 40){
            salary = 30.0 * time;
        }else{
            salary = 1200 + 45.0 * (time - 40);
        }
    }else{
        if(time <= 40){
            salary = 50.0 * time;
        }else{
            salary = 2000 + 75.0 * (time - 40);
        }
    }
    printf("%.2f",salary);
    return 0;
}

八、成绩转换

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

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

输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:

90

输出样例:

A

#include<stdio.h>
int main(){
    int score;
    scanf("%d",&score);
    if(score >= 90){
        printf("A");
    }else if(score >= 80 && score < 90){
        printf("B");
    }else if(score >= 70 && score < 80){
        printf("C");
    }else if(score >= 60 && score < 70){
        printf("D");
    }else{
        printf("E");
    }
    return 0;
} 
发布了14 篇原创文章 · 获赞 34 · 访问量 2141

猜你喜欢

转载自blog.csdn.net/qq_46127363/article/details/105566354
今日推荐