⑴ c語言。。完美立方。。求大神
您好!很高興為您解答。
改代碼事小,把演算法邏輯中的錯誤找到才是關鍵。
按LZ的邏輯:
for(a=5;a<=n;a++){
for(d=a-1;d>3;d--){
for(c=d-1;c>2;c--){
for(b=c-1;b>1;b--){
我比較能理解LZ的想法,a非降序的條件下,保證a相同時d非升序排列(相當於b+c升序),再保證d相同時c非升序排列(相當於b升序),因此保證了b升序排列。
但前提是只有a相同時d也相同才能保證c非升序,b升序;如果a相同時d降序,上面的邏輯完全不適用(不知道LZ有沒有體會到這層意思……),就比如:
(87,20,54,79)
(87,38,48,79)
此處d都為79,所以只要c非升序,b一定升序。
而下面:
(90,25,38,87)
(90,10,60,80)
一旦d降序排列,就不能保證c非升序排列,同時如果很不幸地c升值得比d降值大得多,b就變成降序排列了,出錯。
如果要優先確保b為降序排列,那就應該把b的循環寫在前面才能夠很好地控制。
程序修改如下:
#include<stdio.h>
int main()
{
int n,a,b,c,d;
scanf("%d",&n);
for(a=5;a<=n;a++){
for(b=4;b<=a-1;b++){
for(c=3;c<b-1;c++){
for(d=2;d<=c-1;d++){
if(a*a*a==b*b*b+c*c*c+d*d*d){
printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
}
}
}
}
return 0;
}
望採納~如您還有不解,歡迎追問~
⑵ C語言中立方怎麼表示
可以用連乘來計算,如:
d=i*i*i;
或者用pow()函數,如:
#include <math.h>
double d;
d=pow(i,3);
⑶ c語言求平方與立方
#include <stdio.h>
#include<conio.h>
int vabs(int x)
{
if(x<0)return -x;
return x;
}
int main()
{
int n,m,sc,sq;
int i,CS=1;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n>m)
{
i=n;
n=m;
m=i;
}
sc=0;
sq=0;
for(i=n;i<=m;i++)
{
if(i%2==1)
{
sc+=i*i*i;
}
else sq+=i*i;
}
printf("Case %d:\n",CS);
CS++;
printf("%d-%d=%d\n",sq,sc,vabs(sq-sc));
}
return 0;
}
⑷ C語言中求變數的平方或立方怎樣打出來
樓上的我都同意!
都是正確答案!^_^!
階乘沒有符號表示的!階乘是用遞歸調用來實現的!
⑸ 用C語言編寫一個求立方的程序
#include <stdio.h>
#include<math.h> //pow()所需的頭文件
int main(int argc, char *argv[])
{
int a,b;
scanf("%d%d",&a,&b);
double sum=pow(a,b);//調用計算平方的庫函數
printf("%.2f",sum);//.2f保留小數點後兩位
return 0;
}
⑹ c語言X的立方
#inclued <stdio.h>
int power(int x,int n) ; //函數聲明
void main()
{
int x; //底數x
int n; //次方n
int result;//結果
printf("請分別輸入底數,次方:\n");
scanf("d%d%",&x,&n); //從鍵盤讀取底數和次方
result=power(x,n); //調用外部算次方函數
printf("%d的%d次方是:%d",&x,&n,&result);
}
int power(int x,int n)
{
int i;
int pow=1;
for(i=1;i<=n;i++) //用for 循環來求X的N次方
{
power*=x;
}
return power; //結果返回
}
我直接在這上面寫的,沒有在編譯器上調試,看懂了知道思路就可以了
已經是最詳細的了
⑺ C語言中求一個數的三次方
注意看一下程序的注釋部分,希望能幫到你:
#include<stdio.h>
main()
{
intx,y;
printf("請輸入數字:");//這里加上一句友情提示
scanf("%d",&x);//這里的上下兩句對調,同時x的前面加上&地址符
y=x*x*x;//這里的上下兩句對調
printf("y=%d ",y);
}
上面的程序,求一般的數值,夠了,但是數太大,就會溢出了,建議x、y變數改成double 類型
#include<stdio.h>
main()
{
doublex,y;
printf("請輸入數字:");//這里加上一句友情提示
scanf("%d",&x);//這里的上下兩句對調,同時x的前面加上&地址符
y=x*x*x;//這里的上下兩句對調
printf("y=%d ",y);
}
⑻ c語言中,開三次方用什麼
c語言中,開三次方用pow函數。即double pow(double number, double power)。
pow函數的主要作用是返回給定數字的乘冪。POWER函數的語法為:double pow(doublenumber, doublepower),其中參數number表示底數;參數power表示指數。
兩個參數可以是任意實數,當參數power的值為小數時,表示計算的是開方;當參數number取值小於0且參數power為小數時,POWER函數將返回-1錯誤值。
(8)c語言立方擴展閱讀:
C/C++提供以下幾種pow函數的重載形式:
1、double pow(double X,int Y)。
2、float pow(float X,float Y)。
3、float pow(float X,int Y)。
4、long double pow(long double X,long double Y)。
5、long double pow(long double X,int Y)。
使用的時候應合理設置參數類型,避免有多個「pow」實例與參數列表相匹配的情況。
其中較容易發生重載的是使用形如:
int X,Y;
int num=pow(X,Y);
這是一個比較常用的函數,但是編譯器會提醒有多個「pow」實例與參數列表相匹配。
可以使用強制類型轉換解決這個問題:num=pow((float)X,Y)。
⑼ C語言求立方。。。
可以,但是C語言裡面有單獨的函數解決這類問題。原型:extern float pow(float x, float y); 用法:#include <math.h> 功能:計算x的y次冪。 說明:x應大於零,返回冪指數的結果。 舉例: // pow.c #include <syslib.h> #include <math.h> main() { clrscr(); // clear screen textmode(0x00); // 6 lines per LCD screen printf("4^5=%f",pow(4.,5.)); getchar(); return 0; }
⑽ c語言求立方和
#include<stdio.h>
int main(){
int x,y;
sacnf("%d,%d",&x,&y);
printf("%d^3+%d^3=%d",x,y,(x*x*x+y*y*y));
return 0;
}