C语言编程问题,求解,本人已经快崩溃了!~

2025-04-06 13:37:14
推荐回答(3个)
回答1:

程序大体没什么问题,但是在调用ReadDat(aa,bb);
函数后并没有改变aa,bb的值啊。建议你先把ReadDat(aa,bb);
函数的内容弄到主函数里面去,把ReadDat(aa,bb);去掉。。。
在C语言中,函数参数的传递是有两种的,一种是值传递,一种是地址传递,值传递改变不了原来的值,比如,一个函数
例一
void fun(int i)
{
i=2;
}
在主函数中有
void main(void)
{
int i=3;
fun(i);
printf("%d",i);
}
i的值还是显示的是3。就是因为这个fun函数改变不了i的值。。。i是通过值传递的,也就是说复制了i的值传递给fun函数的。
如果这样就可以改变的
例二;
void fun(int *i)
{
*i=2;
}
void main(void)
{
int i=3;
fun(&i);
printf("%d",i);
}
这个时候i的值就能改变了,因为调用i是直接把存储i的地址给fun函数了,这样i的存储地址里面的东西改了再打印肯定就是改变了的值了

你可以定义void ReadDat( int **a,int **b)
在主函数中这样传递参数ReadDat(&aa,&bb);
当然ReadDat( int a[],int b[])里面的涉及到a,b的操作要修改下。

回答2:

基本上是WriteDat函数的问题:
我先修改了下:
WriteDat(int q[],int p[])
{
int i;
for(i=0;i<100;i++){
printf("%5d\t",q[i]);
printf("%5d\n",p[i]);
}
}
有其他问题再说吧。

回答3:

好像是降序方法有问题,建议你用冒泡算法