我重新整理下问题:
题目是输入四位数,然后每位中间空一个空格输出
:#include<stdio.h>
#include<string.h>
int main()
{
void change(char n[]);
char n[10];
//0-48
printf("请输入一个四位数:\n");
gets(n);
change(n);
return 0;
}
void change(char n[])
{
int i;
for(i=strlen(n);i>0;i--)
{
n[2*i]=n[i];
n[2*i-1]=' ';
}
printf("转换后输出:\n%s\n",n);
}
这个程序我想了好多遍,字符数组的n[0]应该是一个空格啊,为什么输出时第一个直接是字符?
我认为gets(n);运行以后,n[0],n[1],n[2],n[3]会分别被赋予4个数字,
但是运行for(i=strlen(n);i>0;i--)
{
n[2*i]=n[i];
n[2*i-1]=' ';
}
以后,先把n[4]的值赋给n[8],n[7]赋值为空格字符,n[3]的值赋给n[6],n[5]赋值为空格字符,n[2]的值赋给n[4],n[3]赋值为空格字符,n[1]的值赋给n[2],n[1]赋值为空格字符,但是这与之前n字符数组存入数据的位置是不符合的啊,调用自编函数后不该正确输出数据猜对啊。
输入完数组数值后应该存储情况为
1
2
3
4
a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]
但是理论上后面函数不应该正确运行才对啊,好比第一次n[8]=n[4],n[7]='\0',但是开始时n[4]并不是数字字符