怎样输出负数啊
输入一个以回车结束的字符串(少于80个字符),将其中第一次出现的连续的数字字符(0..9)转换为整数,遇到非数字字符则停止。输入
输入一个以回车结束的字符串(少于80个字符)。
输出
将其中第一次出现的连续的数字字符(0..9)转换为整数,遇到非数字字符则停止。
例如:输入字符串:“x+y = 35+x+9”,则输出的整数是35。
这是报错
Expected | Yours
0 / -1390
==============================
=================
Expected | Yours
35 / 410
#include <stdio.h>
#include <string.h>
int main() {
char str1,str2;
int i;
int num=0;
int j=0;
gets(str1);
int len=strlen(str1);
for(i=0; i<len; i++) {
if(str1>='0'&&str1<='9') {
str2=str1;
j++;
if(str1<'0'||str1>'9'&&str1=='-')
break;
}
}
for(i=0; i<strlen(str2); i++) {
num=num*10+str2-'0';
}
printf("%d",num);
}
本帖最后由 jackz007 于 2021-12-4 21:53 编辑
#include <stdio.h>
int main(void)
{
char c ;
int d , n ;
for(d = n = 0 ; (c = getchar()) != '\n' ;) {
if(c >= '0' && c <= '9') {
n = n * 10 + c - '0' ;
d ++ ;
} else {
if(d) break ;
}
}
if(d) printf("%d\n" , n) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
x+y = 35+x+9
35
D:\00.Excise\C> #include <stdio.h>
#include <string.h>
int main()
{
int res = 0, flag = 0, sign = 1;
char str;
scanf("%[^\n]s", str);
int n = strlen(str);
for(size_t i = 0; i < n; i++){
if(str >= '0' && str <= '9'){
res *= 10;
res += str-48;
if(str == '-') sign = -1;
flag = 1;
}
else if (flag) break;
}
printf("%d", res*sign);
return 0;
}
页:
[1]