删数题:编译的时候提示错误缺少数组界限符
题目是:给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 对于给定的正整数a,编程计算删去k个数字后得到的最小数。我编的源程序:
#include "stdio.h"
#include "math.h"
#define p 10;
long weishu( long n) //判断n的位数
{int weishu=0;
do
{n=n/10;
weishu++;
} while(n!=0);
return weishu;
}
int chaishu(int str1[],int n) //对n进行拆数
{int i,w; long sum;
for(i=0;i<=weishu(n)-1;i++)
{w=weishu(n)-i;
str1[i]=(int)(n/pow(10,w));
sum=str1[i]*(int)pow(10,w);
n=n-sum;
}
}
int shanshu(int str2[],int str3[],int n,int s) //把所输入的数字删啦
{int j,k,l;
for(j=0;j<=weishu(n)-1;j++)
for(k=0;k<=weishu(s);k++)
if(str2[j]==str3[k])//判断是否相同
for(l=j;l<weishu(n);l++)
str2[l]=str2[l+1];//覆盖
}
int maopao(int str[],int n,int s)//用冒泡法排序
{int a,b,temp;
for(a=0;a<=weishu(n)-weishu(s);a++)
for(b=0;b<weishu(n)-weishu(s)-a;b++)
if(str[b]>str[b+1])
{temp=str[b];str[b]=str[b+1];str[b+1]=temp;}
}
main()
{ long n,s; int a,b,w;int str4[p]; int str5[p];
printf("please input the number:\n");//输入数
scanf("%d",&n);
chaishu(str4,n);//对n进行拆数
printf("Input the number you wish to delete:\n");
scanf("%d",&s);//输入所要删除的数
chaishu(str5,s);
shanshu(str4,str5,n,s);//删数
maopao(str4,n,s);//冒泡
w=weishu(n)-weishu(s);
for(a=0;a<=w;a++)//确保所出的第一位不是0
if(str4[a]==0) break;
for(b=a;b<=w;b++)
printf("%d",str4[a]);//输出
}
为什么编译的时候总是提醒错误(我用的是c++6.0):
:\c的调试\分步.cpp(42) : error C2143: syntax error : missing ']' before ';'
I:\c的调试\分步.cpp(42) : error C2143: syntax error : missing ';' before ']'
I:\c的调试\分步.cpp(42) : error C2143: syntax error : missing ']' before ';'
I:\c的调试\分步.cpp(42) : error C2143: syntax error : missing ';' before ']'