7-2 单位变换二
由于喵星人和汪星人属于不同的物种,他们的度量衡也不同,比如喵星人的某单位M乘上11,然后再减去23173恰好等于汪星人的某单位W。也就是说0M等于-23173W,1M等于-23162W,现在请你写一段程序来帮助喵星人和汪星人做单位变换。
输入格式:
只有一行,为一个长度大于1且不超过12的字符串。其中最后一个字符只可能是W或M,代表相应的单位。其它字符代表一个整数,其中A代表负号(只可能是第一个字符),B到K代表9到0。
输出格式:
也只有一行,为变换后的结果(数字用阿拉伯数字,单位仍用M和W)。如果输入的单位为M,则转换为对应的W值输出;如果输入的单位为W,则转换为对应的M值输出;测试数据保证1、输入合法;2、除法运算不会有余数;3、运算过程中所有整数都可以用int存储。
输入样例:
JKM
输出样例:
-23063W
?做练习时最开始因为没注意if的右括号位置导致一直是部分正确(正数样例),看了很久没发现,就上csdn上面查了一下,发现前辈们都写的比较长(我只看了两例),所以想把自己的代码分享出来提供一种新的思路,毕竟是作为新课随堂练也只会用到字符串前的内容(?′ω`? )
如果有错误以及不足之处请指出。(?′ω`? )我也是刚学的小白而已,能给新学习的同学帮上忙就好了
#include<stdio.h>
#include<string.h>
int main()
{
char ch[20];
int sum=0;
int f=1;
scanf("%s",ch);
if(ch[0]=='A')//判断正负,并将剩下的数字统一为正数,符号交给f
{
for(int i=0; i<strlen(ch); i++)
{
ch[i]=ch[i+1];
}
f=-1;
}
for(int i=0; i<strlen(ch)-1; i++)//-1:不计算单位字符,转换成数字
{
sum=sum*10+('K'-ch[i]);
}
sum*=f;
if(ch[strlen(ch)-1]=='M')
{
sum=sum*11-23173;
printf("%dW",sum);
}
if(ch[strlen(ch)-1]=='W')
{
sum=(sum+23173)/11;
printf("%dM",sum);
}
return 0;
}
?