我的编程调试没问题啊 怎么运行就是这样呢

[复制链接]
查看11 | 回复2 | 2010-8-10 21:08:26 | 显示全部楼层 |阅读模式
题目是编写函数,对具有10个整数的数组进行如下操作,从下标为n的元素开始直到最后一个元素,依次向前移动一个位置,#include
int fun(int*a,int n)
{int i;
for (i=n;i<=9;i++) a=a[i-1];
return a[10];}
void main()
{int b[10]={1,2,3,4,5,6,7,8,9};int c;
printf("%d\n",b[10]);
printf("type in the number:\n");
scanf("%d",&c);
printf("%d",fun(b,c));调试没有问题 但是那个运行的时候 只显示1245120 很奇怪 我哪里做错了 请高人指点 灰常灰常灰常感谢 本人的财富值为0了 哎 请帮下忙


回复

使用道具 举报

千问 | 2010-8-10 21:08:26 | 显示全部楼层
你的fun想返回什么?return a[10];数组越界呀同学,只是个未知值!如果你想返回一个元素,则只能是a[0]~a[9]如果你想返回整个数组,则fun的类型应为int*或int[] 你的代码主要有两处问题1.刚才说的数组越界,和返回值问题(其实这里fun可以是void类型,因为他的形参带指针,结果可以通过指针输出)2.你的移位运算反了我改后的代码(还有其他地方作了少许优化)void fun(int*a,int n){ int i; int temp; for (i=n;i<10;i++) {a[i-1]=a;//注意移位运算的顺序 } a[9]=0;//最后
回复

使用道具 举报

千问 | 2010-8-10 21:08:26 | 显示全部楼层
b数组长度为10,不能访问下标未10的元素,元素从0~9,没有10。换句话说a[10]是内存中的随机值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行