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提交列表


posted @ 2017-10-28 23:22  思念诠释你我的距离  阅读(174)  评论(0编辑  收藏  举报