点击打开链接
/*
时间: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;
}