2.x习题

2.0整数四则运算

计算两个正整数的和、差、积、商并输出,输入输出全部在整型范围内。

#include <stdio.h>
int main()
{
    int a,b;
    printf("输入两个正整数:");
    scanf("%d %d",&a,&b);
    printf("%d + %d = %d\n",a,b,a+b);
    printf("%d - %d = %d\n",a,b,a-b);
    printf("%d * %d = %d\n",a,b,a*b);
    printf("%d / %d = %d\n",a,b,a/b);
    return 0;
}

2.1厘米换英尺英寸

已知英尺foot和英寸inch的值,对应的米是(foot+inch/12)*0.3048。现在如果用户输入的是厘米数,转换成英制长度。1英尺=12英寸。

#include <stdio.h>
int main()
{
    int a;
    printf("输入厘米数:");
    scanf("%d",&a);
    int foot = a/30.48;
    int inch = ((a/30.48)-foot)*12;
    printf("%d %d",foot,inch);
    return 0;
}

思路:将英尺和英寸和在一起,以英尺的单位。(foot+inch/12)。厘米数=0.3048*100,厘米/100=米。先得出英尺,然后将英制长度-英尺长*12得出英寸长。


2.2计算时间

根据起始时间和流逝时间计算终止时间。时间用四位数表示,如530、1120。读入两个数字,第一个数字以这样的四位数表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数。注意,第二个数字表示的分钟可能超过60,也可能是负数。

#include <stdio.h>
int main()
{
    int h1,min1;
    int h2,min2;
    printf("输入起始时间的小时和分钟数:");
    scanf("%d %d",&h1,&min1);
    printf("输入流逝的时间的小时和分钟数:");
    scanf("%d %d",&h2,&min2);
    int min3 = (h1*60+min1)+(h2*60+min2);
    int h3 = min3/60;
    min3 %= 60;//min3=min3%60
    printf("终止时间为:%d%d\n",h3,min3);
    return 0;
}

2.3逆序的三位数

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7。

#include <stdio.h>
int main()
{
    int x;
    printf("输入一个正3位数:");
    scanf("%d",&x);
    int a = x/100;
    int b = (x-a*100)/10;
    int c = x-a*100-b*10;
    int y = c*100+b*10+a;
    printf("%d的逆序是%d\n",x,y);
    return 0;
}

注意:b在通过x和a得出时,a是什么数字。


2.4 BCD解密

BCD数字是用一个字节来表达两位十进制的数,每4个比特表示一位。所以如果一个BCD数的16进制是0x12,它表达的就是十进制的12.但是小名没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了,于是BCD的0X12被输出成十进制的18了。现在你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,再转回12。

 18-0001 0010-0x12。去掉

posted @ 2022-04-07 18:30  石绿  阅读(97)  评论(0)    收藏  举报