久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

循環(huán)結(jié)構(gòu)算法小練習(xí)

 戴維圖書館 2017-05-12

輸入一個10的9次方的正整數(shù),輸出它的位數(shù),。例如輸入123,,的位數(shù)為3。

復(fù)制代碼
#include <conio.h>
#include<iostream>
using namespace std;
int main(){
    int n,count=1;
    cin>>n;//輸入n
    while(n/10>=1){
      n = n/10;
      //cout<<n<<"\n";
      count++;
    }
    cout<<count;//輸出位數(shù)
    getch();
    return 0;
}
復(fù)制代碼

水仙花數(shù)
輸出100~999中所有水仙花數(shù)。若3位數(shù)ABC滿足ABC=A3+B3+C3,則稱其為水仙花數(shù)。
例如153=1的3次方+5的3次方+3的3次方。
分析:循環(huán)判斷解決之,。

復(fù)制代碼
#include <conio.h>
#include<iostream>
using namespace std;
int main(){//cout.precision(2);
    int n,a,b,c;
    for(n=100;n<=999;n++){
      a = n/100;//獲取高位
      c = n%10;//獲取低位
      b = (n/10)%10;//獲取中位
      if(n==a*a*a+b*b*b+c*c*c){//判斷用==
        cout<<n<<"\n";
      }                      
    }
    getch();
    return 0;
}
復(fù)制代碼

韓信點兵
相傳韓信才智過人,只要讓士兵先后三人一排,、五人一排,、七人一排地變換隊形,而他只要掠一眼隊伍的排尾就知道總?cè)藬?shù)了,。
輸入3個非負(fù)整數(shù)a,,b,c表示每種隊形排尾的人數(shù)(a<3,b<5,c<7),,輸出總?cè)藬?shù)的最小值,。
已知總?cè)藬?shù)不小于10,,不超過100。
樣例輸入:2 1 6
樣例輸出:41
樣例輸入:2 1 3
樣例輸出:No answer
分析:循環(huán)判斷之,,也就是通過枚舉來獲取結(jié)果,。這就利用了計算機(jī)快的優(yōu)勢了。

復(fù)制代碼
#include <conio.h>
#include<iostream>
using namespace std;
int main(){//cout.precision(2);
    int n,a,b,c;
    bool flag = false;
    cin>>a>>b>>c;
    for(n=10;n<=100;n++){
      if(n%3==a&&n%5==b&&n%7==c){
        cout<<n<<"\n";
        flag = true;
      }
    }
    if(!flag){
      cout<<"No answer";
    }
    getch();
    return 0;
}
復(fù)制代碼

倒三角形
輸入正整數(shù)n<=20,輸出一個n層的倒三角形,。例如n=5時輸出如下:
#########
 #######
  #####
   ###
    #
分析:循環(huán)解決之,,每次長2

復(fù)制代碼
#include <conio.h>
#include<iostream>
using namespace std;
int main(){//cout.precision(2);
    int i,j,n;
    cin>>n;
    for(i=n;i>0;i--){
      //空格輸出
      for(j=0;j<n-i;j++){
        cout<<" ";
      }
      //#號輸出
      for(j=0;j<2*i-1;j++){
        cout<<"#";
      }
      cout<<"\n";
    }
    getch();
    return 0;
}
復(fù)制代碼


調(diào)和級數(shù)
輸入正整數(shù)n,輸出H(n)=1+1/2+1/3+...+1/n的值,,保留3位小數(shù),。例如n=3時答案為1.833。
分析:循環(huán)解決之,。

復(fù)制代碼
#include <conio.h>
#include<stdio.h>
int main(){
    int i,n;
    double s;
    scanf("%d",&n);
    for(i=1;i<=n;i++){//可以舉例判斷是小于還是小于等于
      s += 1.0/i; //1.0除以i才可以得到小數(shù),,否則如果是1除以i,則為0
    }
    printf("%.3lf",s);
    getch();
    return 0;
}
復(fù)制代碼

近似計算
計算PI/4 = 1 - 1/3 + 1/5 - 1/7 +...,,直到最后一項小于10負(fù)6次方,。
分析:循環(huán)條件解決之。

