倒序而已不要写得太麻烦了
#include
void inverse(char a[])
{
int i,mun=0;
mun=strlen(a);
printf("mun=%d\n",mun); //搞不懂你为什么要输出mun 和n 的值 是要显示两个字符串长度
//吗,没啥必要,算了 不改你的
const int n=mun;
printf("n=mun=%d\n",n);
char b[100]; b[n]='\0';
for(i=0;i
puts(b);
}
main函数里的puts(a)只是重复输出了数组a里的字符串,并没有改变a[]的值。inverse函数里给b[]赋值的循环每次执行j都被赋为num(即字符串长度),所以每次只能改变b[num]的值,而b[0]一直没有赋值,导致输出乱码。你的代码应该将int j=mun;放到循环外面并且改为int j=mun-1;
以下是我修改后的代码请用笑纳~~
#include"stdio.h"
void inverse(char a[])
{
int i,mun=0;
for(i=0;i<100;i++)
{
if(a[i]=='\0')
break;
mun++;
}
//输出num有意思吗?
//printf("mun=%d\n",mun);
//printf("n=mun=%d\n",n);
const int n=mun;
char b[100];
b[n]='\0';
//将数组b[]赋为a[]的逆序
int j = mun - 1;
for(i=0;i<100 && a[i] != 0;i++)
{
b[j]=a[i];
j--;
}
puts(b);
}
把inverse 改一下
void inverse(char a[])
{
int i,mun=0;
for(i=0;i<100;i++)
{
if(a[i]=='\0')
break;
mun++;
}
printf("mun=%d\n",mun);
const int n=mun;
printf("n=mun=%d\n",n);
char b[100]; b[n]='\0';
int j=mun-1; //放到for外面并且要-1
for(i=0;i
{
b[i]=a[j];//
j--;
}
puts(b);
}
int i,j;
for(i=0,j=n-1;i<=j;i ,j--){b[i]=a[j];b[j]=a[i];}