输入4位数字,在输出时每两个数字字符间有一个空格,我编的哪里错了,高手指教:

[复制链接]
查看11 | 回复2 | 2009-4-11 21:30:13 | 显示全部楼层 |阅读模式
正确程序是:
#include
#include
void insert(char[]);
main()
{char str[80];
printf("input four digits:");
scanf("%s",str);
insert(str);
}
void insert(char str[])
{int i;
for(i=strlen(str);i>0;i--) /*在这我改了,改成“for(i=0;i〈strlen(str);i++)”*/
{str[2*i]=str;
str[2*i-1]=' ';}/*在这我也改了,我改成“str[2*i+1]=' ';”,我想结果应该是不变的,可是这样一来,程序就无法得到结果了,为什么啦,我从左到右输出怎么就不对了,高手指教,谢谢。*/
printf("output:%s\n",str);
getch();
}

回复

使用道具 举报

千问 | 2009-4-11 21:30:13 | 显示全部楼层
注意这句两str[2*i]=str; str[2*i-1]=' ';是对str[2*i]操作赋值,你在从左往右操作时,会破坏str[2*i]的原始数据。例如i=2时,str[4]被赋值,而在i=4时,str[8]=str[4],此时的str[4]已经发生过改变了。...
回复

使用道具 举报

千问 | 2009-4-11 21:30:13 | 显示全部楼层
搓了一位人家是1-长度你是0-长度-1能一样嘛。。。。I参数参与运算的,不只是一个循环记数器...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836