復(fù)制代碼
#include <conio.h>
#include<stdio.h>
int main(){
    double pi=0;
    int i = 1,count = 1;
    while(1.0/i>=0.000001){
      if(count%2 == 1){
        pi += 1.0/i;
      }else{
        pi -= 1.0/i;
      }
      i += 2;
      count++;
    }
    printf("%.9lf",4*pi);
    getch();
    return 0;
}
復(fù)制代碼


子序列的和
輸入兩個正整數(shù)n<m<10的6次方,,輸出1/n*n+1/(n+1)*(n+1)+...+1/m*m,保留5位小數(shù),。
例如n=2,m=4時答案是0.42361,。
分析:循環(huán)解決之,。

復(fù)制代碼
#include <conio.h>
#include<stdio.h>
int main(){
    double sum = 0;
    int n,m,t;
    scanf("%d%d",&n,&m);
    if(n>m){
      t = n;
      n = m;
      m = t;
    }
    while(n<=m){
      sum += 1.0/(n*n);//必須加個括號,不然會從前往后執(zhí)行
      n++;
    }
    printf("%.5lf",sum);
    getch();
    return 0;
}
復(fù)制代碼


分?jǐn)?shù)化小數(shù)
輸入正整數(shù)a,b,c,,輸出a/b的小數(shù)形式,,精確到小數(shù)點后c位。
a,,b<=10的6次方,,c<=100。
例如a=1,,b=6,,c=4時應(yīng)輸出0.1667,。

復(fù)制代碼
#include <conio.h>
#include<stdio.h>
int main(){
    int a,b,c,n;
    double result;
    scanf("%d%d%d",&a,&b,&c);
    char s[]="%.0lf\n";
    s[2] = c+'0';//動態(tài)設(shè)置精確位數(shù)
    result = (double)a/b;
    printf(s,result);
    getch();
    return 0;
}
復(fù)制代碼


排列
用1,2,3,...,9組成3個三位數(shù)abc,def和ghi,,每個數(shù)字恰好使用一次,要求abc:def:ghi = 1:2:3,。
輸出所有解,。
分析:從i=123到i=987/3循環(huán),思考之后會排出很多沒用的計算,。
然后算出2*i,3*i,。
然后判斷它是否由1,2,3,...,9組成,。

復(fù)制代碼
#include <stdio.h>
#include <conio.h>
int func(int a)
{
int temp, flag[10] ={1,0,0,0,0,0,0,0,0,0};//把整個數(shù)組初始化為0;
for(temp=a%10;a;a/=10,temp=a%10)
if(flag[temp]++ == 1) return 0;//如果有相同的位,,則數(shù)組的那個位會被++兩次
return 1;
}
int main()
{
int base;
for(base=123; base<345; base++)
if(func(base*1000000+base*2*1000+base*3)==1)
printf("%d %d %d\n", base, base*2, base*3);
getch();
return 0;
}
復(fù)制代碼

我的版本

復(fù)制代碼
#include <conio.h> 
#include<stdio.h>
int func(int a){
   int temp,flag[10]={1};//定義一個臨時變量和一個十個元素的數(shù)組
   //如果初始化時指定的的元素個數(shù)比數(shù)組大小少,,剩下的元素都回被初始化為0。 
   for(temp=a%10;a;a/=10,temp=a%10)//從末尾開始判斷,,直至全部判斷完成 
     if(flag[temp]++ == 1)
     {
       return 0;
     }//比較之后再加1,,如果加一之前已經(jīng)為1,說明已存在 
   return 1;
}
int main(){
    int base;
    for(base=123;base<329;base++){ 
        if(func(base*1000000+base*2*1000+base*3)==1){ 
            printf("%d  %d  %d\n", base, base*2, base*3);
        } 
    }
    getch(); 
    return 0;
}
復(fù)制代碼

192  384  576
219  438  657
273  546  819
327  654  981

小結(jié):思路很清晰,,多舉一反三,,看看有哪些方法可以解決之。比較各方法的優(yōu)缺點,。挺好玩的額,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多