第三次作业

第三次作业

(一)改错题

计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数

  • 输入输出样例1:
      Enterr x: 10.0
      f(10.0) = 0.1
  • 输入输出样例2:
      Enter x: 234
      f(234.0) = 234.0

    源程序
    ``` #include <stdio.h>
    int main(void)
    {
    double x,y;
    printf("Enter x: \n");
    scanf("=%f", x);
    if(x = 10);
    {
    y = 1 / x
    }
    else (x != 10)
    {
    y = x;
    }
    printf("f(%.2f) = %.lf\n" x y);
    return 0;
    }
* 错误信息1:![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/DCe*oDRhwmSPI99uEKbVEkX00TliRr4iwZhlUZa0Vgo!/b/dBUBAAAAAAAA&bo=hAKpAAAAAAARBx8!&rf=viewer_4)
* 错误原因:第9行没有加分号";"。
* 改正方法:在第9行加上一分号";"。

* 错误信息2:![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/Dmw*ONcbbragDPeUZ2PjsZ676kgfyAYubVMEeLuBFsw!/b/dPcAAAAAAAAA&bo=8gKUAAAAAAARB1Q!&rf=viewer_4)
* 错误原因:else 没有对应的 if。
* 改正方法:把括号和里面的条件去掉。

* 错误信息3:![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/hSdtRKEeqFhcB29B7Hssrc7FwHcxdu8ffXsaeku.CG4!/b/dBQBAAAAAAAA&bo=GAOQAAAAAAARB7s!&rf=viewer_4)
* 错误原因:if后面加了分号,else没有对应的if。
* 改正方法:把if后面的分号";"去掉。

* 错误信息4:![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/KZY5dZRk3aAtiYQ1lrXciEkKUPlldoLqnk4lQ0qBslo!/b/dB4BAAAAAAAA&bo=9wKLAAAAAAARB04!&rf=viewer_4)
* 错误原因:printf输出中没有加逗号(,)
* 改正方法:在输出中加入逗号","。

* 错误信息5:![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/knsktDX578hEKybGEqkEbJ1bmrrDWk7w7ymQ93NxaqM!/b/dJYAAAAAAAAA&bo=eAN3AQAAAAARADo!&rf=viewer_4)
* 错误原因:输出的值与应得的值不相等
* 改正方法:把第15行的%.lf改成%.1f
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/QGRJTmnk.MFuSkxeTYP0XebF42563rj8grHCce7mEbI!/b/dJwAAAAAAAAA&bo=BQN6AQAAAAARB00!&rf=viewer_4)
##### 改正后输出正确

* 错误信息6:![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/AQ3.gCuPI8bX*rabJ2fXnLtxSi0hxOgrO9Z88BN1xHk!/b/dEIAAAAAAAAA&bo=WQPLAQAAAAARB6A!&rf=viewer_4)
* 错误原因:输出答案不正确。
* 改正方法:把scanf中的%f改成%lf,把(x=10)改成(x==10)。
* 错误信息7:![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/yV94ABqKNkWurW.NM.lKeQadYiroJZaC7QynNUxbDEs!/b/dB4BAAAAAAAA&bo=lQPdAQAAAAARAH0!&rf=viewer_4)
* 错误原因:输出的值不相等
* 改正方法:在scanf中加入取地址符号&。![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/LSq61FE9blAjQz0eassN5pKJFl1610fXa.MyF5Xz.Fo!/b/dJwAAAAAAAAA&bo=pgPWAQAAAAARB0I!&rf=viewer_4)
##### 输出错误!
* 错误信息8:![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/LSq61FE9blAjQz0eassN5pKJFl1610fXa.MyF5Xz.Fo!/b/dJwAAAAAAAAA&bo=pgPWAQAAAAARB0I!&rf=viewer_4)
* 错误原因:格式错误!
* 改正方法:那scanf中的“=”去掉。
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/NFdz7xYayHV1REuFcbKtVqdd21yyiCdS5ifCDol5kCM!/b/dHUAAAAAAAAA&bo=GgO5AQAAAAARAJY!&rf=viewer_4)
##### 改正后输出正确。
### (二)学习总结


#### 1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。

if(a)
if(b)
{
x=x+1;
}
else
{
y=y+1;
}

###### 含义:判断是否是a b,如果是a,则输出x=x+1;如果是B,则输出是y=y+1。
###### else与if(b)相匹配。
##### 正确格式

if(a && b)
{
x=x+1;
}
else
{
y=y+1;
}

#### 2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
###### 不能。因为C语言中是一句一句来判断的,只能是“真”“假”“1”“0”,所以如果按照题目中的来写,先判断的是x>-10这个,然后判断出的结果再和10作比较。
##### 正确格式
(x>-10 && x<10)

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

include <stdio.h>

int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}

##### 输出结果:
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/WSMKwRHfcFGs4FeeosvklysZtsn3hzJogjNGAIdDO8k!/b/dPkAAAAAAAAA&bo=dAPoAQAAAAARB64!&rf=viewer_4)

##### 解释:一开始定义的是整形变量,没有定义字符变量,当输入非法字符的时候,默认为还会完成,因为会完成所以为真,则输出b=1.

#### scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?
程序2

include <stdio.h>

int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
printf("n = %d\n", n);
return 0;
}

![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/V5S2MkcoZu9C8jWKZ6Rl8moJ02mbVFmW9NwQ9VsoEA4!/b/dEIAAAAAAAAA&bo=UANiAQAAAAARAAc!&rf=viewer_4)
![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/npTd2hB.wYbz4zkrLXeAbkpDG763G*Dxc*4mIm6j8J8!/b/dB4BAAAAAAAA&bo=WwJnAQAAAAARBw8!&rf=viewer_4)
##### 因为第一次输入的时候都是整型的,读取了俩次,所以返回的时候是2。而第二次没有定义字符型的,则只读取了一次,所以返回的是1。
#### 修改程序(1),当输入非法数据时,输出“Input error!".样例如下:

include <stdio.h>

int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
if(n==2)
{
printf("%d %d",a,b);
}
else
{
printf("Input error!");
}
return 0;
}

![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/l8KqGFoG*uLPyy25eGNF5HMlIqp5509E*ZCJlrBwUhU!/b/dPcAAAAAAAAA&bo=rAPnAQAAAAARB3k!&rf=viewer_4)

#### 4.对其他你认为需要进行总结的内容进行总结
* 1."%c”输入时,空格字符和“转义字符”作为有效字符输入。
* 2.输入相等的时候要用"==",而不是"="。
* 3.if和else是一一对应的关系,在选择判断时不能用镶嵌的格式,只能分开来写。
* 4.在测试的结果的时候我们要格外注意题目所给的格式,否则就会出错,并且输出错误。
* 5.在用到表达式的时候我们要注意格式,注意输出的时候保留几位小数。


### (三)实验总结
##### (1)题目
7-3 回文数

判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。
##### (2)流程图
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/9YDao*b2arbJQqGdfAqeaNzb*JTptAFgoQtx148c5Ss!/b/dHUAAAAAAAAA&bo=xwIgAgAAAAARB9c!&rf=viewer_4)
##### (3)源代码

include <stdio.h>

int main(void)
{
int n,a,b,c,d;
scanf("%d",&n);
n>=10000 && n<=99999;
a=n/10000;
b=n/1000%10;
c=n/10%1000%10;
d=n%10000;
if(a==d,b==c)
{
printf("yes");
}
else
{
printf("no");
}

return 0;

}

##### (4)测试数据及运行结果
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/Nu1m3yTa2N*jeQRju5.q0TRPsvX0*KGV0ui2oi5eEr8!/b/dLEAAAAAAAAA&bo=nwPiAQAAAAARB08!&rf=viewer_4)
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/rT769E61BV5EgTakbBoh5nGWf.fWO5olIf93Dg6u3Wc!/b/dPkAAAAAAAAA&bo=vwPwAQAAAAARAHo!&rf=viewer_4)
##### (5)实验分析:

问题1:
![](http://a3.qpic.cn/psb?/V11Qo7GT1S1n60/CEUdz8g6pombrL4xd4seogC5sD95SDVVoZ6tshLoWeo!/b/dB8BAAAAAAAA&bo=PAPVAQAAAAARB9s!&rf=viewer_4)

原因:相等的时候写成了“=”。

解决办法:把“=”改成“==”。


##### (1)题目
7-5 计算火车运行时间

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
##### (2)流程图
![](http://a3.qpic.cn/psb?/V11Qo7GT1S1n60/0rYAREx2qRs7drdFurXT0xN2DjSKEsh7lRE1DhlIe08!/b/dLMAAAAAAAAA&bo=.AIwAgAAAAARAP8!&rf=viewer_4)
##### (3)源代码

include <stdio.h>

int main(void)
{
int a,b,c,d,e,f,g,h;
a>=1000 && a<=9999;
b>=1000 && b<=9999;
scanf("%d %d",&a,&b);
c=a/100;
d=b/100;
e=a%100;
f=b%100;
g=d-c;
h=f-g;
if(f<e)
{
h=f+60-e;g=d-1-c;
}
else
{
h=f-e;g=d-c;
}
printf("%02d:%02d",g,h);

return 0;

}

##### (4)测试数据及运行结果
![](http://a3.qpic.cn/psb?/V11Qo7GT1S1n60/dXjcYoqW.*wElW85xW9k*S.ZMcEdbtvsvTIRImtw5sM!/b/dEQAAAAAAAAA&bo=FwPuAQAAAAARAMw!&rf=viewer_4)
##### (5)实验分析:

问题1:![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/5x7TZNzoQvTJ1rpRCkcqj8HZRhmIJsWR2B6Nh8FwG6s!/b/dPcAAAAAAAAA&bo=SAPOAQAAAAARB7Q!&rf=viewer_4)

原因:在输出的时候,格式错误。

解决办法:把“%2d”改成"%02d"。


##### (1)题目
7-7 三天打鱼两天晒网

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
##### (2)流程图
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/VevHoJZRqJHnggKfNEcJi1oIeUAL1mNuh9GX2Z.q9*Y!/b/dMkAAAAAAAAA&bo=bAQvAgAAAAARAHI!&rf=viewer_4)
##### (3)源代码

include <stdio.h>

int main(void)
{
int N,D;
N<1000 && N>0;
scanf("%d",&N);
D=N%5;
if(D>0 && D<=3)
{
printf("Fishing in day %d",N);
}
else
{
printf("Drying in day %d",N);
}

return 0;

}

##### (4)测试数据及运行结果
![](http://a2.qpic.cn/psb?/V11Qo7GT1S1n60/IMM4SYkIGnNDtpxZUdrZKh7*0Stf0bynt1LbTQ5eecY!/b/dPcAAAAAAAAA&bo=vwMCAgAAAAARAIs!&rf=viewer_4)
![](http://a3.qpic.cn/psb?/V11Qo7GT1S1n60/EWaIY2UuF6f.hQTty6Vyl*oeepMxtJ3OSgJlae2MDWQ!/b/dLMAAAAAAAAA&bo=pwPgAQAAAAARAHI!&rf=viewer_4)
##### (5)实验分析:

问题1:![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/4sF3gC29bUtPu1TGxyxD4iPwSj*z21J3kiaZjzZokxE!/b/dJwAAAAAAAAA&bo=tAIzAgAAAAARALA!&rf=viewer_4)

原因:在if后面加了“;”,没有对应的else。

解决办法:把if后面的“;”去掉。


##### (1)题目
7-9 阶梯电价

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

##### (2)流程图
![](http://a1.qpic.cn/psb?/V11Qo7GT1S1n60/LsnNIoqJqq5QjPc7eaMHKC38em38ez4tMYukou9luFM!/b/dHUAAAAAAAAA&bo=cgQkAgAAAAARAGc!&rf=viewer_4)
##### (3)源代码

include <stdio.h>

int main(void)
{
double x,y;
scanf("%lf",&x);
if(x<50 && x>0)
{
y=x0.53;
printf("cost = %.2f",y);
}
else if(x>=50)
{
y=50
0.53+(x-50)*0.58;

printf("cost = %.2f",y);
}
else
{
    printf("Invalid Value!");
}
return 0;

}
```

(4)测试数据及运行结果

dLEAAAAAAAAA&bo=fQPzAQAAAAARALs!&rf=viewer_4
dEQAAAAAAAAA&bo=nwPvAQAAAAARAEU!&rf=viewer_4

(5)实验分析:

问题1:dHUAAAAAAAAA&bo=LQPPAQAAAAARB9A!&rf=viewer_4

原因:因为是double类型,在scanf输入中应该是“%lf”而不是“%f”。

解决办法:把“%f”改成“%lf”。

(四)PTA提交列表

dBMBAAAAAAAA&bo=ZQR6AgAAAAARByk!&rf=viewer_4
dA4BAAAAAAAA&bo=UgRSAgAAAAARADE!&rf=viewer_4

转载于:https://www.cnblogs.com/8426224ll/p/7748602.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值