C语言 ——如何判断输入的是数值以外的其它数

作者&投稿:明叶 (若有异议请与网页底部的电邮联系)
c语言"判断数值为空"的问题~

C语言中不存在空值的情况,所谓的NULL是人为(或某些编译器)定义的一个常量,常见的是 #define NULL (0)的情况,而这个0只是赋给一个指针,即让指针初始化为内存的0地址,我们称其为空地址(或指针值为空),但实际上,C语言中所有的变量都是保存到内存中的,其值就是其所在内存单元中保存的一个数,而内存单元中只要上电,就一定会存在数据(随机数,或特定的数据)。我们不能称值为0的变量为空,因为0也是一个数据。

用sprintf是可以的,代码如下:
#include #include int IsSymmetric(int num){ int i, n=0, tmp=num; while(tmp) { tmp=tmp/10; n++; } char *buf = (char*)malloc(n+1); sprintf(buf,"%d",num); for(i=0; i<n/2; i++) { if(buf[i]!=buf[n-i-1]) return 0; } return 1;}int main(){ int num=-1; while(num<0) { printf("请输入一个非负整数:
"); scanf("%d",&num); } if(IsSymmetric(num)) printf("%d 是对称数
", num); else printf("%d 不是对称数
", num);} 也可以用以下方法:
int IsSymmetric(int num){ int reverse_of_num=0, n=0, tmp=num; while(tmp) { reverse_of_num = reverse_of_num*10 + tmp%10; tmp=tmp/10; } if(reverse_of_num==num) return 1; else return 0;}

楼主你的程序逻辑也太混乱了吧:
while(a>100||a<0)就是说a>100或a<0这个循环才执行,既然这样那么接下来的一句
if(a<100||a>0)怎么可能发生?因为a>100或a<0时while才执行嘛!还有既然switch()语句放在while(a>100||a<0)大循环内,那么a/10或者大于10或者小于0,不可能等于10、9、8、7、6,程序总是执行switch()中的default
:printf("您的成绩等级是—?—……检讨~!");
这是什么逻辑呀!
scanf()和printf()函数都有返回值且都是整型量。scanf()的返回值是scanf()函数正确接受到的对应型号数的个数。比如
int
i,a,b,c;
i=scanf("%d%d%d",&a,&b,&c);
如果输入1_@_100,则i=2;如果输入12_100_-1,则i=3;如果输入@_w_A,则i=0.
本题的一个完整的c程序如下,已在win-tc和Dev-c++下调试通过。
#include
"stdio.h"
#include
"stdlib.h"
#include
"conio.h"
main()
{
int
a;
printf("欢迎使用成绩等级判定系统,请输入您的成绩:");
loop:
while
(scanf("%d",&a)
==
1)
/*如果输入的是一个整型数据,那么向下执行,否则程序退出*/
{
while
(a>100||a<0)
{
printf("您的输入有误!请重新输入:\n");
goto
loop;
}
switch(a/10)
{
case
10
:printf("您的成绩等级是—S—继续保持~!");break;
case
9
:printf("您的成绩等级是—A—继续加油~!");break;
case
8
:printf("您的成绩等级是—B—继续努力~!");break;
case
7
:printf("您的成绩等级是—C—赶快拼搏~!");break;
case
6
:printf("您的成绩等级是—D—别放弃咯~!");break;
default
:printf("您的成绩等级是—?—……检讨~!");
}
getch();
return;
}
}
不用goto语句的完整程序如下,已运行通过:
#include
"stdio.h"
#include
"stdlib.h"
#include
"conio.h"
main()
{
int
a;
printf("欢迎使用成绩等级判定系统,请输入您的成绩:");
while
(scanf("%d",&a)
==
1)
/*如果输入的是一个整型数据,那么向下执行*/
{
if
(a>100||a<0)
{
printf("您的输入有误!请重新输入:\n");
continue;
}
switch(a/10)
{
case
10
:printf("您的成绩等级是—S—继续保持~!");break;
case
9
:printf("您的成绩等级是—A—继续加油~!");break;
case
8
:printf("您的成绩等级是—B—继续努力~!");break;
case
7
:printf("您的成绩等级是—C—赶快拼搏~!");break;
case
6
:printf("您的成绩等级是—D—别放弃咯~!");break;
default
:printf("您的成绩等级是—?—……检讨~!");
}
getch();
return;
}
}

scanf 送返的数,是成功地读入的数的个数。
例如:
k = scanf("%d %f",&a,&b);
成功读入2个数, k 得 2
成功读入1个数, k 得 1
一个都没成功读入,k 得 0

你的情况
int k,a;
k = scanf("%d",&a);
k 得 1,表示成功读入a个数
k 得 0, 表示没成功读入,也就是“是数值以外的”内容。

/* Note:Your choice is C IDE */
#include "stdio.h"

