我試圖為每種型別的數字列印它自己的行,但是當我運行代碼時它不起作用,我已經單獨檢查了每個函式并且每個函式都運行良好。
我從用戶那里得到兩個數字,我的目標是列印出兩個數字之間的每個數字,包括它們。
void main(void){
int a, b;
printf("\n Hello, how are you? Please enter the two numbers: \n");
scanf("%d %d", &a,&b);
printf("\n isPrime numbers: \n");
for(a; a<=b; a ){
if(isPrime(a) == 1){
printf("%d, ", a);
}
}
printf("\n isStrong numbers: \n");
for(a; a<=b; a ){
if(isStrong(a) == 1){
printf("%d, ", a);
}
}
printf("\n isPalindrome numbers: \n");
for(a; a<=b; a ){
if(isPalindrome(a) == 1){
printf("%d, ", a);
}
}
printf("\n isArmostrong numbers: \n");
for(a; a<=b; a ){
if(isArmstrong(a) == 1){
printf("%d, ", a);
}
}
}
此代碼僅列印出素數的第一個 for 回圈。
Hello, how are you? Please enter the two numbers:
1 100
isPrime numbers:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
isStrong numbers:
isPalindrome numbers:
isArmostrong numbers:
uj5u.com熱心網友回復:
在第一個 for 回圈之后
for(a; a<=b; a ){
由于在回圈中增加變數 a,變數 a 變得大于變數 b。因此,以下 for 回圈中的條件評估為 false。
例如,您可以在 for 回圈中引入區域變數
for( int i = a; i <= b; i ){
if(isPrime(i) == 1){
printf("%d, ", i);
}
}
請注意,根據 C 標準,沒有引數的函式 main 應宣告為
int main( void )
uj5u.com熱心網友回復:
你永遠不會重置a。所以在第一個 for 回圈中,a將等于 1,然后爬升到b. 但是在下一個回圈中,a仍然等于 100。嘗試將用戶輸入存盤在一個單獨的變數中,并且a每次都重置。
uj5u.com熱心網友回復:
您可以將 a 存盤到某個臨時變數中,然后用它初始化每個 for 回圈。
int a, b, tmp;
scanf("%d %d", &a,&b);
tmp=a;
然后你可以像這樣初始化每個 for 回圈
for(a=tmp; a<=b; a ){
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348117.html
