当前位置:编程学习 > C/C++ >>

c语言程序设计。。。。。程序问题

#include"stdio.h" #include"string.h" #include"stdlib.h" int *fun(int x); void main() { int x;int *p ,*q;int i,j; printf(" enter the data:"); scanf("%d",&x); p=fun(x); for(i=0;*(p+i)!='\0';i++); for(j=0;j<i;j++) printf("%d",*(q+j)); } int *fun(int x) { int *ix;int i=0; ix=(int *)malloc(sizeof(int)*100); while(x>=10) { ix[i]=x&10; i++; x=x/10; } ix[i]=x; return ix; free(ix); } 哪里出错了
答案:1) free放在return后,错 
2)q 没有赋值 
3)for(i=0;*(p+i)!='\0';i++);	 这句话估计多了;或者少了什么
4)p是int * , 就不要用'\0'了
其他:你这是要把一个N位数每位数拆开放入数组吧。。
改好了。。首先几处可能是打错的你自己对照吧。
然后。。这句话for(i=0;*(p+i)!='\0';i++);并没有达到你想要的结果。嗯。i一直+到104,因为int数组没有'\0'。
我把i改成全局的,下面统计过了上面也就不用浪费一次遍历统计了。free就不需要了。return完了最后是读不到free的。
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int  *fun(int x);
int i=0;
void main()
{
	int x;
	int *p;
	int j;
	printf(" enter the data:");
	scanf("%d",&x);
	p=fun(x);	
	for(j=0;j<i;j++)
		printf("%d",*(p+j));
}
int *fun(int x)
{
	int *ix;
	ix=(int *)malloc(sizeof(int)*100);

	while(x>=10)
	{
		ix[i]=x%10;
		i++;
		x=x/10;
	}
	ix[i]=x;
	return ix;
} #include"stdio.h"
#include"string.h"
#include"stdlib.h"
int  *fun(int x);
void main()
{
	int x;int *p ,*q;int i,j;
	printf(" enter the data:");
	scanf("%d",&x);
	p=fun(x);
               q=p;
	for(i=0;*(p+i)!='\0';i++);	
	for(j=0;j<i;j++)
		printf("%d",*(q+j));
}
int *fun(int x)
{
	int *ix;int i=0;
	ix=(int *)malloc(sizeof(int)*100);
	
   while(x>=10)
   {
	   ix[i]=x%10;
	   i++;
	   x=x/10;
   }
   ix[i]=x;
ix[i+1]=0;
  return ix;
} 没搞懂你的程序是干啥用的。。。
不过单就语法错误我同意楼上的说法
大概你要加上一句q=p吧。。。 *q没给地址  stdlib.h用于文件你是否没写完  如果需要代码留个题目

上一个:C语言中结构体的问题
下一个:C语言问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,