鄙人C语言小白一枚,步履蹒跚地踏上了C语言学习的旅途,旅途景色新奇却也难免有曲折坑洼。小记旅途的艰难险阻,愿帮更多小白顺畅踏上旅途。
一、四舍五入2.0
在我回顾自己做过的C语言入门题中,发现了这样一道题,题目如下:
【题目描述】
伊顿公学(Eton College)坐落在距伦敦20英里的温莎小镇,是英国最著名的贵族中学,排名全球第一。伊顿以“精英摇篮”、“绅士文化”闻名世界,也素以军事化的严格管理著称,是英国王室、政界经济界精英的培训之地。这里曾造就过20位英国首相,培养出了诗人雪莱、经济学家凯恩斯,演员汤姆·希德勒斯顿、埃迪·雷德梅恩,还有“站在食物链顶端的男人”贝尔·格里尔斯,也是威廉王子和哈里王子的母校。伊顿每年250名左右的毕业生中,70余名进入牛津、剑桥,70%进入世界名校。本问题就是输入某年的毕业生人数m和进入某名校的百分比n,计算出进入该名校的学生人数count。
【输入】
两个用空格分隔的整数m和n,分别表示某年的毕业生人数和该年度进入某名校的百分比(200<m<300,0<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公司嘛,保密保密。