main()
{

int a;
printf("欢迎使用成绩等级判定系统,请输入您的成绩:\n");
scanf("%d",&a);/*输入个数值给A*/

while(a>100||a<0)
{
if(a<100||a>0)
{printf("您的输入有误!请重新输入:\n");}

scanf("%d",&a);
}

switch(a/10)
{
case 10 :printf("您的成绩等级是—S—继续保持~!");break;
case 9 :printf("您的成绩等级是—A—继续加油~!");break;
case 8 :printf("您的成绩等级是—B—继续努力~!");break;
case 7 :printf("您的成绩等级是—C—赶快拼搏~!");break;
case 6 :printf("您的成绩等级是—D—别放弃咯~!");break;
default :printf("您的成绩等级是—?—……检讨~!");
}
}

1.你在提示重新输入后应该跳出while
2.用char接收输入,根据ascii码来确定是否是数字

scanf函数是有返回值的,若输入的类型匹配则返回1,否则返回0
如:a=scanf("%d",&n),如果你输入的不是整数,则a=0
do you known how to do...


策勒县15713874442: c语言中如何怎么判断输入的是数字 -
雕郊舒利: 随手写了一个,下面有解释. #include <stdio.h>#include <string.h>void main(){int a,i;char str[100];scanf("%s",str);a=strlen(str);for(i=0;i<a;i++)if (str[i]>'9' || str[i]<'0'){printf("不是数字");break;}if (i==a)printf("是数字");} ...

策勒县15713874442: C语言中如何实现验证输入的是否为数字? -
雕郊舒利: 先按字符串输入,然后对字符串进行检查,判定是否符合条件,若符合条件,则转为数值输出.代码如下: #include #include #include int chk_data( char *num ) { int i; for( i=0;num[i];i++ ) { if ( num[i] >'9'|| num[i] <'0' ) //只要有非数字,就返回错误 ...

策勒县15713874442: 我是一个自学新手,我想问下在C语言里面怎么判定输入的是字符还是数字? -
雕郊舒利: 可以if语句判断.例如判断是不是数字,可以用下面这条if语句判断 if('0'<=ch && ch<='9') printf("ch is digit\n"); 此外,提醒一下,数字也是字符.你说的是判断是字母还是数字吧?如果想判断是不是字母,这么判断: if(('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z'))printf("ch is alphabet“);

策勒县15713874442: C语言 如何判断输入的是数字还是字符 -
雕郊舒利: 你这个程序与“输入的是字符还是数字”没有关系. 关键是不能用double类型的r与0直接这样进行比较:r!=0应该像下面这样写: const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式.

策勒县15713874442: c语言编程如何区分输入的是数字 -
雕郊舒利: 可以这样.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16#include <stdio.h> intmain(void) {charch;while(1){ch=getchar();if(ch>'0'&& ch <'9'){getchar();printf("next\n");}elsebreak;}return0; 如果你要求输入一个字符串,然后判断是不是...

策勒县15713874442: C语言中怎么写判断输入是一个数,而不是字符等 -
雕郊舒利: 就当做字符输入 scanf("%c",&ch); if(ch>='0'&& ch<='9') { printf("输入的是数字,值是%d\n",ch-'0'); } else if(ch>='a'&& ch<='z') {printf("输入的是小写字母); } else if(ch>='A'&& ch<='Z') {printf("输入的是大写字母); }

策勒县15713874442: c语言如何验证输入的是字母还是数字 -
雕郊舒利: //输入非数字以及不符合条件时重新输入. #include <stdio.h> #include <math.h>void main(void) { long a,b,c,h,l,x1,x2;int i,j,k; while(1){printf("Please input data a:\n");i=scanf("%d",&a);if(i==0)getchar();while(i==1){printf("Please ...

策勒县15713874442: C语言如何判断输入的字符串中是否含有数字 -
雕郊舒利: C语言只有扫描了,例如:char s[]="判断有没有数字123"; char *p; int have=0; p=s; while(*p && ! have){ if (*p>='0' && *p<='9') have=1; p++; } puts(have?"有数字":"没数字");

策勒县15713874442: C语言中如何判断输入是否是数字(并非0到9) -
雕郊舒利: 这个程序不难写,我告诉你思路和算法,你根据这个编写代码就可以了.1.由于你输入的这一串数据可能都为数字,也可能包含其它字符,所以首先用一字符数组存放这个字符串.2.用strlen函数计算这个字符串的长度,在此基础上借助for循环或while循环实现数组元素的遍历.3.遍历每一个元素的同时用if语句判断这个元素的ASCII码所在的范围是否在48~57之间,如果不在则中止循环,输出判断结果(即不是数字).4.如果最后一个元素仍然是数字,则整个字符串则为一个大数.

策勒县15713874442: C语言如何判断,输入的是数字.如果不是则输出重新输入的信息. 如不能输入12B. 25L只 -
雕郊舒利: 用gets读行,然后对每一个字符分析,如果都是数字,再把字符串转换为数值类型.代码如下所示:#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <string.h> int main() { char str[10]; int bad_flg = 0; //输入错误 do { printf("请...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网