gpt4 book ai didi

c - for循环计算看不懂

转载 作者:行者123 更新时间:2023-11-30 20:48:43 25 4
gpt4 key购买 nike

这是代码:

#include <stdio.h>
void main(){
int n,i,inst,tem,x,y,z;
int num[3] = {100,200,300,400};

for(x=1; x<n; x++){
for(y=0; y<x; y++){
if( num[x] = num[y] ){
printf("\nsame number: %d",num[y]);
}
}
}

}

我已经尝试理解这个问题两天了,但似乎找不到任何答案。

根据我的计算,输出屏幕中不应该打印任何“相同的数字”。但是“相同的数字:100”显示了 6 次。

为什么是6次???为什么同样的数字是100?

有什么想法吗???

最佳答案

根据C标准(6.7.9初始化)

2 No initializer shall attempt to provide a value for an object not contained within the entity being initialized.

但是,在您的程序中,您尝试为只有 3 个元素的数组 num 的元素 num[3] 提供值。

int num[3] = {100,200,300,400};
^^^ ^^^^

变量n也未初始化。它具有不确定的值,因此程序具有未定义的行为,因为该变量在循环中使用

for(x=1; x<n; x++){
for(y=0; y<x; y++){
if( num[x] = num[y] ){
printf("\nsame number: %d",num[y]);
}
}
}

在 if 语句中,您使用赋值运算符而不是比较

if( num[x] = num[y] ){
^^^

程序中有很多未使用的变量。如果您希望程序符合 C 语言,则函数 main 应该具有返回类型 int。

我认为你的意思是以下内容

#include <stdio.h>

int main( void )
{
int num[] = { 100, 200, 300, 400 };
const size_t N = sizeof( num ) / sizeof( *num );

for ( size_t i = 1; i < N; i++ )
{
for ( size_t j = 0; j < i; j++ )
{
if ( num[i] == num[j] ) printf( "\nsame number: %d", num[j] );
}
}
}

关于c - for循环计算看不懂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906379/

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