首先,如果问题没有意义,我道歉,因为我的英语不太好......
我的问题是,我们如何根据用户输入打印出不同的内容? 我要做的是:当用户输入整数时,程序打印出输入的数字。当用户输入非整数的东西(如符号和字符)时,程序会输出“非整数”。
我目前的想法(伪代码)如下:
`int main(){
int value;
printf("Enter numbers");
scanf("%d", &value);
if(value is integer){
printf("%d", value);
} else {
printf("not integer");
}
return 0;
}`
什么让我得到的是scanf;通过使用%d,我假设用户将输入一个整数值,但用户可以输入非整数的值,因此我无法使用if语句if( value is integer)
进行比较。如何进行比较以确定输入的值是否为整数?
答案 0 :(得分:0)
我不知道这是不是一件好事。
您可以使用ASCII来检查输入类型是否为整数 (ASCII格式为48-57之间)
就像这样
char value;
int flag = 0; //to check true or false (0 means false, and 1 means true)
printf("Enter numbers");
scanf("%c", &value);
for(int i = 48; i <= 57; i++){
if(value == i){
flag = 1;
break;
}
}
if(flag == 1){
printf("%c", value);
} else {
printf("not integer");
}
答案 1 :(得分:0)
如何根据用户输入打印不同的内容?
步骤1:阅读用户输入的行
char buf[100];
if (fget(buf, sizeof buf, stdin)) {
// something was entered
第2步:测试字符串
char *end;
long value = strtol(buf, *end);
// If the end is the same as the beginning, no conversion occurred.
if (end == buf) {
puts("not integer");
}
printf("%ld\n", value);
}
}
其他代码可以查找整数后发生的输入。此外,代码可以测试溢出long
范围的大量数据。
答案 2 :(得分:0)
代码如下。它适用于输入负数和十进制数等不同情况:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char input[20];
int wrongFlag = 0;
scanf("%s", input);
if (input[0] == '0' && strlen(input) > 1) {
wrongFlag = 1;
//for number starts with 0, and string length>1 eg: 010
}
for (int i = 0; i < strlen(input); i++) {
if (i == 0 && (input[i] == '-' && strlen(input) > 2 && input[i + 1] == '0')) {
//check first round only: negative number with length >2 and starts with 0 eg: -010.
wrongFlag = 1;
continue;
}
if (i != 0 && !isdigit(input[i])) {
//check following rounds, check if it is not digit
wrongFlag = 1;
break;
}
}
if (wrongFlag) {
printf("Not integer");
}
else {
printf("integer");
}
return 0;
}
答案 3 :(得分:0)
试试这个对我有用。
#include<stdio.h>
#include<string.h>
int main()
{
int i;
char value[50];
int len;
printf("Enter maximum 50 digits\n");
/* enter the values you wanted*/
printf("Enter the value: ");
gets(value);
len = strlen(value);
/*it will iterate upto the end of the user input*/
for(i=0;i<len;i++)
{
if(48<value[i] && value[i]<=57)
{
if(i==(len-1))
printf("It's an integer");
}
else{
printf(" Not an integer");
break;
}
}
return 0;
}