1508字符串转换成整数

题目描述:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

输入:

输入可能包含多个测试样例。
对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000)。

输出:

对应每个测试案例,
若输入为一个合法的字符串(即代表一个整数),则输出这个整数。
若输入为一个非法的字符串,则输出“My God”。

样例输入:
5
-5
+8
样例输出:
5
-5
8
 
  
 
  
代码如下:先根据第一个字符记录下是正数还是负数,或者直接是非法输入用flag变量记录下来。然后遍历后面的字符,转换成整数,如果遇到非法字符,则用flag变量记录下来。
#include <stdio.h>
#include <stdlib.h>
int main(){
	
	int n,num;
	int flag,isNegtive;
    char input[100];
    char *p;
    while(scanf("%s",input)!=EOF){
    	 p=input;
    isNegtive=flag=num=0;
	if(*p=='+'){
		  p++;
		  isNegtive=0;
	}
	else if(*p=='-'){
		 p++;
		 isNegtive=1;
		else if(*p!='+'&&*p!='-'&&!(*p>='0'&&*p<='9'))   
	   flag=1;
	   
	 while(*p!='\0'){
 		if(*p>='0'&&*p<='9'){
		 	num=num*10+(*p-'0');
		 	p++;
		 }
 		   
 		else{
		 	 flag=1;
		 	 break;
		 }
		    
 	}     
	 if(flag==1)
	    printf("My God\n");
	 else if(flag==0&&isNegtive==0)
	   printf("%d\n",num); 
	 else if(flag==0&&isNegtive==1)
	   printf("%d\n",0-num);
	   
    
    }
    	
   
    
      
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值