fun函数错误。
修改为如下,测试结果没有错。
void fun(char str[])
{
for(int i=3;i>=0;i--)
{
str[i*2]=str[i]; // 这里把原字符所在位置往后移动了2倍
if( 0 != i ) //当等于0时特殊处理,即字符串第一个字符保持原位不变
{
str[i*2-1]=' '; //这里把字符前面加了空格
}
}
str[7]='\0'; //字符串是以'\0' ,结束,不加此句,将造成不可预知错误。
}
最后生成的结果是:
please input 4 digits:
9527
the result is:
9@5@ 2@ 7'\0'
你的程序好像有问题,输出结果一个都不是.
最简单的错误是@1@2@3@4这个长度是8,所以str[7]='\0'; 这个肯定错,应该str[8]='\0';
要输出1@2@3@4,程序如下
#include
void fun(char str[])
{int i;
for(i=3;i>=0;i--)
{str[i*2+1]=str[i];
str[i*2]='@';
}
str[8]='\0';
}
main()
{char str[81];
printf("please input 4 digits:\n");
gets(str);
fun(str);
printf("the result is:\n");
puts(str);
system("PAUSE");
}
要输出1@2@3@4@,程序如下
#include
void fun(char str[])
{int i;
for(i=3;i>=0;i--)
{str[i*2+1]='@';
str[i*2]=str[i];
}
str[8]='\0';
}
main()
{char str[81];
printf("please input 4 digits:\n");
gets(str);
fun(str);
printf("the result is:\n");
puts(str);
system("PAUSE");
}
我觉得,你输入的不是数字是字符串吧
如果是数字就要麻烦些
for(i=3;i>=0;i--)
{str[i*2]=str[i-1];
str[i*2-1]=' ';
这段有问题吧
加入输入1234,i=3
STR[6]=STR[2];
那不就是X@X@X@3
应该是str[i*2]=str[i]; 吧
你是看的谭浩强的习题8.8,那答案书写的根本就是云山雾绕的 和垃圾