c新手 简单有关问题
c新手 简单问题
#include"stdio.h"
#include"stdlib.h"
#include"process.h"
void main(){
int i,size=9;
int *x;
int *aux,*point1,*point2;
x=(int*)malloc(9*sizeof(int));
if(x==NULL) exit(1);
printf("\n please enter 9 interger:");
for(point1=x;point1<x+size;point1++)
scanf("%d",point1);
for(point1=x;point1<x+size;point1++)
printf("%d ",*point1);
printf("\n");
/*************************下面代码显示出一个极大的负数************************/
aux=(int*)malloc(20*sizeof(int)); //申请20个空间
if(aux==NULL) exit(1);
point1=x;
point2=aux;
while(point1<x+size) //将9个数正序存入新申请的整型存储单元
{
*point2=*point1;point2++;point1++;
}
point1--;
while(point1>=x) //将9个数逆序存入新申请的整型存储单元
{
*point2=*point1;point2++;point1--;
}
size+=9;
free(x);
x=aux;
for(i=0;i<size;i++);
printf("%d ",*(x+i));
}
随便输入9个数运行如下:
please enter 9 interger:12 32 23 45 65 25 12 32 65
12 32 23 45 65 25 12 32 65
-842150451
为什么会出现如此大的负数啊?
------解决方案--------------------
for(i=0;i<size;i++);
是不是这句后面多了一个";"分号的缘故呢。
------解决方案--------------------
是在for(i=0;i<size;i++)后面多了一个";"的缘故。只要把";"去掉就没问题。原因估计你也会知道。代码风格或许可以变得更好些,参考一下吧。
------解决方案--------------------
#include"stdio.h"
#include"stdlib.h"
#include"process.h"
void main(){
int i,size=9;
int *x;
int *aux,*point1,*point2;
x=(int*)malloc(9*sizeof(int));
if(x==NULL) exit(1);
printf("\n please enter 9 interger:");
for(point1=x;point1<x+size;point1++)
scanf("%d",point1);
for(point1=x;point1<x+size;point1++)
printf("%d ",*point1);
printf("\n");
/*************************下面代码显示出一个极大的负数************************/
aux=(int*)malloc(20*sizeof(int)); //申请20个空间
if(aux==NULL) exit(1);
point1=x;
point2=aux;
while(point1<x+size) //将9个数正序存入新申请的整型存储单元
{
*point2=*point1;point2++;point1++;
}
point1--;
while(point1>=x) //将9个数逆序存入新申请的整型存储单元
{
*point2=*point1;point2++;point1--;
}
size+=9;
free(x);
x=aux;
for(i=0;i<size;i++);
printf("%d ",*(x+i));
}
随便输入9个数运行如下:
please enter 9 interger:12 32 23 45 65 25 12 32 65
12 32 23 45 65 25 12 32 65
-842150451
为什么会出现如此大的负数啊?
c
------解决方案--------------------
for(i=0;i<size;i++);
是不是这句后面多了一个";"分号的缘故呢。
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,size=9;
int *x;
int *aux,*point1,*point2;
x=(int*)malloc(9*sizeof(int));
if(x == NULL)
{
exit(1);
}
printf("\n please enter 9 interger:");
for(point1=x;point1<x+size;point1++)
{
scanf("%d", point1);
}
for(point1 = x; point1 < x + size; point1++)
{
printf("%d ",*point1);
}
printf("\n");
/*************************下面代码显示出一个极大的负数************************/
aux = (int*) malloc (20 * sizeof(int)); //申请20个空间
if(NULL == aux)
{
exit(1);
}
point1 = x;
point2 = aux;
while(point1 < x + size) //将9个数正序存入新申请的整型存储单元
{
*point2 = *point1;
point2++;
point1++;
}
point1--;
while(point1>=x) //将9个数逆序存入新申请的整型存储单元
{
*point2=*point1;
point2++;
point1--;
}
size+=9;
free(x); //释放初始申请的空间
x=aux;
for(i=0;i<size;i++)
{
printf("%d ",*(x+i));
}
free(aux); //释放空间
return 0;
}
是在for(i=0;i<size;i++)后面多了一个";"的缘故。只要把";"去掉就没问题。原因估计你也会知道。代码风格或许可以变得更好些,参考一下吧。
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,size = 9;
int *x;
int *aux, *point1, *point2;
x = (int*) malloc (9*sizeof(int));
if(NULL == x)
{
exit(1);
}
//从终端输入9个整数
printf("\n please enter 9 interger:");
for(point1 = x;point1 < x + size; point1++)