| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1242 人关注过本帖
标题:神啊!救救我啊!再做不出,我就要回家乡种田了!
只看楼主 加入收藏
李二狗
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-6-9
收藏
 问题点数:0 回复次数:10 
神啊!救救我啊!再做不出,我就要回家乡种田了!

这么简单的题目我也不会做啊!

题目:将一个带正负号的数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“—1234”,则函数把它转换为整数值—1234

搜索更多相关主题的帖子: 家乡 种田 整数 字符 数字 
2004-06-09 19:19
c
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2004-6-9
收藏
得分:0 

int getnum(char str); main() { int i,num=0,flag=1; char str[5]; clrscr(); printf("Pleae input string:\n"); scanf("%s",str); for(i=0;i<5;i++){ if (str[i]==0) break; if( getnum(str[i])==-1 ) if (i==0) flag=-1; else { printf("Error!!"); exit(); } else num=num*10+getnum(str[i]); } num=num*flag; printf("\nThe number is:%d",num); } int getnum(char s){ if (s=='-') return (-1); else if(s=='+') return (0); else return(s-48);}

我在TC2.0上调试正确,可能有更好的办法,请高手不吝赐教 我喜欢编程(vb,c,asp),但水平不高,有志同道合者请联系chinahuxu@126.com


有志同道合者请加群:12133884 联系:Sonic.hu@
2004-06-10 11:35
曦薄远
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-6-10
收藏
得分:0 
#include &lt;stdio.h&gt;
main()
{
char a;
int m,d;
d=','-getchar();
m=0;
a=getchar();
while(a!='\n')
{
m=(m&lt;&lt;3)+(m&lt;&lt;1)+a-'0';
a=getchar();
}
printf("%d\n",d*m);
}
2004-06-10 19:55
曦薄远
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-6-10
收藏
得分:0 

是不是比你的简单多了

而且没有调用C语言提供的将字符串转换为整数的函数哟

我看你的就调用了

那是不合题意了

下面给出注释

2004-06-10 20:00
曦薄远
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-6-10
收藏
得分:0 

#include <stdio.h>/*因为要调用getchar(),必须连接头文件*/ main() { char a;/*这个变量用来接收字符*/ int m,d;/*m用来处理最后结果,d用来处理正负号*/ d=','-getchar();/*把‘+’和‘-’分别转化为-1和1,这两个字符恰好在‘,’的前后*/ m=0;/*m的初始化*/ a=getchar();/*接受第一个数字字符*/ while(a!='\n')/*以回车键作为结束的标志*/ { m=(m<<3)+(m<<1)+a-'0'; /*第一个括号里的是把m乘以8,第二个括号里的是把m乘以2*/ /*两者相加就是把m乘以10,而且比较快,相当于把十进制数m左移了一位*/ /*第三个括号里的是把数字字符转化为整数值*/ a=getchar();/*接收下一个字符*/ } printf("%d\n",d*m);/*输出最后结果*/ }

2004-06-10 20:23
c
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2004-6-9
收藏
得分:0 

多谢赐教,不过现在对比你我的程序,我有几点看法: 你的程序代码精简,比我的好,但有一点如果输入“1234”结果是错的,再有输入如“-1-23”这样的数也有错。我的代码多主要用于提示和条件判断上了。至于函数是自己写的啊。除了printf和scanf这两个


有志同道合者请加群:12133884 联系:Sonic.hu@
2004-06-10 21:41
曦薄远
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-6-10
收藏
得分:0 

你说的对

你以后可以把自己写的函数

和主函数之间空一行

就不会让人看混了

2004-06-11 14:38
曦薄远
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-6-10
收藏
得分:0 

光提示出错还不够

还要允许出错后重新输入

可以加上do-while语句

2004-06-11 14:48
dmshfut
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-7
收藏
得分:0 
#include <stdio.h>
main()
{ char a;
int m,d;
d=','-getchar();
m=0;
a=getchar();
while(a!='\n')
{ m=(m<<3)+(m<<1)+a-'0';
a=getchar();
} printf("%d\n",d*m);
}
我提出一些异议。比如你直接输入正数,如“123” 请不加“+”则答案为“-115”
不是理想的“123”
所以应该改进;
2006-11-08 16:39
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
请问下面的语句d=','-getchar();怎莫理解阿?
2006-11-08 17:22
快速回复:神啊!救救我啊!再做不出,我就要回家乡种田了!
数据加载中...
 
   



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

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