第一次作业
一· 7-7 计算火车运行时间 (15 分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
1.实验代码
#include<stdio.h> int main() { int a, b, h1, h2, m1, m2, h, m; scanf("%d %d", &a, &b); h1 = a/100; h2 = b/100; m1 = a%100; m2 = b%100; if(m2 < m1) { m = m2+60-m1; h = h2-h1-1; }else { m = m2-m1; h = h2-h1; } printf("%02d:%02d", h, m); return 0; }
2.设计思路
(1) 文字描述
第一步:输入的是四位数,前俩位为小时后俩位是分钟,小时是四位数除以100取整,分钟是四位数除以100取余。
第二步:判断分钟相减是否小于零,如果小于零需要从小时借位。不小于零输出旅途所用时间。
第三步:在借位时,借的是60而不是100,借位后继续计算然后输出旅途所用时间。
(2)流程图
3.本体调试过程碰到问题及解决方法
认真阅读这道题目后,我发现这道题有几个地方必须要过关。
1.小时与分钟的选取 2.判断分钟是否够用 3.当后者分钟过小时需要错位,而错位是60
4.输出时小时与分钟格式为hh:mm
在做题时我就遇到了输出格式错误的问题,我输出是h:mm型不符合题目要求。
后来向同学请教如何输出hh:mm型,最后知道输出时要保证是俩位要用“%.2d”,而我用的却是“%d”。
二·7-4 求奇数和 (15 分)
本题要求计算给定的一系列正整数中奇数的和。
输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出正整数序列中奇数的和。
输入样例:
8 7 4 3 70 5 6 101 -1
输出样例:
116
1.实验代码
#include<stdio.h> int main() { int x, i = 0; scanf("%d", &x); while(x>0) { if(x % 2 == 1) { i = i + x; } scanf("%d", &x); } printf("%d", i); return 0; }
2.设计思路
(1)文字描述
第一步:输入整数x,输入奇数和为i
第二步:判断x是否为正整数
第三步:判断x是否为奇数
第四步:求出所有奇数和,输出i
(2)流程图
3.本体调试过程碰到问题及解决方法
循环是学习C语言的重点与难点。
然而这道题我却犯了一个低级错误,弄混“=”与“==”的意义,经过自己的反省找到正确答案。
这道题在循环1里算是简单的,拿到这里把错误写出来是为了时刻提醒自己不可以犯同样错误。
三·7-7 寻找250 (10 分)
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
5
1.实验代码
#include<stdio.h> int main() { int x; char a[999]; scanf("%d", &x); int i = 1; while(x != 250) { scanf("%d", &x); i++; } printf("%d", i); return 0; }
2.设计思路
(1)文字描述
第一步:构造一个数列
第二步:给x赋值并构造一个循环变量i
第三步:让其循环,当x = 250 时输出i的值
(2)流程图
3.本体调试过程碰到问题及解决方法
认真阅读题目后,我自我感觉这道题很简单,但是在开始敲代码时我发现我错了,在面对这道题时我发现我无从下手。
直到后来我查阅资料知道可以构造一个数列完成。解决这一问题后我豁然开朗,但还是把“!=”与“=!”整混了,
后来自己多次尝试并向同学请教得知“!=”是不等于。
四·总结
从最开始的“Hello Word”开始了解编程,让我受益匪浅,慢慢喜欢上编程。
1.所学内容
在这几周的学习中,我学习到每个代码开始都要有一个头文件,结束时要有“return 0”,在求平均数保留小数时不能忘了乘1.0,这个很容易让人忘记,应该牢记。
在循环学习中,我深入了解了while,do while,for循环的使用。for语句在使用时()里面应该用“;”间隔,而我经常犯错用“,”间隔。
一个数的几次幂在电脑中要用pow表示,在使用数学公式时需要插入数学的头文件。我也了解了基本函数的使用。
2..遇到问题及解决方法
1·在编程中“=”为赋值的意思,而“==”为等于的意思,我经常把“=”当成等于使用。
2·在输入一个数让其小于等于x时,总是在小于等于加一个空格。
3·总是忘记保留小数,直接%d输出。
以上问题都是一些小问题,但导致问题所在还是练习代码较少,因此我应多练习,避免不应该放错误。
在遇到不会问题时,应该多思考,及时向老师与同学请教。
五·点评
1.点评阮曙光同学 https://www.cnblogs.com/diqiu/p/10041671.html
2.点评李晓旭同学 https://www.cnblogs.com/lixiaoxu695022762/p/9999202.html
3.点评苏末然同学https://www.cnblogs.com/smr2018023977/p/10035661.html