编写程序,使输入的字符串倒序输出:

来源:百度知道 编辑:UC知道 时间:2024/05/20 18:50:39
编写程序,使输入的字符串倒序输出:
#include<stdio.h>
void main()
{
char string[100],t;
int i=10,j;
printf("请输入一个字符串\n");
scanf("%s",string[i]);
for(j=0;j<=(i-1);j++)
{
t=string[j];
string[j]=string[i-1];
string[i-1]=t;
i--;
}printf("%s",string);
}
请问这个程序哪里错了,请高手指教,小弟不胜感激!!

int i=10,j;
printf("请输入一个字符串\n");
scanf("%s",string[i]);
这里100位的字符数组,这只输入了一个字符啊,输入给第10位的字符了。
这时i = 10,你用for循环从0到i - 1遍历一遍,这个范围内的字符都没有初始化啊。

在这里你想做的是把原字符数组倒置,也就是把string的值改变了。我告诉你个不用改变string值的方法啊。

你可以多定义一个int型的变量length来记录当前string的长度,当然,初始值为0。用一个while语句,用个getchar()循环输入单个字符,同时length加1;遇到回车符结束循环。string的值就这么确定好了。
要倒序输出string,就可以从length - 1位 到 0 位遍历一遍string,同时用putchar()输出对应的字符。这样string在没有改变值的情况下,输出了倒序的样子啦。

你看看行不行。

#include <stdio.h>
#include <string.h>

int main()
{
char string[50], tmp;
int i, j = 0;

printf("请输入一个字符串\n");

scanf("%s", string);

i = strlen(string) - 1;

while(1)
{
tmp = string[j];
string[j] = string[i];
string[i] = tmp;

j++;
i--;

if ((i ==