C语言第三次作业

一丶改错题
编译源程序,编译错误信息如下:
错误一:
错误信息:

错误原因:scanf进行输入格式错误
改正方法:应将“=”去掉,并在f前加l,构成%lf,使输入格式变成小数型
错误二:
错误信息:

错误原因:printf输出格式错误
改正方法:在x和y的前头加,使字符隔开。
错误三:
错误信息:

错误原因:编译错误
改正方法:在y = 1 / x后面加;
错误四:
错误信息:

错误原因:格式错误
改正方法:if和else结构中,else后不能加判断条件,else表示否则,不能加判断条件。所以去掉(x != 10)。
错误五:
错误信息:

错误原因:格式错误
改正方法:在if语句中,()后不加;,故去掉if(x = 10)后面的;
错误六:
错误信息:

错误原因:编译错误出现程序他停止现象,scanf输入格式错误忘记加取地址符&
改正方法:在x前加入&
错误七:
错误信息:

错误原因 :输出类型错误
改正方法:将printf("f(%.2f) = %.lf\n" ,x,y);中的.lf改为.1f
错误八:
错误信息:

错误原因:符号错误,if语句中()中应该是等号==不是赋值号=
改正方法:在if(x = 10)中加入=,变成if(x == 10)
二丶学习总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
表示:如果输出字符b时x的值+1,输出的不是b时y的值+1,else和if(b)配对,因为else在没有明确大括号的情况下都属于同一阶级,故else和上一个if配对,
if(a&&b)
{
x=x+1;
}
else
{
y=y+1;
}
2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?

不能,因为当-10<x先进行比较时整体的值只能是0或1 与x<10始终正确,并不能表达(-10,10)的区间,正确的应该是分别比较(-10<x&&x<10)来进行表示。

3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?,

程序(1)
当输入123a时结果如下:

由题中a的值为1,不难得出。字符a被赋值了,而题前没有声明字符变量;
而改变

而b还是1则说明a的输出值就是1.
程序(2)
当输入123 45时:

当输入123a时:

修改程序(1):

include <stdio.h>

int main()
{
int a, b;
scanf("%d %d", &a, &b);
if(b==1)
{
printf("Input error!");
}
else
{
printf("a = %d, b = %d\n", a, b);
}
return 0;
}
4丶补充:
不难发现当有非法字符时b=1,故当b输出1时,有非法字符。
三丶实验总结:
胡展业 2017614270113 选作题型3,5,7,9
(1)题目:
7-3 回文数(10 分)
判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。。
(2)流程图:

(3)源代码:

include<stdio.h>

include<math.h>

int main(void)
{
int a,b,c,d,x;
scanf("%d",&x);
a=x/10000;
b=x/1000%10;
c=x/10%10;
d=x%10;
if(ad,bc)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
(4)测试数据及运行结果:
当数据为回文数时:

当数据不是回文数时:

相同数据raptour测试得:、

(5)实验分析:
问题1.raptour流程图中求余和取整
原因:忘记了函数字符
解决方法:查找老师之前的课件
问题2.千位的求法
原因:无
解决方法:多次尝试
(1)题目:
7-5 计算火车运行时间(10 分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
(2)流程图:

(3)源代码:

include<stdio.h>

int main(void)
{
int a,b,c,q,w,e,t,r;
scanf("%d%d",&a,&b);
c=a/100;
q=a%100;
w=b/100;
e=b%100;
t=w-c;
r=e-q;
if(r<0)
{
printf("%02d:%02d",t-1,r+60);
}
else
{
printf("%02d:%02d",t,r);
}

return 0;

}
(4)测试数据及运行结果:
编程结果如下:

reptor运行结果如下:

(5)实验分析:
注意时间之间的进制时60进制,通过设置程序,改变进制数。
(1)题目:
7-7 三天打鱼两天晒网(10 分)
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
(2)流程图:

(3)源代码:

include<stdio.h>

int main(void)
{
int a,N;
scanf("%d",&N);
a=N%5;
if(a1||a2||a==3)
{
printf("Fishing in day %d",N);
}
else
{
printf("Drying in day %d",N);
}
return 0;
}(4)测试数据及运行结果:
测试数据:104,32

(5)实验分析:
在+后输出变量数据,“”中加输出常数
(1)题目:
7-9 阶梯电价(10 分)
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
(2)流程图:

(3)源代码:

include<stdio.h>

int main(void)
{
int a,b;
double money;
scanf("%d",&a);
if(a<0)
{
printf("Invalid Value!");

}
else if(a<=50)
{
money=a0.53;
printf("cost = %.2f",money);
}
else
{
money=(a-50)
0.58+50*0.53;
printf("cost = %.2f",money);
}
return 0;
}
(4)测试数据及运行结果:
测试数据:-10 20 56

(5)实验分析:
m发生丢失,导致负数结果输出错误。
当执行负数时可只输出负数结果。
(四)PTA提交列表:

// 感谢老师助教的辛苦校正。麻烦啦啦啦

posted on 2017-10-27 16:56  笑眼  阅读(531)  评论(0编辑  收藏  举报