zzulioj2320 古钱币(编程脱衣舞,层层优化,绝了!!!)

题目描述
小强同学的爸爸是收藏爱好者,家里收藏了好多古钱币,有唐、宋、元、明、清年代的钱币,分别用A、B、C、D、E来表示,每个钱币的价格是5、4、3、2、1(万元),小强考上了大学,开学的时候,小强随机拿了四个古钱币作为第一学期的生活费,这四个古钱币能换多少钱,平均每个古钱币能换多少钱?
输入
输入四个古钱币的代号,用空格隔开。
输出
计算并输出古钱币总共能换多少万元,平均每个古钱币能换多少万元,用空格隔开,保留两位小数。
样例输入
D A A C
样例输出
15.00 3.75
【分析】
本题的思路很简单,但要注意的是输入的时候,空格也是字符,怎么解决这个问题呢?
在这里插入图片描述
上图是这道题的提交情况,大多数同学都是因为答案错误而出错,为什么会错呢?还是上面那个问题,没有注意细节!!!

现在我宣布程序脱衣舞现在开始

程序一

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
    char ch1,ch2,ch3,ch4;
    double sum=0.0;
        scanf("%c %c %c %c", &ch1, &ch2, &ch3, &ch4);
                     if(ch1=='A')
            sum+=5;
        if(ch1=='B')
            sum+=4;
             if(ch1=='C')
            sum+=3;
             if(ch1=='D')
            sum+=2;
             if(ch1=='E')
            sum+=1;
                         if(ch2=='A')
            sum+=5;
        if(ch2=='B')
            sum+=4;
             if(ch2=='C')
            sum+=3;
             if(ch2=='D')
            sum+=2;
             if(ch2=='E')
            sum+=1;
                         if(ch3=='A')
            sum+=5;
        if(ch3=='B')
            sum+=4;
             if(ch3=='C')
            sum+=3;
             if(ch3=='D')
            sum+=2;
             if(ch3=='E')
            sum+=1;
                         if(ch4=='A')
            sum+=5;
        if(ch4=='B')
            sum+=4;
             if(ch4=='C')
            sum+=3;
             if(ch4=='D')
            sum+=2;
             if(ch4=='E')
            sum+=1;
    printf("%.2f %.2f\n",sum,sum*1.0/4);
    return 0;
}

还好是拿4个币,不然世界上就多了一个死于敲代码过度的人了(哈哈哈~)
程序二

#include<stdio.h>
int money(char ch)
{
	int sum=0;
	if(ch=='A')
		sum=5;
	if(ch=='B')
		sum=4;
	if(ch=='C')
		sum=3;
	if(ch=='D')
		sum=2;
	if(ch=='E')
		sum=1;
	return sum;
}
int main()
{
	char ch1,ch2,ch3,ch4;
	double sum=0.0;
	scanf("%c %c %c %c", &ch1, &ch2, &ch3, &ch4);
	int  sum1=money(ch1);
	int  sum2=money(ch2);
	int  sum3=money(ch3);
	int  sum4=money(ch4);
	sum=sum1+sum2+sum3+sum4;
	printf("%.2f %.2f\n",sum,sum/4);
	return 0;
}

是不是简单一些了?这还不够!go on!!!

程序三

#include<stdio.h>
int money(char ch)
{
	int sum=5-(ch-'A');	
	return sum;
}
int main()
{
	char ch1,ch2,ch3,ch4;
	double sum=0.0;
	scanf("%c %c %c %c", &ch1, &ch2, &ch3, &ch4);
	sum=money(ch1)+money(ch2)+money(ch3)+money(ch4);
	printf("%.2f %.2f\n",sum,sum/4);
	return 0;
}

别急,还有呢!

程序四

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
    char str[10];
    scanf("%[^\n]",str);      /*见补充*/
    int  sum=('A'-str[0]+5)+('A'-str[2]+5)+('A'-str[4]+5)+('A'-str[6]+5);
    printf("%.2f %.2f\n",sum*1.0,sum*1.0/4);
    return 0;
}

补充

%[^\n] ^ 这个符号的意思 是取反
然后%[^\n] 表示除了换行符号都可以存入字符串中
%s 会自动跳过空格换行等字符
scanf输入单个字符的话,像空格换行tab这些不可见附也是算在字符里的,具体可以查看acsii对照表 。

心得

脱衣舞演完了,不知道大家有何感想呢?可能我实际地经历过这些变化,深刻地体会到编程语言其实并不是”死“的。以前,我总是觉得这些编程语言很严肃,现在发现其实严肃是一回事,灵活是一回事,也深刻体会到了自己的不足,有待提高!!!

寄语

这是老师送给我的话,与大家共勉!!!
欢迎评论,欢迎关注,欢迎私信!!!
在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值