一道程序
要求把四个字符输入。在他们每每之间加上一个空格输出。并显示出每次变化过程。
如:
这是帮一位小朋友修改的程序:
他的源程序是:
第二次输出与预期由差别
原因是:
str[6] = str[3];
str[5] = ' ' ;
而此时str[4] = ‘ \0’ ;
该如何修改呢?
---------------------------------------------------------------------------------------------------
参考修改:
如:
这是帮一位小朋友修改的程序:
他的源程序是:
#include<stdio.h>
#include<string.h>
int main()
{void insert(char[]);
char str[80];
printf("input four digits:");
scanf("%s",str);
insert(str);
return 0;
}
void insert(char str[])
{
int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';
printf("output:\n%s\n",str);
}
}
可是这个程序运行的结果是:
可是这个程序运行的结果是:
第二次输出与预期由差别
原因是:
str[6] = str[3];
str[5] = ' ' ;
而此时str[4] = ‘ \0’ ;
---------------------------------------------------------------------------------------------------
参考修改:
#include<stdio.h>
#include<string.h>
int main()
{void insert(char[]);
char str[80] = {' '};
printf("input four digits:");
scanf("%s",str);
insert(str);
return 0;
}
void insert(char str[])
{
int i;
i=strlen(str);
str[i]=' ';
for(i;i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';
printf("output:\n%s\n",str);
}
}
注:1,不得在main()函数中, str[i]=' '; 这样子会增加数组长度,必须在insert(char str[])中, str[i]=' ';;
2,在insert(char str[])中,注意选择 str[i]=' ';的位置
#include<string.h>
int main()
{void insert(char[]);
char str[80] = {' '};
printf("input four digits:");
scanf("%s",str);
insert(str);
return 0;
}
void insert(char str[])
{
int i;
i=strlen(str);
str[i]=' ';
for(i;i>0;i--)
{str[2*i]=str[i];
str[2*i-1]=' ';
printf("output:\n%s\n",str);
}
}
注:1,不得在main()函数中, str[i]=' '; 这样子会增加数组长度,必须在insert(char str[])中, str[i]=' ';;
2,在insert(char str[])中,注意选择 str[i]=' ';的位置