c语言问题求教 利用函数判断字符串中是否全为数字

#include "string.h"
#include "stdafx.h"
#define n 100
int main(int argc, char* argv[])
{
printf("*******************第八单元 函数 判断一串字符串是否全为数字*********************");
char a[n];
int isnumber(char a[n]);
printf("请输入一串字符串:\n");
scanf("%s",&a[n]);
isnumber( a[n]);
printf("Hello World!\n");
return 0;
}
int isnumber(char a[n]){
int c=0;
int i =0;
while(c<=9&&c>=0){
c = a[i];
i++;
}
if (i =(strlen(a[n])-1)){
printf("全为数字");
}
else{
printf("不全为数字");
}
return 0;

}
error C2065: 'strlen' : undeclared identifier
执行 cl.exe 时出错.
error C2664: 'isnumber' : cannot convert parameter 1 from 'char' to 'char []'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

//在VC下调试的正确结果
#include <string.h>   //strlen()需要的头文件
#include<stdio.h>
//#include "stdafx.h"
#define n 100
int main(int argc, char* argv[])
{
printf("*******************第八单元 函数 判断一串字符串是否全为数字*********************");
char a[n];
int isnumber(char a[n]);
printf("请输入一串字符串:\n");
scanf("%s",a); //输入字符串,给定首地址就行,a表示字符数组首地址
isnumber( a);  //实参,数组实参给首地址
printf("Hello World!\n");
return 0;
}
int isnumber(char a[n]){
int len = strlen(a);
int j =0;
for(int i =0;i<len;i++)  //遍历整个字符串
{
if(a[i]<=57&&a[i]>=48)  //0~9的ASCII码是48~57
{j++;}  //找到数字了就数量++
}
//数字总数和字符串长度一样,则全是数字,总数为0,则都不是数字,在0~len之间则有部分是数字
if (j==len){   
printf("全为数字");
}
else if(j == 0){printf("全不为数字");}
else{
printf("不全为数字");
}
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-23
问题比较多 修改如下
供参考
有哪里不明白请追问

#include "string.h"
#include "stdafx.h"

#define n 100
int main(int argc, char* argv[])
{
printf("*******************第八单元 函数 判断一串字符串是否全为数字*********************");
char a[n];
int isnumber(char a[n]);
printf("请输入一串字符串:\n");
scanf("%s",a);//用a即可 &a[n]是越界后第一个存储区间地址
isnumber( a);//同理
printf("Hello World!\n");
return 0;
}
int isnumber(char a[n]){
int i =0;
while(a[i] && a[i]<='9'&&a[i]>='0'){
i++;
}
if (i ==(strlen(a))){//判断用==
printf("全为数字\n");
}
else{
printf("不全为数字\n");
}
return 0;
}追问

请问定义的函数里面:while循环里为什么有一个a【n】啊?谢谢啦

追答

while循环里面是a[i]
判断a数组中第i个元素的值

第2个回答  2013-07-23
你这都搞不清a和a[n]的区别,一个是char*,一个是char。主函数里调用isnumber传参数改为a,isnumber函数定义时,括号里面参数改为char *a,还有strlen(a)求字符串长度。
第3个回答  2013-07-23
#include "string.h"
#include "stdio.h"
#define n 100
int main(int argc, char* argv[])
{
printf("*******************第八单元 函数 判断一串字符串是否全为数字*********************");
char a[n];
int isnumber(char a[n]);
printf("请输入一串字符串:\n");
scanf("%s",a);//想要将输入字符串存储在数组a中,用a作为后面的参数就行,它即表示一个地址。
isnumber( a);
printf("Hello World!\n");
return 0;
}
int isnumber(char a[n])
{
int c=0;
int i =0;
while(c<=9&&c>=0)
{
c = a[i];
i++;
}
if (i =(strlen(a)-1))//strlen求得一个字符串的长度,参数为一个字符串地址,所以要用a,a[n]是数组的第一个字符
{
printf("全为数字");
}
else
{
printf("不全为数字");
}
return 0;
}追问

那为什么strlen这个函数没法使用呢?

追答

#include "string.h"
#include "stdio.h"
int isnumber(char *a);
#define n 100
int main(int argc, char* argv[])
{
printf("*******************第八单元 函数 判断一串字符串是否全为数字*********************");
char a[n];
printf("请输入一串字符串:\n");
scanf("%s",a);//想要将输入字符串存储在数组a中,用a作为后面的参数就行,它即表示一个地址。
isnumber(a);
printf("Hello World!\n");
return 0;
}
int isnumber(char *a)
{
int c=a[0];
int i =1;
printf("%d\n",strlen(a));
while(c='0')
{
c = a[i];
i++;
}
if (i == (strlen(a)+1))//strlen求得一个字符串的长度,参数为一个字符串地址,所以要用a,a[n]是数组的第一个字符
{
printf("全为数字\n");
}
else
{
printf("不全为数字\n");
}
return 0;
}

补充回答,刚才那个发现逻辑不对,得到的结果不符合逻辑,修改了下

用C语言,怎么样判断一个字符串是不是纯数字
可以利用字符的ASCII,数字的ASCII是连续的,从‘0’到‘9’是一次递增1的。判断字符是否是数字可以这么写 ch>='0'&&ch<='9'

判定一个字符串是否为数字(C语言)
为了判定一个字符串是否为数字在C语言中,我们有两个方法可以选择,分别是strspn和strlen组合,或者isdigit函数。使用strspn和strlen组合的方法,首先调用strspn函数获取字符串中包含数字的个数,然后使用strlen函数获取字符串的长度。如果这两个数值相等,即说明字符串中的内容全部都是数字,否则则存在非数字字...

c语言如何检验一个字符串是否为数字构成,字符串长度已经定好是四位...
\/\/判断条件strlen(s) == 4检查字符串长度是否为4 \/\/判断条件isdigit(s[0])排除首字母非数字(为空白字符)的可能 \/\/判断条件sscanf(s, "%d%c") == 1确定由字符串开始处能读入一个整型值(即字符串前段为数字),且读入一个整型后已遍历整个字符串(因为%c)尝试读入字符失败。} else { \/...

C语言:如何判断输入的是数字还是其他字符
1、可以用sacnf或gets函数直接接收输入的字符串,然后用循环遍历字符串中每一个字符,判断其是字母还是数字。2、可以用循环调用getch()或getchar()函数来一个一个字符的接收输入,同时判读输入的是字母还是数字。至于怎么判读是字母还是数字,很简单,假设字符c,满足 (c>='a'&& c<='z')|| (c>=...

如何用c语言判断字符串是否是整数?
1、挨着判断每个字符的ASCII值是否在0~9之间。2、例程:include <string.h> \/\/strlen()需要的头文件#include<stdio.h>\/\/#include "stdafx.h"#define n 100int main(int argc, char* argv[]){printf("***第八单元 函数 判断一串字符串是否全为数字***");char a[n];int isnumber(char...

c语言中如何判断用户输入的字符串是指定范围的数字
可以通过遍历字符串中每一个字符,利用asc码来判断是否是数字及数字的值。我写的一个简单的程序,包含将字符串形式的整数,识别及转换。你参考吧。include <stdio.h>#include <string.h>int strToNum(char *str);int isNum(char *str);int p10(int m);int main(){ char str[10]; whil...

在C语言中如何判断输入的内容为整数!!! 本人定义的是整型,想让当输入其...
先使用scanf把输入放到一个字符串str,然后对字符串str使用sscanf,判断sscanf的返回值 char str[1024];scanf("%s", str);int a;char tmp[1024];\/\/用来放垃圾 if(1 == sscanf(str, "%d%s", a, tmp)){ printf("是一个整数\\n");} ...

编写函数,判断指定的字符是否是数字字符,如果是返回1否则返回0
1、C语言中字符是使用char来定义的,使用关系运算符(>,<,=)即可对字符进行比较。2、在编译器中定义a、b两个字符型变量,并为其赋值。3、运行代码后,我们可以得到如图所示结果。1表示条件为真,0表示条件为假。4、字符串使用char[]来定义,可以使用strcmp()来判断大小,也可以使用关系运算符(...

C语言输入函数scanf判断输入是否为数值问题!
“那如果换成%s%c时输入字符他是不是也和输入数值时一样会判断是否为字符,如果输入的不是字符也和上面一样就停止了呢?”:原理上是这样,但是占位符为“%s”时,你可以输入任意字符,因为你键盘上输入的任意字符都可以被匹配为“%s”,一串数字也可以是字符串。

C语言如何判断一个字符是否是数字?
break; case 'A': ... break; default:break;}需要声明一下,由于char本身就是数字,所以是可以使用switch的,但是不要妄图通过switch来判断字符串变量(char[])这是不可行,虽然你可能在其他的高级语言中看到过这种用法,但是在C中是不能运行的。

相似回答