permui / ZJUCKC-C-Learning-Assistence

浙江大学竺可桢学院C语言程序设计辅学计划公共仓库。
6 stars 6 forks source link

cyq-scanf如何返回-pta #20

Open HHHHXXXX520 opened 4 years ago

HHHHXXXX520 commented 4 years ago

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出格式:

在一行中输出逆序后的字符串。 输入样例:

Hello World!

输出样例:

!dlroW olleH

上交pta说格式错误,貌似说的是scanf的返回值?这该如何是好... 谢谢!!

图片

‘’‘C

include

int main(){ char a[80]; int i=0; a[0]='p'; while(a[i-1]!='\n'){ scanf("%c",&a[i++]); } for(int u=i-1;u>=0;u--){ printf("%c",a[u]); } return 0; } ’‘’

lizhiqi-creator commented 4 years ago

1.和编译器输出中的结果应该无关,编译器中输出的结果是说的是没有使用scanf的返回值,我们平时是用scanf很多时候都不使用scanf的返回值,所以基本每次在pta上编译都会出现这样的显示,但是它对答案没有影响。 2.你的问题是,将输入的结束标志'\n’输出了,在while结束的时候,a[i-1]中存储的值是'\n',因为只有这样while才会结束循环,但是你输出的时候for(int u=i-1;u>=0;u--)又从a[i-1]输出,所以直接输出的是'\n',这就是格式错误的原因

HHHHXXXX520 commented 4 years ago

1.和编译器输出中的结果应该无关,编译器中输出的结果是说的是没有使用scanf的返回值,我们平时是用scanf很多时候都不使用scanf的返回值,所以基本每次在pta上编译都会出现这样的显示,但是它对答案没有影响。 2.你的问题是,将输入的结束标志'\n’输出了,在while结束的时候,a[i-1]中存储的值是'\n',因为只有这样while才会结束循环,但是你输出的时候for(int u=i-1;u>=0;u--)又从a[i-1]输出,所以直接输出的是'\n',这就是格式错误的原因 谢谢!!已修改成功!