Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我代码在VC++上运行正常,但是提交后却说编译错误,但是错误却很可笑按照系统返回的语法错误,我在for循环里定义的临时变量就全部被报错了,还有什么括号、分号的错误。。。我晕,我哪有这些错误呀。。 返回的错误提示: * Compile Error Main.c Main.c(29) : error C2143: syntax error : missing ';' before 'type' Main.c(29) : error C2143: syntax error : missing ';' before 'type' Main.c(29) : error C2143: syntax error : missing ')' before 'type' Main.c(29) : error C2143: syntax error : missing ';' before 'type' Main.c(29) : error C2065: 'i' : undeclared identifier Main.c(29) : error C2065: 'i' : undeclared identifier Main.c(29) : error C2059: syntax error : ')' Main.c(30) : error C2146: syntax error : missing ';' before identifier 'scanf' Main.c(30) : error C2065: 'i' : undeclared identifier Main.c(33) : error C2143: syntax error : missing ';' before 'type' Main.c(34) : error C2143: syntax error : missing ';' before 'type' Main.c(41) : error C2143: syntax error : missing ';' before 'type' Main.c(41) : error C2143: syntax error : missing ';' before 'type' Main.c(41) : error C2143: syntax error : missing ')' before 'type' Main.c(41) : error C2143: syntax error : missing ';' before 'type' Main.c(41) : error C2065: 'i' : undeclared identifier Main.c(41) : error C2065: 'i' : undeclared identifier Main.c(41) : error C2059: syntax error : ')' Main.c(41) : error C2143: syntax error : missing ';' before '{' Main.c(42) : error C2143: syntax error : missing ';' before 'type' Main.c(42) : error C2143: syntax error : missing ';' before 'type' Main.c(42) : error C2143: syntax error : missing ')' before 'type' Main.c(42) : error C2143: syntax error : missing ';' before 'type' Main.c(42) : error C2065: 'j' : undeclared identifier Main.c(42) : error C2065: 'j' : undeclared identifier Main.c(42) : error C2059: syntax error : ')' Main.c(42) : error C2143: syntax error : missing ';' before '{' Main.c(43) : error C2065: 'i' : undeclared identifier Main.c(43) : error C2065: 'j' : undeclared identifier Main.c(45) : error C2065: 'i' : undeclared identifier Main.c(46) : error C2065: 'i' : undeclared identifier Main.c(46) : error C2065: 'j' : undeclared identifier Main.c(47) : error C2065: 'j' : undeclared identifier Main.c(54) : error C2143: syntax error : missing ';' before 'type' Main.c(54) : error C2143: syntax error : missing ';' before 'type' Main.c(54) : error C2143: syntax error : missing ')' before 'type' Main.c(54) : error C2143: syntax error : missing ';' before 'type' Main.c(54) : error C2065: 'i' : undeclared identifier Main.c(54) : error C2065: 'i' : undeclared identifier Main.c(54) : error C2059: syntax error : ')' Main.c(54) : error C2143: syntax error : missing ';' before '{' Main.c(55) : error C2065: 'i' : undeclared identifier Main.c(56) : error C2065: 'i' : undeclared identifier Main.c(57) : error C2065: 'i' : undeclared identifier Main.c(58) : error C2065: 'i' : undeclared identifier Main.c(59) : error C2065: 'i' : undeclared identifier Main.c(65) : error C2143: syntax error : missing ';' before 'type' Main.c(66) : error C2143: syntax error : missing ';' before 'type' Main.c(66) : error C2143: syntax error : missing ';' before 'type' Main.c(66) : error C2143: syntax error : missing ')' before 'type' Main.c(66) : error C2143: syntax error : missing ';' before 'type' Main.c(66) : error C2065: 'i' : undeclared identifier Main.c(66) : error C2065: 'i' : undeclared identifier Main.c(66) : error C2059: syntax error : ')' Main.c(66) : error C2143: syntax error : missing ';' before '{' Main.c(67) : error C2065: 'i' : undeclared identifier Main.c(67) : error C2065: 'i' : undeclared identifier Main.c(68) : error C2065: 'i' : undeclared identifier Main.c(69) : error C2143: syntax error : missing ';' before 'type' Main.c(69) : error C2143: syntax error : missing ';' before 'type' Main.c(69) : error C2143: syntax error : missing ')' before 'type' Main.c(69) : error C2143: syntax error : missing ';' before 'type' Main.c(69) : error C2065: 'j' : undeclared identifier Main.c(69) : error C2065: 'j' : undeclared identifier Main.c(69) : error C2059: syntax error : ')' Main.c(69) : error C2143: syntax error : missing ';' before '{' Main.c(70) : error C2065: 'i' : undeclared identifier Main.c(70) : error C2065: 'j' : undeclared identifier Main.c(70) : error C2065: 'z' : undeclared identifier Main.c(70) : error C2065: 'j' : undeclared identifier Main.c(70) : error C2109: subscript requires array or pointer type Main.c(71) : error C2065: 'i' : undeclared identifier Main.c(71) : error C2065: 'z' : undeclared identifier Main.c(71) : error C2065: 'j' : undeclared identifier Main.c(71) : error C2109: subscript requires array or pointer type Main.c(148) : fatal error C1071: unexpected end of file found in comment 以下是我的代码及注释,请帮忙看看到底是哪里错误: /* *思路:1.以二维字符数组(或指向一维数组的指针)存储输入的字母数字短横线混杂的字符串,列长度为16,因为除了‘\0’,首尾和每个字母/数字之间可能会有一个短横线,如“-1-1-1-1-1-1-1-\0” *2.将相应的字母按照规则转为相应的数字,此刻二维数组中为数字和短横线混杂,如“-DFH6-87-U\0”转为“-3346-87-8\0” *3.去除数组中的短横线,将整数字符依次存储,如“3346878\0” *4.将整数字符转为整型,并存储到一个一维数组phone_num中,如“3346878”,此时3346878为一个int型整数 *5.对一维数组中的元素进行冒泡排序,得到按从小到大排列好的数组,并且相同的元素是排在一起的,如“1111111,1111111,2222222,3333333...” *6.利用循环,找出有两个或两个以上重复的元素,并将最后一次重复前的重复元素置为-1,将重复的次数赋给另一个整型数组a,下标对应,如上面例子变为“-1,1111111,-1,2222222,3333333...”,a中存储“NULL,2,Null,2,NULL...”(NULL此处表示未赋值) *7.再将phone_num中的整数格式化为字符串存储在final中,如将3346878转为final={'3','3','4','6',8'','7','8','',''} *8.继续格式化final,从第四位开始依次后移一位,然后在第四位插入'-',最后一位插入'\0'.如final={'3','3','4','-',6'','8','7','8','\0'} *9.打印输出存储在final中的字符串和存储在a中的元素重复次数 */ #include <stdio.h> #include <ctype.h> #include <malloc.h> void main(){ int num,*phone_num,*a; //phone_num指向存储电话号码转换过来的相应整数的地址,a指向记录电话号码重复次数的地址 int x=0; //存储是否有重复电话号码的标志,0表示没有,1表示有 char (*phone)[16]; //定义指向长度为16的char类型一维数组的指针phone char (*final)[9]; //存储格式化后的号码,长度为9,因为:七位数字+‘-’+‘\0’,第四位的短横线和最后一位的字符串结束标志 printf("请输入电话号码数量:\n"); scanf("%d",&num); printf("请依次输入电话号码,每行一个,输完回车:\n"); phone=(char(*)[16])malloc(num*sizeof(*phone));//给指针phone分配内存空间,存储接下来输入的num个电话号码 final=(char(*)[9])malloc(num*sizeof(*final)); phone_num=(int*)malloc(num*sizeof(int)); a=(int*)malloc(num*sizeof(int)); for(int i=0;i<num;i++) scanf("%s",*(phone+i)); /*所用到的函数的声明*/ void changeToNumber(char (*phone)[16],int num); void changeInt(char (*phone)[16],int *phone_num,int num); /*函数声明完毕*/ changeToNumber(phone,num); //转为整数形式的字符存储,即将A~Z转为相应的数字 changeInt(phone,phone_num,num); //将phone指向的字符窜转为整型数字,存储给phone_num /*冒泡排序,经过排序后相同的数字会排在一起*/ for (int i=0;i<num;i++){ for (int j=i;j<num;j++){ if(*(phone_num+i)>*(phone_num+j)){ int temp; temp=*(phone_num+i); *(phone_num+i)=*(phone_num+j); *(phone_num+j)=temp; } } } /*冒泡排序完毕*/ /*将重复的数字重置为-1,并在数组a对应处记录重复次数*/ for (int i=0;i<num;i++){ if(*(phone_num+i)!=-1){ int k=1,m=*(phone_num+i); while(m==*(phone_num+i+k)){ *(phone_num+i+k-1)=-1; *(a+i+k)=(k++)+1; } } } /*将重复的数字重置为-1,并在数组a对应处记录重复次数*/ int z[7]={1000000,100000,10000,1000,100,10,1}; for (int i=0;i<num;i++){ if(*(a+i)>1&&*(phone_num+i)!=-1){ int sum=*(phone_num+i); for(int j=0;j<7;j++){ (*(final+i))[j]=sum/z[j]+'0'; sum=*(phone_num+i)%z[j]; } } }//*final存储转换过来的字符数字 for (int i=0;i<num;i++){ if(*(a+i)>1&&*(phone_num+i)!=-1){ x=1; for(int j=7;j>3;j--) (*(final+i))[j]=(*(final+i))[j-1]; //第四位往后依次后移一位 (*(final+i))[3]='-'; //在第四位存储'-' (*(final+i))[8]='\0'; //最后存储'\0',方便打印输出 printf("%s %d\n",*(final+i),*(a+i)); } } if(x==0)printf("No duplicates."); getchar();getchar(); } void changeToNumber(char (*phone)[16],int num){ char getNumber(char n); for (int i=0;i<num;i++){ int k=0; for(int j=0;j<16;j++){ if((*(phone+i))[j]!='\0'){ if(getNumber((*(phone+i))[j])!='-') (*(phone+i))[k++]=getNumber((*(phone+i))[j]); }else break; } (*(phone+i))[k]='\0'; } } char getNumber(char n){ if(islower(n)==2)//是小写字母 n=toupper(n);//转为大写 switch(n){ case 'A': case 'B': case 'C': n='2';break; case 'D': case 'E': case 'F': n='3';break; case 'G': case 'H': case 'I': n='4';break; case 'J': case 'K': case 'L': n='5';break; case 'M': case 'N': case 'O': n='6';break; case 'P': case 'R': case 'S': n='7';break; case 'T': case 'U': case 'V': n='8';break; case 'W': case 'X': case 'Y': n='9';break; //default: n=n; } return n; } void changeInt(char (*phone)[16],int *phone_num,int num){ for (int i=0;i<num;i++){ int sum=0; for(int j=0;j<16;j++){ if((*(phone+i))[j]!='\0'){ sum=10*sum+(*(phone+i))[j]-'0'; }else break; } *(phone_num+i)=sum; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator