33,323
社区成员




#include "iostream"
using namespace std;
enum {efloat, eint, notnum };
int check(const char str[]) {
int dot = 0;
for (size_t i = 0; i < strlen(str); ++i) {
if (!isdigit(str[i])) {
if (str[i] == '.') {
++dot;
if (dot > 1)
return notnum;
} else {
return notnum;
}
}
}
if (dot == 1)
return efloat;
return eint;
}
int main()
{
double d = 0.0;
int n = 0;
char t[128];
bool bcontinue = true;
while (bcontinue) {
cin>>t;
switch (check(t)) {
case efloat :
d = atof(t); // 转成double
cout<<"is float "<<d<<endl;
break;
case eint :
n = atoi(t); // 转成int
cout<<"is int "<<n<<endl;
break;
default :
bcontinue = false;
break;
}
}
return 0;
}
#include <stdio.h>
int main()
{
char str[20];
int flag = 0;
int v;
flag = 0;
scanf("%s",str);
for(int i = 0; str[i] != '\0'; ++i)
{
if(!(str[i] >= '0'&&str[i] <= '9'))
{
flag = 1;
break;
}
}
if(flag == 0)
{
sscanf(str,"%d",&v);
printf("%d is integer\n",v);
}
else
printf("%s is not integer",str);
return 0;
}
随便写了下,你参考下吧
#include "iostream"
using namespace std;
enum {efloat, eint, notnum };
int check(const char str[]) {
int dot = 0;
for (size_t i = 0; i < strlen(str); ++i) {
if (!isdigit(str[i])) {
if (str[i] == '.') {
++dot;
if (dot > 1)
return notnum;
} else {
return notnum;
}
}
}
if (dot == 1)
return efloat;
return eint;
}
int main()
{
double d = 0.0;
char t[128];
bool bcontinue = true;
while (bcontinue) {
cin>>t;
switch (check(t)) {
case efloat :
cout<<"is float"<<endl;
break;
case eint :
cout<<"is int"<<endl;
break;
default :
bcontinue = false;
break;
}
}
return 0;
}
--------
测试
1
is int
123123
is int
1.123123
is float
1.00000000000000000000001
is float
1.0
is float
1
is int
a
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
float result = 0;
int x;
char input[100],c = 'n';
while( scanf("%s", input) )
{
sscanf(input, "%d%c", &x, &c);
if(c == '.')
{
cout << input << " is not a int." << endl;
sscanf(input, "%f", &result);
cout << "The input is set to result: " << result << endl;
c = 'n';
}
else
cout << input << " is a int" << endl;
}
system("pause");
return 0;
}
#include <stdio.h>
int main()
{
double x = 0.f;
while (scanf("%lf", &x) == 1) {
if (x == (int)x)
printf("is int\n");
else
printf("is not int\n");
}
return 0;
}
在double精度内有效
--------
测试
1
is int
2
is int
1.1
is not int
1.00000000001
is not int
1.0000123123000123
is not int
12323123.000
is int
a
#include <stdio.h>
int main()
{
float x = 0.f;
scanf("%f", &x);
if (x == (int)x)
printf("is int\n");
return 0;
}