当前位置: 代码迷 >> C语言 >> [求助] 神啊!救救我啊!再做不出,我就要回家乡种田了!
  详细解决方案

[求助] 神啊!救救我啊!再做不出,我就要回家乡种田了!

热度:432   发布时间:2004-06-09 19:31:00.0
[求助] 神啊!救救我啊!再做不出,我就要回家乡种田了!

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

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

搜索更多相关的解决方案: 家乡  种田  

----------------解决方案--------------------------------------------------------

嗯,你还是回去吧~~~


----------------解决方案--------------------------------------------------------

用队列的知识做(即先进先出的方法FIFO)

用isdigit判断(在库函数ctype 里)是否是数字......分两部分,小数点前和后的分开讨论~~~

如:-1234.5=flag*(1*10^3+2*10^2+3*10^1+4*10^0+5*(1.0/10^1)

这样具体实现?自己想想~~~~


----------------解决方案--------------------------------------------------------

不知还有什么有错误码,可算是弄完了

#include <stdio.h> main() { char str[10]; char *p=NULL; long number=0; long change(char *,int); int count=0; printf("end of 'z':"); scanf("%s",str); p=str; while(*(p++)!='z') {count++;} number=change(str,count); printf("integer:%d\n",number); } long change(char *ptr,int n) { int i;char *t=ptr; long dec=0,dec1=*ptr-48; for(i=1;i<n;i++) {dec*=10; dec+=*(ptr+i)-48; dec1*=10; } if(*t==45) return -dec; else if(*t==43) return dec; else return dec1+dec; }


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

谢谢你们!

我运行了你们的程序,第一条好象行不通,下面一条可以行,但是名字为"C"的朋友你可以帮我每行程序后加些注释吗?我看不懂.

我还有一个题不懂:找出1000以所有的二进制对称数.


----------------解决方案--------------------------------------------------------
  相关解决方案