上机题,检测电话号码

一开始写的:


#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define LENGTH 13

int verifyMsisdn(char *inMsisdn)
{
	int i,count=0;
	for(i=0;i<13;i++)
	{
		if(inMsisdn[i]!='\0')
			count++;
	}
	if(count!=13)
		return 1;
	if(inMsisdn[0]!='8'||inMsisdn[1]!='6')
		return 3;
	for(i=0;i<13;i++)
	{
		if(inMsisdn[i]>'9'||inMsisdn[i]<'0')
			return 2;
	}
	return 0;


}

int main()
{
	char *pchar=NULL;
	int result;
	unsigned char ichar=2;
	//printf("%c\n",ichar);
	switch (ichar)
	{
	case 0:
		pchar="86123456789";
		break;
	case 1:
		pchar="8611111111111";
		break;
	case 2:
		pchar="86s1234567890";
		break;
	default:
		break;

	}
	result=verifyMsisdn(pchar);

	printf("result is %d\n",result);
}

后来又写了一个,感觉简洁多了,而且让我知道,程序遇到return之后就会给主调函数返回值,后面的程序就不会执行了。


#include <stdio.h>
#include <string.h>
		int verifyMsisdn(char *num)
	{
		int i;
		if (strlen(num)!=13)
			return 1;
		for (i=0;i<13;i++)
		{
			if (num[i]<'0' ||num[i]>'9')
				return 2;
		}
		if(num[0]!='8' || num[1]!='6')
			return 3;
		return 0;
	}
	void main()
	{
		int i;
		char id[20];
		printf("please input a phone number:\n");
		scanf("%s",id);
		i=verifyMsisdn(id);
		printf("%d\n",i);
	}

别人的答案:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define LENGTH 13

int verifyMsisdn(char *inMsisdn)
{
	char *pchar=NULL;
	assert(inMsisdn!=NULL);
	if(LENGTH==strlen(inMsisdn))
	{
		if(('8'==*inMsisdn)&&('6'==*(inMsisdn+1)))
		{
			while(*inMsisdn!='\0')
			{
				if(*inMsisdn>='0'&&*inMsisdn<='9')
					inMsisdn++;
				else 
					retutn 2;
			}
		}
		else 
			return 3;
	}
	else
		return 1;
	return 0;
}

int main()
{
	char *pchar=NULL;
	int result;
	unsigned char ichar=2;
	//printf("%c\n",ichar);
	switch (ichar)
	{
	case 0:
		pchar="86123456789";
		break;
	case 1:
		pchar="8611111111111";
		break;
	case 2:
		pchar="86s1234567890";
		break;
	default:
		break;

	}
	result=verifyMsisdn(pchar);

	printf("result is %d\n",result);


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页