gpt4 book ai didi

c - 返回int数组,然后用while循环打印它,它显示的数据不准确

转载 作者:行者123 更新时间:2023-11-30 19:10:03 25 4
gpt4 key购买 nike

#include<stdio.h> 
#define SIZE 15

int * Check_Wrong_Question(char User_Answer[SIZE],char MCQ_Answer[SIZE])
{
int i, j;

i = 0;
j = 0;

static int Wrong_Question[SIZE];

for(i = 0; i < SIZE; i++)
{
if(User_Answer[i] != MCQ_Answer[i])
{
Wrong_Question[j] = i+1;
j++;
}
}

return Wrong_Question;
}

int main()
{
char MCQ_Answer[SIZE] = {'d','b','a','c','b','c','a','b','d','c','d','b','d','a','a'};
char User_Answer[SIZE];
int i,j;
int *Wrong_Question;

i = 0;
j = 0;

for(i = 0; i < SIZE; i++)
{
printf("Q%d)", i+1);
scanf("%c", &User_Answer[i]);
}

Wrong_Question = Check_Wrong_Question(User_Answer,MCQ_Answer)

while(Wrong_Question[j] != 0)
{
printf("%d\n", Wrong_Question[j], j++);
}

return 0;
}

代码在C程序中。错误部分是如果用户输入所有答案为'a',它应该打印出1,2,4,5,6,8,9, 10,11,12,13。但它显示 2,4,5,6,7,8,9,10,11,12,13,0。它从数组的第二个元素打印,尽管我声明 j=0 从第一个元素打印。而且它不应该打印 0,因为我的条件是 != 0。函数返回的数组是否改变了数据?我尝试在函数中打印数组,效果很好。另外,我是 C 程序的新手。

最佳答案

问题出在程序末尾的 while 循环:

while(Wrong_Question[j] != 0)
{
printf("%d\n",Wrong_Question[j],j++);
}

您在同一语句中同时使用了 jj++。 C 标准不保证在这种情况下它们的执行顺序。最好将其重写为 for 循环,如下所示:

for(j = 0; Wrong_Question[j] != 0; j++)
{
printf("%d\n", Wrong_Question[j]);
}

关于c - 返回int数组,然后用while循环打印它,它显示的数据不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com