8.8 写一个函数,输入一个4位数字, 要求输出这4个数字字符, 但每两个数字间有一个空格。 如输入1990,应输出“1 9 9 0”。
下边是我写的
/*8.8 写一个函数,输入一个4位数字,
要求输出这4个数字字符,
但每两个数字间有一个空格。
如输入1990,应输出“1 9 9 0”。 */
#include<stdio.h>
void AddBlank(char s[])
{
char sNew[7];
int i,j,flag=2;
for(i=0,j=0;j<7;j++)
{
printf("这是第%d次循环,循环前flag=%d。\n",j,flag);
if(flag%2==0)
{
printf("这是第%d次循环,本次循环if(flag)为真。\n");
sNew[j]=s[i];
i++;
}
else
{
printf("这是第%d次循环,本次循环if(flag)为假。\n");
sNew[j]=' ';
}
flag++;
printf("这是第%d次循环,循环后flag=%d。\n",j,flag);
printf("\n");
}
printf("for输出:\n");
for(i=0;i<7;i++)
{
printf("%c",sNew[i]);
}
printf("\n");
printf("puts输出:\n");
puts(sNew);
}
int main()
{
char s[4];
printf("请输入4位数字:");
gets(s);
puts(s);
AddBlank(s);
return 0;
}
结果是这样的:
可以完成空格插入,但是1 2 3 4后有乱码。经过分析后发现,产生故障的原因是:“char sNew[7]的长度为随机”。
书上的:
/*8.8 写一个函数,输入一个4位数字,
要求输出这4个数字字符,
但每两个数字间有一个空格。
如输入1990,应输出“1 9 9 0”。 */
#include<stdio.h>
{
int i;
for(i=strlen(str);i>0;i--)
{
str[2*i]=str[i];
str[2*i-1]=' ';
}
printf("\nOutput:\n%s",str);
}
main()
{
char str[80];
printf("\nInput four digits:");
scanf("%s",str);
insert(str);
}
书上的算法看明白了,明天默写。