注册 登录
编程论坛 C语言论坛

新人刚加入论坛,有问题希望大佬解答

newnoob 发布于 2021-12-19 17:24, 1164 次点击
麻烦dalao看一下,我写的程序为什么加了一个不改变数字的for循环结果就不一样了?
#include<stdio.h>
#include<stdlib.h>
int sort(int a[],int n,int result[],int m);
int main()
{
    int q;
    int result[10];
    int arr[6] = {2,8,4,11,3,9}, target = 6;
    sort(arr,target,result,10);
    for(q=0;q<10;q+=2)
    {
        if((arr[result[q]]+arr[result[q+1]])==target)
        {
            printf("(%d,%d)\n",result[q],result[q+1]);
            printf("arr[%d]=%d,arr[%d]=%d\n",result[q],arr[result[q]],result[q+1],arr[result[q+1]]);
            printf("q=%d\n",q);
        }        
    }
    return 0;
}
int sort(int a[],int n,int result[],int m)
{
    int q=0;
    int outcome=0;
    for(n=0;n<6;n++)
    {
        for(m=1;m<6;m++)
        {
            outcome=a[n]+a[m];
            if (outcome==6)
            {
                result [q]=n;
                result [(q+1)]=m;
                q+=2;
            }
        }
        for(n=0;n<10;n++)
        {
            printf("a[%d]=%d\n",n,a[n]);
            printf("result[%d]=%d\n",n,result[n]);
        }
        /*这个程序为什么加了上面的printf的for循环就消失了一个(4,4)?*/
    }
    n=0;
}

[此贴子已经被作者于2021-12-19 17:48编辑过]

5 回复
#2
rjsp2021-12-19 19:06
代码太长懒得看

为什么加了一个不改变数字的for循环结果就不一样了?
明明你改变了n的值呀!
有了你的这个for,之后n必然都等于10了。
#3
newnoob2021-12-19 20:16
回复 2楼 rjsp
可是函数在调用数组的时候a[],n这里的n不是没有影响吗?
#4
newnoob2021-12-19 20:20
回复 2楼 rjsp
而且最后我在调试的时候数组result的结果都变了,可是我只是加了一个printf的for循环啊
#5
rjsp2021-12-20 08:24
以下是引用newnoob在2021-12-19 20:16:44的发言:

可是函数在调用数组的时候a[],n这里的n不是没有影响吗?

我听不懂你在说什么,若把你的那个for删掉,然后改为 n=10; 的话,结果将得跟有for时一样,你的那个for的副作用就是 n=10。

另外,你的其它代码也是一塌糊涂,不如把题目贴出来让别人帮你写一个吧
#6
newnoob2021-12-20 16:41
回复 5楼 rjsp
懂了懂了,调试了几次发现是循环写大循环里了
感谢dalao
1