| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 438 人关注过本帖
标题:将输入字符倒序输出的程序,不能倒序,而且输出总多带个c,大家运行以下看看 ...
收藏  订阅  推荐  打印 
showtime110
Rank: 1
等级:新手上路
帖子:13
积分:230
注册:2005-2-18
将输入字符倒序输出的程序,不能倒序,而且输出总多带个c,大家运行以下看看问题在

#include <stdio.h> int getline(char s[],int len) { int i=0,c; while((c=getchar())!='\n'&&c!=EOF&&--len>0) s[i++]=c; if(c=='\n') s[i++]='c'; s[i]='\0'; return i; }

reverse(char *p,int n) { char *q,temp; q=p+n-1; while(q<=p) { *p=temp; temp=*q; *q=*p; p++; q--; } } main() { char b[1000]; int q=1000,c,i; c=getline(b,q); reverse(b,c); for(i=0;i<c;i++) printf("%c",b[i]); }

搜索更多相关主题的帖子: 倒序  字符  输出  运行  
2005-3-10 20:35
magic475
Rank: 2
等级:注册会员
帖子:66
积分:760
注册:2005-1-14

建议作者把关于C语言的函数部分好好看一下,函数的变量与状态是保存于栈空间中,用过就自动删除。 下面是个错误的例子,你可以试着运行一下: #include <stdio.h>

int max(int a,int b) { scanf("%d,%d",&a,&b); if(a>=b) return a; else return b; }

void main() { int a,b,c;

c=max(a,b); printf("%d,%d,%d\n",a,b,c); }

2005-3-10 22:19
kaikai
Rank: 3Rank: 3
等级:中级会员
帖子:234
积分:2500
注册:2005-1-7

1.
s[i++]='c'; //你自己放的c...
2.
  *p=temp;
  temp=*q;
  *q=*p;
交换次序错了,应该temp=*p; *p=*q; *q=temp;

Have you visit acm.tongji.edu.cn lately?
2005-3-10 22:32
magic475
Rank: 2
等级:注册会员
帖子:66
积分:760
注册:2005-1-14

纠正楼上一下
s[i++]=c;是正确的,因为这里的c是整型,代表字符的ASCII 码值。

第二点是正确
2005-3-10 22:37
showtime110
Rank: 1
等级:新手上路
帖子:13
积分:230
注册:2005-2-18

以下是引用magic475在2005-3-10 22:19:25的发言:

建议作者把关于C语言的函数部分好好看一下,函数的变量与状态是保存于栈空间中,用过就自动删除。 下面是个错误的例子,你可以试着运行一下: #include <stdio.h>

int max(int a,int b) { scanf("%d,%d",&a,&b); if(a>=b) return a; else return b; }

void main() { int a,b,c;

c=max(a,b); printf("%d,%d,%d\n",a,b,c); }

那我的程序里哪个变量是被函数用过删掉的而我又用了一次的 能帮我指出来一下吗 我看不出来,刚学c没多久,太差了我

2005-3-10 23:40
mengge
Rank: 1
等级:新手上路
帖子:34
积分:440
注册:2005-2-10

#include <stdio.h>

int max(int a,int b) { scanf("%d,%d",&a,&b); if(a>=b) return a; else return b; }

void main() { int a,b,c; scanf("%d%d",&a,&b);_____________添上这个应该就没有问题拉吧

c=max(a,b); printf("%d,%d,%d\n",a,b,c); }

2005-3-11 16:06
手心的太阳
Rank: 1
等级:新手上路
帖子:34
积分:440
注册:2005-1-5

好像是传址出了问题

我喜欢java胜过一切
2005-3-13 20:29
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11

#include <stdio.h> int getline(char s[],int len) { int i=0,c; while((c=getchar())!='\n'&&c!=EOF&&--len>0) s[i++]=c; if(c=='\n') s[i++]='c'; 这部分不要就是对的! s[i]='\0'; return i; }

reverse(char *p,int n) { char *q,temp; q=p+n-1; while(q<=p) { temp=*q; *q=*p; *p=temp; 这也应该改一下! p++; q--; } } main() { char b[1000]; int q=1000,c,i; c=getline(b,q); reverse(b,c); for(i=0;i<c;i++) printf("%c",b[i]); }

[此贴子已经被作者于2005-3-14 8:30:04编辑过]


2005-3-14 08:27
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.059933 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved