C++題目:一個數如果恰好等于它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數"。 編程式找出N之內的所有完數,并按下面格式輸出其因子:
撰寫了程式:
#include<cstdio>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int z=0;
for(int j=1;j<=i/2;j++)
{
if(i%j==0)
z+=j;
}
if(z==i)
{
printf("%d",z,"its factors are");
for(int j=1;j<=i/2;j++)
{
if(i%j==0)
printf(" %d ",j);
}
printf("\n");
}
}
return 0;
}
提示運行結果錯誤,于是更改了檔案頭和輸入輸出方式:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=2;i<=n;i++)
{
int sum=0;
for(int j=1;j<=i/2;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
{
cout<<i<<" its factors are ";
for(int j=1;j<=i/2;j++)
{
if(i%j==0)
cout<<j<<' ';
}
cout<<endl;
}
}
return 0;
}
運行正確。。
請問這兩段代碼中演算法不是一樣的嗎?為何第一個會出錯?他們的檔案頭有些什么區別呢??
uj5u.com熱心網友回復:
有人知道嗎?
uj5u.com熱心網友回復:
#include <cstdio> //函式宣告在命名空間std里using namespace std;
或者
#include <stdio.h> //函式宣告在全域命名空間
uj5u.com熱心網友回復:
嗯,我想知道的是,上面我貼的兩段代碼中,為什么一個運行結果會出錯,一個正確呢?uj5u.com熱心網友回復:
第一個在#include <cstdio> 后面加上using namespace std;
或者改成:
#include <stdio.h>
uj5u.com熱心網友回復:
第一個沒有宣告命名空間namespaceC++標準程式庫中的所有識別符號都被定義于一個名為std的namespace中
加個use
uj5u.com熱心網友回復:
確認一下,是編譯出錯 ,還是運行出錯。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58958.html
標籤:基礎類
