2022秋 C理论A_ 编程练习2 - 选择结构

7-1 A除以B

真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。

输入格式:

输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。

输出格式:

在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。

输入样例1:

-1 2

输出样例1:

-1/2=-0.50

输入样例2:

1 -3

输出样例2:

1/(-3)=-0.33

输入样例3:

5 0

输出样例3:

5/0=Error

代码段: 

#include <stdio.h>

int main()
{
    float a,b,c;
    scanf("%f %f",&a,&b);
    if(b==0)
        printf("%.0f/%.0f=Error",a,b);
    else if(b>0)
    {
        c=a/b;
        printf("%.0f/%.0f=%.2f",a,b,c);
    }
    else if(b<0)
    {
        c=a/b;
        printf("%.0f/(%.0f)=%.2f",a,b,c);
    }
    return 0;
}

7-2 出租车计价 

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

输入样例1:

2.6 2

输出样例1:

10

输入样例2:

5.1 4

输出样例2:

14

输入样例3:

12.5 9

输出样例3:

34

代码段

#include <stdio.h>

int main()
{
    float s,ms,mt,m;
    int t;
    scanf("%f %d",&s,&t);
    if(s<3)
        ms=10;
    else if(s<10)
        ms=10+(s-3)*2;
    else if(s>10)
        ms=10+14+(s-10)*3;
    mt=t/5*2;
    m=ms+mt;
    printf("%.0f",m);
}

7-3 输出英文字母的前驱和后继字母

从键盘输入一个英文字母,输出其前驱字母(即前一个字母)、后继字母(即后一个字母)及其ASCII值。比如输入的字母是b,则前驱字母是a,后继字母是c。而如果输入的字母是a,则前驱字母是z,后继字母是b;如果输入的字母是z,则前驱字母是y,后继字母是a。

大写字母的前驱后继字母求法与小写字母相同。

输入格式:

输入一个英文字母(大写或小写字母)。

输出格式:

第一行输出该字母的前驱字母及其ASCII值,第二行输出后继字母及其ASCII值,字母与ASCII值之间用一个空格分隔。

输入样例1:

b

输出样例1:

a 97
c 99

输入样例2:

a

输出样例2:

z 122
b 98

代码段:

#include <stdio.h>

int main()
{
    char a;
    scanf("%c",&a);
    if((65<a&&a<90)||(97<a&&a<122))
    {
        printf("%c %d\n",a-1,a-1);
        printf("%c %d",a+1,a+1);
    }
    if(a==65)
    {
        printf("Z 90\n");
        printf("B 66");
    }
    if(a==90)
    {
        printf("Y 89\n");
        printf("A 65");
    }
    if(a==97)
    {
        printf("z 122\n");
        printf("b 98");
    }
    if(a==122)
    {
        printf("y 121\n");
        printf("a 97");
    }
}

7-4 后天

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5

代码段 :


#include<stdio.h>
int main()
{
    int D;
    scanf("%d",&D);
    if(D<6) {
        printf("%d\n",D+2);
    }else{
        printf("%d", D -5);}
        return 0;
    }

7-5 后天日期

给定一个日期,格式为yyyy-mm-dd(年份-月份-日期),计算并输出后天的日期,格式为yyyy.mm.dd(4位年份.2位月份.2位日期)。例如:输入2001-12-31,输出为:2002.01.02。

输入格式:

输入以"-"分隔的年月日。

输出格式:

输出计算后的后天的日期,以"."分隔。行末无多余字符。

输入样例 1:

2001-12-31

输出样例 1:

2002.01.02

输入样例 2:

2008-2-28

输出样例 2:

2008.03.01

代码段:

#include <stdio.h>

int main()
{
    int y,m,d,rn;
    scanf("%d-%d-%d",&y,&m,&d);
    if((y%400==0)||(y%4==0&&y%100!=0))
        rn=1;
    else rn=0;
    if(rn==1)
    if((d==30||d==31)&&(m==1||m==3||m==5||m==7||m==8||m==10))
        printf("%d.%02d.%02d",y,m+1,d+2-31);
    else if((d==30||d==31)&&m==12)
        printf("%d.%02d.%02d",y+1,1,d+2-31);
    else if((d==29||d==30)&&(m==4||m==6||m==9||m==11))
        printf("%d.%02d.%02d",y,m+1,d+2-30);
    else if((d==28||d==29)&&m==2)
        printf("%d.%02d.%02d",y,3,d+2-29);
    else printf("%d.%02d.%02d",y,m,d+2);
    if(rn==0)
    if((d==30||d==31)&&(m==1||m==3||m==5||m==7||m==8||m==10))
        printf("%d.%02d.%02d",y,m+1,d+2-31);
    else if((d==30||d==31)&&m==12)
        printf("%d.%02d.%02d",y+1,1,d+2-31);
    else if((d==29||d==30)&&(m==4||m==6||m==9||m==11))
        printf("%d.%02d.%02d",y,m+1,d+2-30);
    else if((d==28||d==27)&&m==2)
        printf("%d.%02d.%02d",y,3,d+2-28);
    else printf("%d.%02d.%02d",y,m,d+2);
}

