C语言,帮忙差错并加注解

来源:百度知道 编辑:UC知道 时间:2024/06/03 16:58:17
#include stdio.h
main()
{
char c,stmp,array[80];
int i=0,j;
while((c=getchar())!='\n')
array[i++]=c;
array[i]='\0';
for(j=i-1;j>=i/2;j--)/*请问这里让j>=i/2是为什么??*/
{
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
for(i=0;array[i]!='\0';i++) printf(%c,array[i]);
printf('\n');
}

提示这些语句总是有错,不知错在哪里,哪位高手帮忙看一下, 谢谢啦~!

for(i=0;array[i]!='\0';i++) printf(%c,array[i]);
这一行出错:%c两边要加双引号。还有头文件stdio.h也要加双引号的。

/*请问这里让j>=i/2是为什么??*/
这个程序的目的,是实现字符串的本末倒置,工作流程是这要的:
假设你输入的是123456789这九个字符,那么for(j=i-1;j>=i/2;j--)
就依次实现'9'与'1'对换、'8'与'2'对换、'7'与'3'对换、'6'与'4'对换。
可见只需将后半部分的字符与前半部分的逐个对换就够了,所以循环字符串的
一半程度,即i/2就够了。

还有就是建议把for(i=0;array[i]!='\0';i++) printf(%c,array[i]);
这行换成 for(j=0;j<i;j++) printf("%c",array[j]);
这样看起来会简洁一点。

附:修改后的完整代码如下
#include "stdio.h"
main()
{
char c,stmp,array[80];
int i=0,j;
while((c=getchar())!='\n')
array[i++]=c;
array[i]='\0';
for(j=i-1;j>=i/2;j--)/*请问这里让j>=i/2是为什么??*/
{
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
for(j=0;j<i;j++) printf("%c",array[j]);
printf(