编写一个函数,输入一个4位数字,要求输出者4个数字字符,但每两个数字字符间空一个
#include<stdio.h>voidfun(charstr[]){inti;for(i=3;i>=0;i--){str[i*2]=str[i-1];str[i*2-...
#include <stdio.h>
void fun(char str[])
{int i;
for(i=3;i>=0;i--)
{str[i*2]=str[i-1];
str[i*2-1]=' ';
}
str[7]='\0';
}
main()
{char str[81];
printf("please input 4 digits:\n");
gets(str);
fun(str);
printf("the result is:\n");
puts(str);
}
{str[i*2]=str[i-1];
str[i*2-1]=' @';
这两句什么意思没看懂啊
为什么不是@1@2@3@4而是1@2@3@4@
若str[i*2]=str[i];
str[i*2-1]=' ';
假设输入123,根据I=3,则str[6]=str[3],str[5]=' '
I=2,则str[4]=str[2],str[3]=' ',I=1,则str[2]=str[1],str[1]=' '
得出的是(空格)1(空格)2(空格)3才对吧,答案确是
1(空格)2(空格)3(空格),怎么会这样 展开
void fun(char str[])
{int i;
for(i=3;i>=0;i--)
{str[i*2]=str[i-1];
str[i*2-1]=' ';
}
str[7]='\0';
}
main()
{char str[81];
printf("please input 4 digits:\n");
gets(str);
fun(str);
printf("the result is:\n");
puts(str);
}
{str[i*2]=str[i-1];
str[i*2-1]=' @';
这两句什么意思没看懂啊
为什么不是@1@2@3@4而是1@2@3@4@
若str[i*2]=str[i];
str[i*2-1]=' ';
假设输入123,根据I=3,则str[6]=str[3],str[5]=' '
I=2,则str[4]=str[2],str[3]=' ',I=1,则str[2]=str[1],str[1]=' '
得出的是(空格)1(空格)2(空格)3才对吧,答案确是
1(空格)2(空格)3(空格),怎么会这样 展开
4个回答
展开全部
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'
修改为如下,测试结果没有错。
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 <stdio.h>
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 <stdio.h>
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");
}
最简单的错误是@1@2@3@4这个长度是8,所以str[7]='\0'; 这个肯定错,应该str[8]='\0';
要输出1@2@3@4,程序如下
#include <stdio.h>
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 <stdio.h>
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]; 吧
如果是数字就要麻烦些
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,那答案书写的根本就是云山雾绕的 和垃圾
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询