7-6 计算工资

某公司员工的工资计算方法如下:一周内工作时间不超过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 y,h,ym;
    float hm;
    scanf("%d %d",&y,&h);
    if(y>=5)
        ym=50;
    else ym=30;
    if(h<=40)
        hm=ym*h;
    else hm=ym*40+(h-40)*ym*1.5;
    printf("%.2f",hm);
}

7-7 能买手机吗?

小吴同学想换一部手机,希望自己自力更生获得。于是,小吴准备暑假兼职获取酬劳。今天看到一则招聘启示,薪资标准为:每周工作40小时以内,每小时基本工资20元;超出时间为加班,每小时工资翻倍。公司规定,每周加班不能超过10小时。
现在,小吴想知道,若在此公司工作,要在一个月内(4周)挣到购买手机的资金,需要工作的时长。请你编写一个程序,替小吴算算,购买不同的手机需要加班的最短时长。

输入格式:

输入小吴想买的手机价格Price,Price为正整数。

输出格式:

给出是否需要加班的结论。若需要加班,给出需加班时长(整数)。并给出是否能购买此手机的建议。

输入样例 1:

2000

输出样例 1:

不需加班,可购买

输入样例 2:

5000

输出样例 2:

需加班45小时,买不起

输入样例 3:

4500

输出样例 3:

需加班33小时,可购买

代码段: 

#include<stdio.h>
int main()
{
	int Price;
	scanf("%d", &Price);
	if (40 * 20 * 4 > Price)
	{
		printf("不需加班,可购买");
	}
	else
	{
		int day = (Price - 40 * 20 * 4)/(20*2);
		int s = (Price - 40 * 20 * 4) % (20 * 2);
		if (s != 0)
		{
			day += 1;
		}
		if (day > 10 * 4)
		{
			printf("需加班%d小时,买不起", day);
		}
		else
		{
			printf("需加班%d小时,可购买", day);
		}
	}
	return 0;
}

 7-8 谁是赢家

某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。

输入格式:

输入第一行给出 2 个不超过 1000 的正整数 Pa 和 Pb,分别是艺人 a 和艺人 b 得到的观众票数。题目保证这两个数字不相等。随后第二行给出 3 名评委的投票结果。数字 0 代表投票给 a,数字 1 代表投票给 b,其间以一个空格分隔。

输出格式:

按以下格式输出赢家:

The winner is x: P1 + P2

其中 x 是代表赢家的字母,P1 是赢家得到的观众票数,P2 是赢家得到的评委票数。

输入样例:

327 129
1 0 1

输出样例:

The winner is a: 327 + 1

 代码段:

# include<stdio.h>
int main()
{
	int pa,pb,p1,p2,p3,count;
	scanf("%d %d\n",&pa,&pb);
	scanf("%d %d %d",&p1,&p2,&p3);
	count=p1+p2+p3;
	if(pa>pb&&count!=3)
	{
		printf("The winner is a: %d + %d",pa,3-count);
	}
	else
	{
		printf("The winner is b: %d + %d",pb,count);
	}
	return 0;
}

7-9 比较大小

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

输入格式:

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

输出格式:

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

输入样例:

4 2 8

输出样例:

2->4->8

 代码段:


#include<stdio.h>
int main()
{
  int x,y,z,min;
  scanf("%d %d %d",&x,&y,&z);
  if(x>y)
  {
  	min = x;
  	x = y;
  	y = min;  	
  }
  if(x>z)
  {
  	min = x;
  	x = z;
  	z = min;
  }
  if(y>z) 
  {
  	min = y;
  	y = z;
  	z = min;
  }
 
 
   printf("%d->%d->%d",x,y,z);
  return 0;
}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值