记录一下自己做的答案,如有侵权请联系我。
2.1 整数四则运算
本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。
#include <stdio.h>
int main()
{
int x, y;
int add, sub, mul, div;//加减乘除
scanf_s("%d%d", &x, &y);
add = x + y;
sub = x - y;
mul = x * y;
div = x / y;
printf("%d+%d=%d\n", x, y, add);
printf("%d-%d=%d\n", x, y, sub);
printf("%d*%d=%d\n", x, y, mul);
printf("%d/%d=%d\n", x, y, div);
return 0;
}
2.2 厘米换算英尺英寸
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)*30.48。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
#include<stdio.h>
int main()
{
int cm,foot, inch;
scanf_s("%d",&cm);
foot = cm / 30.48;
inch = ((cm/30.48) - foot) * 12;//先运算再强制类型转换
printf("%dcm is %dfoot and %dinch",cm, foot, inch);
return 0;
}
2.3 然后是几点
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
#include<stdio.h>
int main()
{
int hour, minute, time1, time2, x=0;
scanf_s("%d", &time1);
hour = time1 / 100;
minute = time1 % 100;
printf("现在的时间是%d时%d分\n", hour, minute);
scanf_s("%d", &x);
printf("经过%d分钟后\n", x);
time1 = hour * 60 + minute;
time2 = time1 + x;
hour = time2 / 60;
minute = time2 % 60;
printf("现在的时间为%d时%d分\n", hour, minute);
time2 = hour * 100 + minute;
printf("表示为%d\n",time2);
return 0;
}
2.4 逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
#include<stdio.h>
int main()
{
int a, b, c, x;
scanf_s("%d", &x);
printf("输入整数%d\n", x);
a = x / 100;
b = (x % 100) / 10;
c = x % 10;
x = c * 100 + b * 10 + a;
printf("逆序之后输出为%d\n", x);
return 0;
}
2.5 BCD解密
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。
#include<stdio.h>
int main()
{
int x, y;
scanf_s("%d", &x);
printf("输入十进制数%d\n", x);
y = (x / 16) * 10 + x % 16;
printf("其十六进制表示为%d\n", y);
return 0;
}