-1
這是我的代碼:ç返回int值不起作用
#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;
}
這個程序計算wheter一個數是素與否。
如果我給第13號作爲輸入,功能num_1
有值1
到tmp_1
和功能num_2
具有值1
到tmp_2
並且都是正確的。
問題是tmp=tmp_1+tmp_2
返回一個大大大價值,我不明白爲什麼。
你是什麼意思與_ 「我不是存儲他們的價值觀」 _ ??? – polslinux
你的函數中有變量tmp_1和tmp_2,但這些變量與主函數中的變量名稱不同。這些對你的num_mezzo函數是本地的。因此,main()中的tmp_1和tmp_2永遠不會被初始化。 – mathematician1975
我已經用類似的方式解決了:D但是非常感謝:) – polslinux