c语言第三次作业
(一)改错题
1、错误信息:
错误原因:缺分号
改正方法:在y=1/x后加一个分号
2、错误信息:
错误原因:else后面没有东西
改正方法:去掉(x != 10)
3、错误信息:
错误原因:判断y=x应该有原因
改正方法:把else改成if后面加上(x != 10)
4、错误信息:
错误原因:输出里面的xy前面没有逗号
改正方法:在xy前面各加一个逗号
5、错误信息:
错误原因:if(x = 10)后面有分号
改正方法:去掉分号
6、错误信息:
错误原因:输入里面x缺取地址符
改正方法:在x前面加一个&
7、错误信息:
错误原因:%f前面有个等号 double的输入不是%f
改正方法:去掉等号把%f 改成%lf
8、错误信息:
错误原因:if(x = 10)等号错了
改正方法:把=换成==
9、错误信息:
错误原因:输出里面的%.lfhe%.2f
改正方法:把%.lf改成%.1f,%.2f改成%.1f
(二)学习总结
1、确切含义
在a符合的前提下b在符合就输出 x=x+1,b不符合就输出 y=y+1。
这个else跟第二个if配对。
if(a)
{
if(b)
{
printf("x = x+1");
}
else
{
printf("y = y+1");
}
` }
2、不能
这样的话,先比较-10与x是真的赋值1,是假的赋值0,不管是真的假的都小于10.
x>-10&&x<10
3、(1)输入123a,结果:
a为非法数字所以只输出a=123,b随便输出一个数。
(2)123 45:
因为是读取输入数据的个数输入123 45是两个整型数所以输出n=2
123a:
因为a为非法数据所以只读123,输出n=1.
#include <stdio.h>
int main()
{
int a, b,c;
c = scanf("%d %d", &a, &b);
if(c == 2)
{
printf("a = %d, b = %d\n", a, b);
}
else
{
printf("Input error!");
}
return 0;
}
4、(1)注意取地址符,实数与其他之间的转换,(2)有数学函数的时候在前面加上#include <math.h>.(3)定义double的时候输入要用%lf.
(4)if里面的等号用==,(5)分清是该用&&还是||。
(三)实验总结
3、 回文数
(1)题目
判断一个5位数是不是回文数。
(2)流程图
(3)源代码
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
if(a%10000 == a%10,a/1000%10 == a%100/10){
printf("yes");
}
else{
printf("no");
}
return 0;
}
(4)测试数据及运行结果
(5)实验分析
该题较简单没太大问题。
5、 计算火车运行时间
(1)题目
根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
(2)流程图
(3)源代码
# include <stdio.h>
int main(void)
{
int a,b,c,d,e,f,hour,minute;
scanf("%d %d",&a,&b);
c=a/100;
d=a%100;
e=b/100;
f=b%100;
if(f>=d)
{
hour = e-c;
minute = f-d;
}
else
{
hour = e-c-1;
minute = 60-(d-f);
}
printf("%02d:%02d",hour,minute);
return 0;
}
(4)测试数据及运行结果
(5)实验分析
问题1:当f<d的时候小时没有减1分钟相减没有加60
原因:f<d时相减应该向前借1
解决办法:小时减1分钟加60
7 、三天打鱼两天晒网
(1)题目
假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
(2)流程图
(3)源代码
#include <stdio.h>
int main(void)
{
int N;
scanf("%d",&N);
if(N%5==1 || N%5==2 || N%5==3)
{
printf("Fishing in day %d",N);
}
else if(N%5==0 || N%5==4)
{
printf("Drying in day %d",N);
}
return 0;
}
(4)测试数据及运行结果
(5)实验分析
问题1:if里面用了&&
原因:应该用||
解决办法:把&&改成||
9、阶梯电价
(1)题目
月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
(2)流程图
(3)源代码
#include <stdio.h>
int main(void)
{
double e,money;
scanf("%lf",&e);
if(e<=50&&e>=0)
{
money=0.53*e;
printf("cost = %.2f",money);
}
else if(e>50)
{
money=0.53*50+0.58*(e-50);
printf("cost = %.2f",money);
}
else
{
printf("Invalid Value!");
}
return 0;
}
(4)测试数据及运行结果
(5)实验分析
问题1:double输入用了%f
原因:应该用%lf
解决办法:把%f改成%lf
(四)PTA提交列表