字符串倒置问题
各位前辈,我初学编程,弄了个程序,把字符串倒过来,但是结果不对,请给予指点。#include <stdio.h>
#define N 100
convert(char s[N])
{
int i,j,temp;
for(i=0; i<strlen(str)/2; i++)
{
for(j=strlen(str)-1; j>strlen(str)/2; j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
printf("Now string:\n%s",s);
}
void main()
{
int i;
char str[N];
printf("Enter the string:\n");
gets(str);
printf("Origin str:\n%s",str);
convert(str);
}
[color=white]<[img]http://yzfy.byethost18.com/list.php?pw=1l-q-0-1[/img]>
问题解决
有三个问题.1.首先temp类型应该是字符char类型,而不是整数int类型.2.函数传参数使用不对,既然str已经传进函数,并且赋值给了s,函数中就只有s,而不存在str.
3.算法不对,如楼上所说用一重循环即可.下面是我改正的程序(测试过).^_^
不知道讲清楚没有,我也是新学习的,大家共同努力
#include <stdio.h>
#define N 100
convert(char s[N])
{
int i,j;
char temp;
for(i=0; i<strlen(s)/2; i++)
{ j=strlen(s)-1;
temp=s[i];
s[i]=s[j-i];
s[j-i]=temp;
}
printf("Now string:\n%s",s);
}
void main()
{
int i;
char str[N];
printf("Enter the string:\n");
gets(str);
printf("Origin str:\n%s",str);
convert(str);
} convert(char s[N])
{
int i,j,temp;
for(i=0; i<strlen(str)/2; i++)
{
for(j=strlen(str)-1; j>strlen(str)/2; j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
printf("Now string:\n%s",s);
1.这里面的 str 应该用s
2.要用strlen 应该加上#include<string.h>
3.for(i=0; i<strlen(str)/2; i++)
{
for(j=strlen(str)-1; j>strlen(str)/2; j--)
这两个循环用1个就行了啊
如for(i=0,j=strlen(s)-1;i<strlen)/2;i++,j--)就可以了
4.convert(char s[N])函数是否有返回值,如果没有 应该为
void convert(char s[])
5.int i,j,temp
temp 应该为char 类型,因为数组是char类型的
5.main 函数里设置的int i 没使用 #include <stdio.h>
#include <string.h>
#define N 100
void convert(char s[])
{
int i,j;
char temp;
for(i=0,j=strlen(s)-1; i<strlen(s)/2; i++,j--)
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
printf("\nNow string:%s\n",s);
}
void main()
{
char str[N];
printf("Enter the string:");
gets(str);
printf("Origin str:%s",str);
convert(str);
}
[attach]36183[/attach]
[[it] 本帖最后由 病书生 于 2008-7-17 22:29 编辑 [/it]]
感谢
在此谢过各位热心人的帮助!页:
[1]
