C语言习题

逆序的三位数

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

提示:对一个三位数数x,做x%10可以得到它的个位数,做x/100可以得到它的百位数,十位数则通过/和%两个运算的结合可以得到。

输入格式:
你的程序每次读到一个3位的正整数。

输出格式:
输出逆序的数。

输入样例:
163

输出样例:
361
时间限制:500ms内存限制:32000kb

##代码

#include <stdio.h>

int main()
{
    int x,a,b,c;
    scanf("%d",&x);
    if(x <100 || x > 999)
    {
        printf("您输入的值不是三位数\n");
    }
    else
    {
        //提示:对一个三位数数x,做x%10可以得到它的个位数,做x/100可以得到它的百位数,十位数则通过/和%两个运算的结合可以得到。
        a=x/100; // 取出百位数
        b=x/10%10; // 得到十位数
        c=x%10;//取出个位数
        x=c*100+b*10+a;
        printf("%d",x);

    }
    return 0;

}

#时间换算

题目内容:
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

提醒:要小心跨日的换算。

输入格式:
一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

输出格式:
一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

输入样例:
803

输出样例:
3
时间限制:500ms内存限制:32000kb

代码

#include <stdio.h>

int main()
{
     int date;
    scanf("%d",&date);
    if ((date>0)&&(date<2400))
    {
        int hour=date/100;
        int min=date%100;
        hour=hour-8;
        if (hour<0)
        {
            hour=hour+24;
        }
         printf("%d",hour*100+min);
          return 0;
    }
    else
    {
        printf(" 值应在0~2359之间\n");
    }
}

奇偶个数

题目内容:
你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。

输入格式:
一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。

输出格式:
两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。

输入样例:
9 3 4 2 5 7 -1

输出样例:
4 2

时间限制:500ms内存限制:32000kb

代码