秣小白的C语言旅程——第二站(含自我介绍)

鄙人C语言小白一枚,步履蹒跚地踏上了C语言学习的旅途,旅途景色新奇却也难免有曲折坑洼。小记旅途的艰难险阻,愿帮更多小白顺畅踏上旅途。

一、四舍五入2.0

在我回顾自己做过的C语言入门题中,发现了这样一道题,题目如下:

【题目描述】

伊顿公学Eton College)坐落在距伦敦20里的温莎小镇,是英国最著名的贵族中学,排名全球第一。伊顿以“精英摇篮”、“绅士文化”闻名世界,也素以军事化的严格管理著称,是英国王室、政界经济界精英的培训之地。这里曾造就20位英国首相,培养出了诗人雪莱、经济学家凯恩斯,演员汤姆·希德勒斯顿、埃迪·雷德梅恩,还有“站在食物链顶端的男人”贝尔·格里尔斯,也是威廉王子和哈里王子的母校。伊顿每250名左右的毕业生中,70余名进入牛津、剑桥,70%进入世界名校。本问题就是输入某年的毕业生人数m和进入某名校的百分比n,计算出进入该名校的学生人数count

【输入】

两个用空格分隔的整数m和n,分别表示某年的毕业生人数和该年度进入某名校的百分比(200<m<3000<n<100

【输出】

输出一个整数count,表示该年度进入该名校的学生人数,要求计算结果要将个位数四舍五入到十位数

那么,如何将个位数四舍五入到十位? 

有一种解法是这样的

#include <stdio.h>
int main()
{
    int m, n, count;
    scanf("%d%d", &m, &n);
    m = m * n / 100 + 5;
    count = m / 10 * 10;
    printf("%d\n", count);
    return 0;
}

 这里用到的方法为:

num = num+5;

num = m/10*10;

对比一下上一站小数四舍五入到个位的方法:

(int)(num+0.5);

二者就是同一种方法——即巧妙利用取整规则。

二、自动类型转换2.0

刚开始编程时,自己完全不懂自动类型转换这个概念,导致代码低效难看。

题目是这样的:

【题目描述】

小林和小树兄弟俩相约存零钱。眼看到年底了,兄弟俩决定算算一共存了多少钱,请帮他们算出来。

【输入】

两行,第一行用空格分隔的三个整数分别对应元、角、分,表示小林存的零钱数;第二行用空格分隔的三个整数,分别对应元、角、分,表示小树存的零钱数。

【输出】

俩人存的钱数(单位:元,保留2位小数)

我那时给出的代码是这样的:

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
    int y1,j1,f1,y2,j2,f2;
    double t1,t2,byt;
    scanf("%d %d %d\n",&y1,&j1,&f1);
    scanf("%d %d %d",&y2,&j2,&f2);
    y1=(double)y1;
    j1=(double)j1;
    f1=(double)f1;
    y2=(double)y2;
    j2=(double)j2;
    f2=(double)f2;
    t1=y1+0.1*j1+0.01*f1;
    t2=y2+0.1*j2+0.01*f2;
    byt=t1+t2;
    printf("%.2f\n",byt);
    return 0;
}

 因为老师课上只讲了强制类型转换,所以就有了中间那令人目瞪口呆的强制类型转换过程。

但我们知道,浮点型和整型进行运算时整型会被同化成浮点型。

那么,题库给的答案呢,是这样的:

#include <stdio.h>
int main()
{
    int a,b,c,x,y,z;
    float m;
    scanf("%d%d%d%d%d%d",&a,&b,&c,&x,&y,&z);
    m=a+x+(b+y)/10.0+(c+z)/100.0;
    printf("%.2f\n", m);
    return 0;
}

三、关于scanf的小知识

 又是没什么用的小知识分享时间。

关于"scanf"的详细介绍站内有很多大佬的详细介绍,我只在这里分享一下我自己曾经的小困惑。

如下:

①scanf("%d%d",a,b);

②scanf("%d %d",a,b);

③scanf("%d,%d",a,b);

④scanf("%d:%d",a,b);

这其实是我曾做到的一道题的题干,它接下来会问你该如何进行数据的输入?

①应该是输入a,之后输入空格,再输入b

②和①完全相同;

③是输入a,之后输入逗号,再输入b

④是输入a,再输入冒号,最后输入b

你可能觉得我又在胡言乱语,这么简单谁会不知道,但这实实在在是我曾经迷糊的点,还是记录一下,说不定能帮到和我一样困惑的人。

途间闲话 

久违的决定做个自我介绍,鄙人是个大一新生,对计算机有着狂热的情感,但受限于个人视野,直到大学才真正接触到编程,想想也是蛮遗憾的。编程的目标的话,我希望自己能够真正的“学懂编程”,近期目标应该就是尽快掌握“C语言”吧。这是我在csdn发布的第二篇博客,希望我能坚持下来,尽管可能没什么人看,但我希望可以借助博客记录下自己的学习历程。大学学业压力也不轻,但我打算每天至少要敲一个半小时以上的代码吧。至于我最想进入的一家IT公司嘛,保密保密。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秣小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值