/* 时间:2014.2.11 目的:题目1508:把字符串转换成整数ac.jobdu.com/problem.php?pid=1508 */ #include <stdio.h> int main() { char str[10]; int i, flag, ans, f, ff; while(~scanf("%s", str)) { f = ff = ans = flag = 0; if(str[0] == ‘-‘) flag = 1;//1为负数 else if(str[0] == ‘+‘) flag = 0;//0为正数 else if(str[0] >= ‘0‘ && str[0] <= ‘9‘) { flag = 0; ff = 1;//为了使有正负好的数跳过+-,如+5,直接从5开始检查,而7则直接从0检查 } for(i = 0; str[i]; ++i) { if(!ff) {i++;ff = 1;} if(str[i] >= ‘0‘ && str[i] <=‘9‘) ans = ans * 10 + str[i] - ‘0‘; else { f = 1;//非法字符跳出 break; } } f&&printf("My God\n"); !f&&flag&&printf("-%d\n",ans);//输出负数 !f&&!flag&&printf("%d\n",ans);//输出正数 } return 0; } /* -------------- -00055 思路:1.一位一位剥离,若非法则跳出,注意第一位是否有正负号 -55 2.注意开头为0的数 00055 55 +888 888 55 55 -55 -55 -------------- */
#include <stdio.h>//这个代码是第一遍写的,实在是垃圾至极,做个纪念吧。。。 char str[10]; int main() { int i, flag, f, tempo, cnt; while(~scanf("%s", str)) { flag = 0;//表示正的 f = 0; tempo = 0; cnt = 0; for(i = 0; str[i]; i++) { if((i == 0) && (str[i] == ‘-‘)) { flag = 1;//表示负的 cnt++; continue; } else if((i == 0) && (str[i] == ‘+‘)) { cnt++; continue; } if((i == 1 || i == 0) && str[i] == ‘0‘ && tempo == 0) cnt = i; if(str[i] < ‘0‘ || str[i] > ‘9‘) { f = 1; break; } if(str[i] > ‘0‘) tempo = 1; if(tempo == 0) cnt++; } if(!f) flag?printf("-%s\n",&str[cnt]):printf("%s\n",&str[cnt]); else printf("My God\n"); } return 0; }
原文:http://blog.csdn.net/z_x_b5/article/details/19078825