| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:字符串逆序输出
只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏
已结贴  问题点数:30 回复次数:14 
字符串逆序输出
#include"stdio.h"
int main()
{
void num(char aa[],int n);
char zifu[50];
int i,j;
for(i=0;i!='\0';i++)
scanf("%c",zifu);
for(j=0;j<i;j++)
printf("原字符串为:%s\n",zifu);
num(zifu,i);
for(j=0;j<i;j++)
printf("改后字符串为%s\n",zifu);
return 0;
}
void num(char aa[],int n)
{
int h,temp;
if(n%2==0)
for(h=0;h<=((n/2)-1);h++)
{
temp=aa[h];      
aa[h]=aa[n-h-1];
aa[n-h-1]=temp;
}
if(n%2==1)
for(h=0;h<=((n-1)/2)-1;h++)
{
temp=aa[h];
aa[h]=aa[n-h-1];
aa[n-h-1]=temp;
}
}

这是我编的程序,但不知哪里错了,请高手指点!!!!
谢谢!
搜索更多相关主题的帖子: 字符串 return include 
2013-01-21 15:46
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
    请指点!
2013-01-21 16:10
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:0 
for(i=0;i!='\0';i++)   什么意思~
2013-01-21 16:19
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:25 
#include"stdio.h"
int main()
{
void num(char aa[],int n);
char zifu[50];
int i,h;
printf("输入你要的字符串长度!\n");
scanf("%d",&h);
printf("输入你要的字符串!\n");
for(i=0;i<h;i++)            //for(i=0;i!='\0';i++)死循环!
scanf("%s",&zifu[i]);       //用%s是因为%c 也可以读取回车的,于是,就悲剧了。用zifu是对整串输入,要用&zifu[i]!
zifu[h]='\0';               //字符串以'\0'结尾,要注意!
//for(j=0;j<i;j++)没必要做循环输出
printf("原字符串为:%s\n",zifu);
num(zifu,i);
//for(j=0;j<i;j++)同上!
printf("改后字符串为%s\n",zifu);
return 0;
}
void num(char aa[],int n)
{
int h,temp;
if(n%2==0)
for(h=0;h<=((n/2)-1);h++)
{
temp=aa[h];      
aa[h]=aa[n-h-1];
aa[n-h-1]=temp;
}
if(n%2==1)
for(h=0;h<=((n-1)/2)-1;h++)
{
temp=aa[h];
aa[h]=aa[n-h-1];
aa[n-h-1]=temp;
}
}
有不懂再问,可能迟点回复你!
2013-01-21 16:52
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 4楼 Johnsonzhen
程序本身没有错误,但运行输出有问题呀,输入一定长度的字符串后,再敲回车运行却得不到预期的结果呀!
谢谢!!
2013-01-21 18:47
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:0 
回复 5楼 zhou31146001
printf("输入你要的字符串!\n");  不好意思 打多了个串字  是这
图片附件: 游客没有浏览图片的权限,请 登录注册
样的printf("输入你要的字符!\n");[附件]
2013-01-21 18:57
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 6楼 Johnsonzhen
为什么要换行输入字符呀,怎么我直接一行输入就不对呢?
for(i=0;i<h;i++)            //for(i=0;i!='\0';i++)死循环!
scanf("%s",&zifu[i]);       //用%s是因为%c 也可以读取回车的,于是,就悲剧了。用zifu是对整串输入,要用&zifu[i]!
 其中这一句scanf("%s",&zifu[i]);  有点不理解。

还有我把原先的程序按你的思想改了一下,如下
  #include"stdio.h"
int main()
{
void num(char aa[],int n);
char zifu[50];
int i,j;
for(i=0;i<10;i++)
scanf("%s",&zifu[i]);
printf("原字符串为:%s\n",zifu);
num(zifu,i);
printf("改后字符串为%s\n",zifu);
return 0;
}
void num(char aa[],int n)
{
int h,temp;
if(n%2==0)
for(h=0;h<=((n/2)-1);h++)
{
temp=aa[h];      
aa[h]=aa[n-h-1];
aa[n-h-1]=temp;
}
if(n%2==1)
for(h=0;h<=((n-1)/2)-1;h++)
{
temp=aa[h];
aa[h]=aa[n-h-1];
aa[n-h-1]=temp;
}
}
但还是不对,请指点是怎么回事呀/
谢谢!!!!!
2013-01-21 19:47
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:0 
如果你非要直接输入一行的话,我只会用指针。
for(i=0;i!='\0';i++) 你想一下,i自加多少次才能跳出循环?
例如你用scanf("%c",zifu);   你按回车就=\n 它就会着你要输入的字符一起输进去~把回车当做字符, 如果非要这样用,就在后面加个getchar()吧!
那个程序是对的吧,我运行过,正确啊! 那里不对,你指出来看看?
2013-01-21 20:34
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:0 
还有啊,如果直接一行输入就不对呢  就不要用for循环, 那么你的函数void num(char aa[],int n)  就可能要改变了!
2013-01-21 20:39
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 9楼 Johnsonzhen
只是想知道一下,为什么输入的china是一行输出一个字符呢,然后又统一一行又输出了一遍,我没看懂这一块。仔细检查了程序,感觉不应该是这样的输出形式呀!
2013-01-21 20:48
快速回复:字符串逆序输出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035010 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved