运行到第一个printf就程序错误了,就大神解答一下!
#include"stdio.h"#include"stdlib.h"
#define N 100
#define T 1
//函数定义区
void line(int *n,int *p) //列出所有元素的函数
{
int i,j=1;
for(i=1;i<=*n;i++,p++)
{
printf("%d",*p);
j++;
if((j%8)==0)
{
printf("\n");
j=1;
}
}
}
void input(int *n,int *p)//插入函数
{
int i,j,t;
printf("\n请输入一个数字:\n");
scanf("%d",*(p+1));
for(i=0;i<*n+1;i++) //对数组进行排列
{
for(j=*n;j>=0;j--)
{
if(p[i]>p[j])
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
n=n+1;
}
void shanchu(int *n,int *p)//删除函数
{
int t,i;
printf("\n请输入你想删除的元素序列号:\n");
scanf("%d",&t);
for(i=t-1;i<*n;i++,p++)
p=p+1;
printf("\n第%d号元素已删除!\n",&t);
n=n-1;
}
void check(int *n,int *p)//检查数值是否在集合内
{
int c,i;
printf("\n请输入要查询的数字:\n");
scanf("%d",&c);
for(i=0;i<*n;i++,p++)
{ if(p=&c)
printf("%d存在于此数列中",&c);
}
}
void number(int *n,int *p)//查询当前集合的元素个数
{
printf("该集合元素个数为%d个",*n);
}
void maxAndMin(int *n,int *p)//输出集合中的最大值和最小值
{
printf("最大值为%d,最小值为%d");
}
void oddAndEven(int *n,int *p)//输出奇数或者偶数
{
int i;
char m;
printf("\n请选择输入奇数(j)或者是偶数(o):\n");
scanf("%s",&m);
for(i=0;i<*n;i++,p++)
{
if(m='j')
{
if(*p%2!=0)
printf("\t%d\t",*p);
}
else
{
if(*p%2==0)
printf("\t%d\t",*p);
}
}
}
void prime(int *n,int *p)//输出素数
{
int i,j;
for(i=0;i<*n;i++,p++)
{
for(j=2;j<*p;j++)
{
if(*p%j==0)
printf("");
else
printf("%d",*p);
}
}
}
void find(int *n,int *p)//寻找尾号为该值的数
{
int i,h;
printf("\n请输入一个(0-9)的值:\n");
scanf("%d",&h);
for(i=0;i<*n;i++,p++)
{
if((*p%10)==h)
printf("%d",*p);
}
}
//函数定义区
//程序主体区
void main()
{
int a[N];
int i,j,t,CH;
int *p;
int *n=0;
p=a;
a[0]=(int *)malloc(100);
printf("请输入至少5个数字但最多不要超过30个数字:\n");//请求输入数组
do
{
scanf("%d",a[*n]);
n++;
}while(a[*(n-1)]!=-1);
printf("%d",*n);
printf("\n谢谢你的输入\n");
for(i=0;i<*n/2;i++) //对数组进行排列
{
for(j=*n;j<(*n/2-1);j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
fflush(stdin);
printf("\n1.列出所有元素\n2.插入一个数\n3.删除一个数\n4.查询该值是否在集合内\n5.查询当前集合元素\n6.查询最大值和最小值\n7.查询偶数或奇数\n8.查询所有质数\n9.查找相同尾数\n0.退出程序\n");
printf("\n请输入(1-9)来选择你做需要进行的动作:\n ");
scanf("%d",&CH);
if(CH<0||CH>9)
{
printf("\n输入指令有误,请重新输入!\n");
scanf("%d",&CH);
}
while(T)
{
switch(CH)
{
case 1:
line(n,p);
break;
case 2:
input(n,p);
break;
case 3:
shanchu(n,p);
break;
case 4:
check(n,p);
break;
case 5:
number(n,p);
break;
case 6:
maxAndMin(n,p);
break;
case 7:
oddAndEven(n,p);
break;
case 8:
prime(n,p);
break;
case 9:
find(n,p);
break;
case 0:
printf("谢谢使用!");
exit(0);
}
}
}
//程序主题区