Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

我代码在VC++上运行正常,但是提交后却说编译错误,但是错误却很可笑

Posted by qiqiboy at 2010-05-09 10:53:32 on Problem 1002
按照系统返回的语法错误,我在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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator