学习c语言的第一天

学习c语言准备复试上机的第一天。

为了适应考试环境,题目集源于PTA 平台,代码均是在PTA平台上练习的。

1.厘米换算英尺英寸

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

代码如下

#include <stdio.h>
int main()
{
    int CM;
    scanf("%d",&CM);
    int foot;
    foot=CM/30.48;
    int inch;
    inch=12*(CM/30.48-foot);
    printf("%d %d\n",foot,inch);
    return 0;
}

2. 然后是几点

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

#include <stdio.h>
int main(){
 int start, minute, total, time, end;
 scanf("%d %d", &start, &minute);
 if(minute>=0){
     total= start / 100 * 60 + start % 100;
     time = total + minute;
     end = time / 60 *100 + time % 60;
 }else{
     minute=~minute+1;
     total= start / 100 * 60 + start % 100;
     time = total - minute;
     end = time / 60 *100 + time % 60;
 }
 if(end/100==0){
     printf("00%d",end);
}else printf("%d",end);
 return 0;
}

  其实这道题是很简单的一道代码题,但是有很多不同的状况,我最开始写的时候就没有注意到负数和进位的情况,而且写的很繁杂,之后我在网上找到了一种很方便的思路,把时间直接转化为分钟计算,最后再换算回来就方便很多。

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

#include<stdio.h>
int main(){
    int num,a,b,c,end;
    scanf("%d",&num);
    a=num/100;
    b=num%100/10;
    c=num%10;
    end=(c*100)+(b*10)+a;
    printf("%d",end);
}

4. BCD解密 

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!

现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

#include<stdio.h>
int main(){
    int num;
    scanf("%d",&num);
    int a;
    a=num/16*10+num%16;
    printf("%d",a);
    return 0;
}

最开始被bcd数绕了很久,不是很理解题意,之后看了网上的讲解发现可以直接转成16进制,题也说了进制中不会出现字母。

5.表格输出 

本题要求编写程序,按照规定格式输出表格。

#include<stdio.h>

int main(){
    printf("------------------------------------\n");
    printf("Province      Area(km2)   Pop.(10K)\n");
    printf("------------------------------------\n");
    printf("Anhui         139600.00   6461.00\n");
    printf("Beijing        16410.54   1180.70\n");
    printf("Chongqing      82400.00   3144.23\n");
    printf("Shanghai        6340.50   1360.26\n");
    printf("Zhejiang      101800.00   4894.00\n");
    printf("------------------------------------\n");
    return 0;

}

 感觉隔一段时间没有敲代码好像迟钝了一点,有些题目中明显出现多种情况但是也没有看出来,还是要仔细一点,明天继续加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值