初级会员
- 积分
- 142
- 金钱
- 142
- 注册时间
- 2016-8-12
- 在线时间
- 50 小时
|
20金钱
各位大佬,小弟我想写一个c语言程序,实现如下功能:首先输出10000个数,然后把三位数去掉,再把剩下的9000个数中含有0的数去掉,然后在剩下的数中,每输入一个数,就去掉那个数,比如我有1 2 3 三个数,如果输入2,那么就会把1和3打印出来。最后结果是其他的都好了,最后一步去除数据那里出了问题,程序如下:
[mw_shl_code=applescript,true]#include "stdio.h"
void cut(int *p)
{
int i,j=0;
for (i=0;i<10000;i++)
{
if (p>999)
{
p[j]=p;
j++;
}
}
}
void select(int *p)
{
int a,b,c,d,i,j=0;
for (i=0;i<9000;i++)
{
a=p/1000;
b=p%1000/100;
c=p%100/10;
d=p%10;
if ((a!=0)&&(b!=0)&&(c!=0)&&(d!=0))
{
p[j]=p;
j++;
}
}
}
int *deletenum(int x,int *p,int len)
{
int i,j=0,*q;
for (i=0;i<len;i++)
{
if (p!=x)
{
q[j]=p;
j++;
}
}
return q;
}
void oper(int len,int *p)
{
int i,num,*q;
while(1)
{
printf("select a num:");
scanf("%d",&num);
for (i=0;i<len;i++)
{
if (num==p)
{
q=deletenum(num,p,len);
len--;
}
}
for (i=0;i<len;i++)
printf("%d",q);
}
}
void main(void)
{
int i,len=0,a[10000];
for (i=0;i<10000;i++)
a=i;
cut(a);
select(a);
for (i=0;i<10000;i++)
{
len++;
if (a==9999) break;
}
oper(len,a);
}
[/mw_shl_code]
程序输入完成以后,运行界面要求我输入一个数,然后我输入了以后,程序就开始出现如下图所示的情况,我检查过后,也有单独测试过,发现就是deletenum函数里面出了问题,我用了for循环和if语句以后,delectnum函数里面的数组就传不出去,我想知道为什么会这样?如果我想把函数处理过的数组传出去,除了用全局变量以外,还有什么办法吗?麻烦各位大佬看一下好了,程序不算很长,逻辑也简单,麻烦各位了!
|
-
-
|