c语言问题求教 利用函数判断字符串中是否全为数字
#include"string.h"#include"stdafx.h"#definen100intmain(intargc,char*argv[]){printf("*...
#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 展开
#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 展开
4个回答
推荐于2018-03-29
展开全部
//在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;
}
展开全部
问题比较多 修改如下
供参考
有哪里不明白请追问
#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;
}
供参考
有哪里不明白请追问
#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个元素的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这都搞不清a和a[n]的区别,一个是char*,一个是char。主函数里调用isnumber传参数改为a,isnumber函数定义时,括号里面参数改为char *a,还有strlen(a)求字符串长度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
补充回答,刚才那个发现逻辑不对,得到的结果不符合逻辑,修改了下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询