C语言程序设计第二周

这周学的是变量类型,输入形式,以及输出形式。

整形,浮点型(实数)。float 对应%.xf(保留几位小数),int 对应%(0)xd对应保留几位整数,如果有0的话以右边对齐,如果位置上没有数字,补上0。double 对应%.xlf(区别与float,更为精确。)

实例:温度转化(借pta的实例1)

7-1 计算摄氏温度 (5 分)

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出一个华氏温度。

输出格式:

在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

150

输出样例:

Celsius = 65

下面是代码:

#include <stdio.h>

int main()
{
    int F,C;                          /*定义整形温度和华氏度,重中之重*/
    scanf("%d",&F);            /*输入函数,本周的热点*/
    C = 5 * (F-32) / 9;         /*转化方程*/
    printf("Celsius = %d",C);
    return 0;
}

1.最小的存储单位:是字节byte不是比特bit(B)

2.下面这个是具体的数值区别

3.   = 是赋值运算符

4.  类型转换运算符

5.  scanf输入函数务必加上&(已经好几次未加上)

6.  幂函数(几次方)

例如5的三次方

pow(5,3)并且务必在头文件加上#include <math.h>

下面这个题需要注意类型统一,如下:

7-4 计算存款利息 (10 分)

本题目要求计算存款利息,计算公式为interest=money×(1+rate)year−money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。

输入格式:

输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。

输出格式:

在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。

输入样例:

1000 3 0.025

输出样例:

interest = 76.89

代码如下:

#include <stdio.h>
#include <math.h>                                                              /*因为下面有几次方的运算所以要加上*/
int main()
{
    double year,money,rate,interest;                                    /*题目意思是实数所以用double*/
    scanf("%lf %lf %lf",&money,&year,&rate);                      /*这里必须与上面的double统一*/
    interest = money * pow((1+rate),year) - money;
    printf("interest = %.2lf",interest);
    return 0;
}

再往下一道题:

 7-5 倒序4位数 (10 分)

输入一个4位的正整数,输出它的倒序数。

输入样例:

1200

输出样例:

0021

输入样例:

1234

输出样例:

4321

代码如下:

#include <stdio.h>
int main()
{
    int A,B,C,D,E;
    scanf("%d",&A);
    B= A/1000;
    C= (A-1000*B)/100;
    D= (A-1000*B-C*100)/10;
    E= A-1000*B-C*100-D*10;                /*这里用的是一种傻瓜方法求每一位上的数字再倒序输出*/
    printf("%d%01d%01d%01d",E,D,C,B);
    return 0;
}

下面这个题我其实是搞不太清楚的,因为我用的是if函数来分情况,按照得出的错误来看四个测试点我只对了两个

题目如下:

7-7 然后是几点 (15 分)

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:

输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110

输出样例:

1310

下面是在网上搜到的答案:

#include<stdio.h>

int main()
{
    int a,b,hour,min,nowhour,nowmin;
    scanf("%d%d",&a,&b);                          /*首先输入*/
    hour =a/100;   
    min  =a%100;                                        /*将得到之前的时刻换算成小时和分钟*/
    if(b>0)                                                    /*if函数进行分类(分成流逝分钟数为正和为负的情况) 
    {
         nowhour =(min+b)/60;                      /*现在时刻两者相加*/
         nowmin  =(min+b)%60;  
        printf("%02d%02d",hour+nowhour,nowmin);   /*以右对齐的形式输出*/
    }
    else                                                        /*流逝的分钟小于零的情况*/
    {
        hour=hour-(-b)/60-1;                          /*将流逝小时换成正的(最后还要减一)判断是否为60*/
         nowmin=(60-(-b)%60+min)%60;      /*现在分钟算法*/
        hour=hour+(60-(-b)%60+min)/60;     /*现在小时算法*/
        printf("%d%02d",hour,nowmin);           
    }
    return 0;
    
}

我自己的代码

#include <stdio.h>
#include <math.h>
int main()
{
    int Q,L,H,h,m,M;
    scanf("%d %d",&Q,&L);
    H = L/60;
    M = L - H * 60;
    h = Q / 100;
    m = Q - h * 100;
    if(m+M>=60){
        printf("%d%2d",h+H+1,m+M-60);
    }
    if(m+M<0){
        printf("%d%2d",h+H-1,m+M+60);
    }
    else{
        printf("%d%2d",h+H,m+M);
    }
    return 0;
}

 上面是我输出的错误

大佬们可以批评指正!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫695

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值