c语言 求帮忙解决指针相关问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:53:05
代码如下
#include<stdio.h>
#include<stdlib.h>
int check();
while(1)
{
num=check();
if(num!=-1)
{
if(!(num<0||num>11))
break;
else
printf("您的选择错误,请重新输入:");
//scanf("%d",num);
}
else
printf("您的选择错误,请重新输入:");
}
int check()
{
int num;
char a[20];
char *p;
p=a;
printf("请输入您的选择:");
scanf("%s",p);
while(*p!='\0')
{
if(!((*p)>='0'&&(*p)<='9'))//此处的用处是用非语句判断指针p指向的a[]中的字符串是否是数字0到9
return (-1); //非法输入非数字则所有值返回-1;
else
p++;
}
num=atoi(p);
return num;
}
现在出现一个问题,如果我输入字母,比如是a、ab、a23、1da等都是属于属于错误,输入数字比如5、6等的时候它就直接跳到最后去了!~请帮忙解决!
我这里只是采取其中一部分,main函数是包括了while那条语句的是了!

主函数呢??
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int num;
void part5();
int check();
while(1)
{
num=check();
if(num!=-1)
{
if(!(num<0||num>11))
break;
else
printf("您的选择错误,请重新输入:");
scanf("%d",num);
}
else
printf("您的选择错误,请重新输入:");
}

////////////////这个是我要去的部分,如果选择是5,肯定是到case5来了!但是~~~~,跑的结果你应该看到了!
switch(num)
{
case 5:
printf("您的选择是%d,请选择您所需要的几号测试工程师的薪水?\n",num);
part5();break;
}

}
////////////////////////////
int check()
{
int num;
char a[20];
char *p;
p=a;
printf("请输入您的选择:\n");
scanf("%s",p);
while(*p!='\0')
{
if(!((*p)>='0'&&(*p)<='9')