acm487-3279电话号码题目,帮找错
程序代码:#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef struct lnode
{
char* data;
long counter;
struct lnode *next;
}lnode,*linklist;
void changetostande(char*,char*);
void insert(linklist,char * );
---------------------------------------------------------------------------------------------------------------------
int main( )
{
linklist lodeptr;
lnode telephonelode;
int i;
char telephone[9],input[16];
codelode.data="000-0000";
codelode.next=0;
codelode.counter=0;
lodeptr=&codelode;
scanf("%d",&i);
if (i>100000) return 0;
while (i--)
{
scanf("%s",input);//每输入一个字符串
changetostande(input,telephone);//转换成标准形式***-****
insert(lodeptr,telephone);//比较后插入。
}
return 0;
}
void changetostande(char* input,char* telephone)//处理异常:telephone根本未接受字符,如何解决
{
int n=0;//n为telephone接收字符的个数
while (*input != 0)
{
if (n==3)//设置telephone[3]='-'
{
telephone[3]='-';
*(telephone++);
n++;
}
else
{switch (*input)
{
case 'A':
case 'B':
case 'C':
case '2': ++n;*(telephone++)='2';
break;
case 'D':
case 'E':
case 'F':
case '3': ++n;*(telephone++)='3';
break;
case 'G':
case 'H':
case 'I':
case '4': ++n;*(telephone++)='4';
break;
case 'J':
case 'K':
case 'L':
case '5': ++n;*(telephone++)='5';
break;
case 'N':
case 'M':
case 'O':
case '6': ++n;*(telephone++)='6';
break;
case 'P':
case 'R':
case 'S':
case '7': ++n;*(telephone++)='7';
break;
case 'T':
case 'U':
case 'V':
case '8': ++n;*(telephone++)='8';
break;
case 'W':
case 'X':
case 'Y':
case '9': ++n;*(telephone++)='9';
break;
case '0': ++n;*(telephone++)='0';
break;
case '1': ++n;*(telephone++)='1';
break;
default:
break;
}//switch
}//if
*(input++);
}//while
telephone[8]=0;//转换成***-****格式后,设置末尾=0
}
void insert(linklist lodeptr,char *telephone)
{
}
啧啧,case语句还真怪。非得改成
case '9':
++n;
*(telephone++)='9';
break;
难道是每条语句非得占一行

[ 本帖最后由 okayyyy 于 2010-8-19 03:02 编辑 ]





