如何检查输入的字符是否为数字?
How to check if the entered character is a digit?
给定的任务是:
输入10个字符。对于输入的每个字符,相应的函数会打印它是否为数字 0-9。(如果有人担心我的 "gets()",我也会使用较旧的编译器,目标是在没有指针的情况下执行此操作。)
到目前为止,我尝试过类似的方法,但由于某种原因它不起作用:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char character[10][1];
char zero ='0';
char nine ='9';
int i;
printf("Enter 10 characters:\n");
for(i=0;i<10;i++){
gets(character[i]);
}
for(i=0;i<10;i++){
if(strcmp(character[i],zero)>=0 && strcmp(character[i],nine)<=0){
printf("%d. character '%c' is a digit.", i, character[i]);
}
else{
printf("%d. character '%c' is not a digit.", i, character[i]);
}
putchar('\n');
}
return 0;
}
我也试过了,但是不能正确输出字符:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char character[10][1], pom[10][1];
int num_character[10];
int i;
printf("Enter 10 characters:\n");
for(i=0;i<10;i++){
gets(character[i]);
strcpy(pom[i],character[i]);
num_character[i]=atoi(character[i]);
}
for(i=0;i<10;i++){
if(num_character[i]!=0){
printf("Character '%c' is digit.", pom[i]);
}
else{
printf("Character '%c' is not digit.", pom[i]);
}
putchar('\n');
}
return 0;
}
isdigit()
在我包含 ctype
header.
后也不起作用
你在这里做错了几件事,从不推荐使用 gets 并且 fgets 会将换行符放在最后。
strcmp 的语法是:
int strcmp(const char *s1, const char *s2);
您需要两个字符串作为 strcmp 中的输入,但您正在使用一个字符串和一个字符。
这里,使用字符数组比使用二维数组更好
#include <stdio.h>
int main(void)
{
char character[10]; //a simple character array
char zero ='0';
char nine ='9';
int i;
printf("Enter 10 characters:\n");
for(i=0;i<10;i++){
scanf(" %c", &character[i]); //scan characters
}
for(i=0;i<10;i++)
{
if(character[i] >= zero && character[i] <= nine) //print
printf("%d. %c is a digit \n", i+1, character[i]);
else
printf("%d. %c is not a digit \n", i+1, character[i]);
}
}
给定的任务是:
输入10个字符。对于输入的每个字符,相应的函数会打印它是否为数字 0-9。(如果有人担心我的 "gets()",我也会使用较旧的编译器,目标是在没有指针的情况下执行此操作。)
到目前为止,我尝试过类似的方法,但由于某种原因它不起作用:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char character[10][1];
char zero ='0';
char nine ='9';
int i;
printf("Enter 10 characters:\n");
for(i=0;i<10;i++){
gets(character[i]);
}
for(i=0;i<10;i++){
if(strcmp(character[i],zero)>=0 && strcmp(character[i],nine)<=0){
printf("%d. character '%c' is a digit.", i, character[i]);
}
else{
printf("%d. character '%c' is not a digit.", i, character[i]);
}
putchar('\n');
}
return 0;
}
我也试过了,但是不能正确输出字符:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char character[10][1], pom[10][1];
int num_character[10];
int i;
printf("Enter 10 characters:\n");
for(i=0;i<10;i++){
gets(character[i]);
strcpy(pom[i],character[i]);
num_character[i]=atoi(character[i]);
}
for(i=0;i<10;i++){
if(num_character[i]!=0){
printf("Character '%c' is digit.", pom[i]);
}
else{
printf("Character '%c' is not digit.", pom[i]);
}
putchar('\n');
}
return 0;
}
isdigit()
在我包含 ctype
header.
你在这里做错了几件事,从不推荐使用 gets 并且 fgets 会将换行符放在最后。
strcmp 的语法是:
int strcmp(const char *s1, const char *s2);
您需要两个字符串作为 strcmp 中的输入,但您正在使用一个字符串和一个字符。
这里,使用字符数组比使用二维数组更好
#include <stdio.h>
int main(void)
{
char character[10]; //a simple character array
char zero ='0';
char nine ='9';
int i;
printf("Enter 10 characters:\n");
for(i=0;i<10;i++){
scanf(" %c", &character[i]); //scan characters
}
for(i=0;i<10;i++)
{
if(character[i] >= zero && character[i] <= nine) //print
printf("%d. %c is a digit \n", i+1, character[i]);
else
printf("%d. %c is not a digit \n", i+1, character[i]);
}
}