gpt4 book ai didi

c 返回 int 值不起作用

转载 作者:行者123 更新时间:2023-11-30 18:22:57 25 4
gpt4 key购买 nike

这是我的代码:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>

int num_mezzo_1(int num_orig);
int num_mezzo_2(int num_orig);

int main(int argc, char *argv[]){
int num,contatore,tmp=0,tmp_1,tmp_2;
num=atoi(argv[1]);
if(num <= 3){
printf("%d è primo\n", num);
exit(0);
}
else{
num_mezzo_1(num);
num_mezzo_2(num);
tmp=tmp_1+tmp_2;
//using printf to debug
printf("t1 %d, t2 %d\n", tmp_1,tmp_2);
if(tmp>2){
printf("%d NON è primo\n", num);
}
else{
printf("%d è primo\n", num);
}
}
exit(0);
}

int num_mezzo_1(int num_orig){
int tmp_1=0,cont_1;
for(cont_1=1; cont_1<=(num_orig/2); cont_1++){
if((num_orig % cont_1) == 0){
tmp_1++;
}
}
//using printf to debug
printf("\n%d\n", tmp_1);
return tmp_1;
}

int num_mezzo_2(int num_orig){
int tmp_2=0,cont_2;
for(cont_2=((num_orig/2)+1); cont_2<=num_orig; cont_2++){
if((num_orig % cont_2) == 0){
tmp_2++;
}
}
//using printf to debug
printf("\n%d\n\n", tmp_2);
return tmp_2;
}

该程序计算一个数字是否为素数。
如果我给出数字 13 作为输入,则函数 num_1 的值为 1tmp_1 中,函数 num_2 的值为 1 转换为 tmp_2 并且两者都是正确的。
问题是 tmp=tmp_1+tmp_2 返回一个 big big big 值,我不明白为什么。

最佳答案

您正在调用函数 num_mezzo_1()num_mezzo_2() 但您没有存储它们的返回值,因此您的变量 tmp_1tmp_2 保持未初始化状态。

编辑:尝试更改代码

    num_mezzo_1(num);
num_mezzo_2(num);

    tmp_1 = num_mezzo_1(num);
tmp_2 = num_mezzo_2(num);

在 else block 中看看是否得到了预期的结果。

工作代码:

tmp=(num_mezzo_1(num)+num_mezzo_2(num));

关于c 返回 int 值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10962825/

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