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 编辑 ]