Go...

当前位置: 首页>>世界杯冠军魔咒

c语言输出数组时输出的乱七八糟

数组输出的内容乱起八糟,看起来自己写的代码根本没错,其实是函数结束时就释放掉了内存, 你可以加一个全局数组来接收数组。

我们以下面这个例子讲一下:

//问题描述:一本书的页码从自然数1开始顺序编码到自然数n。

//书的页码按照通常的习惯编排,每个页码都不包含多余的前导数字0,Eg:页码6 不使用 006 。

//数学计数问题要求给定书的总页码n,计算出书的全部页码分别用到了多少次数字0,1,2,3,... ,9.

#include

#include

int * totalSum(int n){

int a ,b=0;

int arr[10];

for(int i = 0;i<10 ;i++){

arr[i] = 0;

}

for(int i = 1; i<=n;i++){

b=i;

while(b>0){

arr[b%10]++;

b /= 10;

}

}

//输出0-9页码出现的次数

printf("第一次输出页码数:\n");

for(int i =0 ;i<10;i++){

printf("%d\n",arr[i]);

}

return arr;

}

int main(){

//设页码为11页

int *c = totalSum(11);

//输出0-9页码出现的次数

printf("第二次输出页码数:\n");

for(int i =0 ;i<10;i++){

printf("%d\n",c[i]);

}

}

输出结果:

改变代码,把arr[10]改成全局变量(注意看新加的第6行,删掉原先totalSum函数里的int arr[10]):

//问题描述:一本书的页码从自然数1开始顺序编码到自然数n。

//书的页码按照通常的习惯编排,每个页码都不包含多余的前导数字0,Eg:页码6 不使用 006 。

//数学计数问题要求给定书的总页码n,计算出书的全部页码分别用到了多少次数字0,1,2,3,... ,9.

#include

#include

int arr[10];

int * totalSum(int n){

int a ,b=0;

for(int i = 0;i<10 ;i++){

arr[i] = 0;

}

for(int i = 1; i<=n;i++){

b=i;

while(b>0){

arr[b%10]++;

b /= 10;

}

}

//输出0-9页码出现的次数

printf("第一次输出页码数:\n");

for(int i =0 ;i<10;i++){

printf("%d\n",arr[i]);

}

return arr;

}

int main(){

//设页码为11页

int *c = totalSum(11);

//输出0-9页码出现的次数

printf("第二次输出页码数:\n");

for(int i =0 ;i<10;i++){

printf("%d\n",c[i]);

}

}

输出结果: