国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青

這篇具有很好參考價值的文章主要介紹了頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

求1000以內(nèi)所有的水仙花數(shù)

任務(wù):求1000以內(nèi)所有的水仙花數(shù)。若一個 3 位整數(shù)的各位數(shù)字的立方之和等于這個整數(shù),稱之為“水仙花數(shù)”。

#include <stdio.h>
int main()
{
	//掌握水仙花數(shù)算法,關(guān)鍵在于提取百位、十位、個位的方法
	/********** Begin **********/
    int a,b,c,x;
    for(x=100;x<1000;x++)
    {
        a=x%10;//a為x個位數(shù)
        b=x/10%10;//b為x十位數(shù)
        c=x/100;//c為x的百位數(shù)
        if(a*a*a+b*b*b+c*c*c==x)
        printf("%d ",x);
    }
   /********** End **********/
	return 0;
}

注:

  • 前面題目寫過,取余可以提取刀整數(shù)的末尾數(shù)字,只要逐步提取出來判斷就行。
  • 不能改變x的值(如x<10),否則循環(huán)一直無法達(dá)到x<1000,會陷入死循環(huán)。

用for循環(huán)求s=a+aa+aaa+aaaa+…的值

任務(wù):輸入正整數(shù)a和n,計(jì)算s=a+aa+aaa+aaaa+aa…a(n個a)的值。注意不是乘而是如這樣的5+55+555

#include <stdio.h>
int main(void)
{
    // 請?jiān)诖颂砑哟a
    /********** Begin *********/
    int a,n,sum,num,i;
    scanf("%d%d",&a,&n);
    for(i=1,sum=0,num=0;i<=n;i++)
    {
        num+=a*pow(10,i-1);
        sum+=num;
    }
    printf("%d",sum);
    /********** End **********/
    return 0;
}

  • 這里設(shè)置i是為了更好的控制循環(huán),保證有n個a。
  • num是記錄每次a的值(即,a,aa,aaa…)然后加給sum。

輸入某班C語言考試成績,人數(shù)未知,用-1作為結(jié)束標(biāo)志,若大于100分,則重新輸入,計(jì)算全班的最高分、最低分與平均分

任務(wù):輸入某班C語言考試成績,該班人數(shù)未知,用 -1 作為結(jié)束標(biāo)志,若輸入大于 100 分或小于 0 分,則重新輸入,然后計(jì)算全班的最高分、最低分與平均分。

#include <stdio.h>
int main()
{	
	double temp,sum,avg,max,min;
	int i=0;
	/*********Begin*********/
    max=0;
    min=100;
	while(temp!=-1)
    {
        scanf("%lf",&temp);
        if(temp>100||temp<0)
        continue;
        i++;
        sum+=temp;
        avg=sum/i;
        max=(temp>max)?temp:max;
        min=(temp<min)?temp:min;

    }
	/*********End**********/ 
	if(i!=0)
	{
		avg=sum/i;	
		printf("全班一共有學(xué)生:%d\n",i);
		printf("全班平均分:%.1lf\n",avg);
		printf("全班最高分:%.1lf\n",max);
		printf("全班最低分:%.1lf\n",min);
	}
	else
		printf("輸入了0個合法的分?jǐn)?shù)\n");
	return 0;
}

注:

  • 輸入要大于100,小于0,所以再scanf后接著條件判斷接continue,直接篩掉不符合條件的值,一定要馬上接條件判斷,不影響后面的值。
  • 輸入一個正確值,i就遞增,循環(huán)結(jié)束就能知道班級人數(shù),用總分除人數(shù)得平均分。
  • max=0,min=100,先設(shè)置好,這樣在后面不斷比較中,替換掉max,min值。
  • 這里運(yùn)用了條件運(yùn)算符()?:,當(dāng)然也可以用if else條件句代替,只是這樣做代碼更簡潔。

打印九九乘法口訣表

任務(wù):根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,輸出上三角的的乘法口訣表。

頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青

#include <stdio.h>
int  main()
{
    /********** Begin **********/
    int i,j;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
        {
            if(j>=i)
            printf("%d*%d=%d",i,j,i*j);
            printf("\t");
        }
        printf("\n");
    }


    /********** End **********/
    return 0;
}

注:觀察可知,上三角里面的j>=i,設(shè)置一個if條件判斷就行,但是制表符要提出來,如果不提出來,制表符也會受if條件限制,只要j<i就不打印制表符,打印制表符數(shù)量大大減少,就會打印為左上三角,如圖:

頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青

求正整數(shù)n之內(nèi)的所有完數(shù)

任務(wù):練習(xí)-輸入正整數(shù)n,求n之內(nèi)的所有完數(shù)。(練習(xí)-輸入正整數(shù)n,求n之內(nèi)的所有完數(shù)。因子是質(zhì)數(shù)或1)

#include <stdio.h>
int main()
{	//完數(shù)等于因子之和,因子包括質(zhì)數(shù)和1
	/********** Begin **********/
    int m,n,i,sum;//變量m為質(zhì)數(shù)
    scanf("%d",&n);
    for(m=1;m<=n;m++)//第一個循環(huán)更新m,第二個循環(huán)更新i
    {
        for(i=1,sum=0;i<m;i++)
        {
        if(m%i==0)
        sum+=i;
        }
        if(sum==m)
        printf("%d ",sum);
    }
       /********** End **********/
	return 0;
}
  1. 判斷質(zhì)數(shù):設(shè)置變量m,檢測n以內(nèi)的所有質(zhì)數(shù),所以n<=m,且m++。設(shè)置內(nèi)部循環(huán),判斷質(zhì)數(shù),質(zhì)數(shù)是只有本身和1能除盡,所以令i++,設(shè)置i<m且i=1,這樣遍歷所有數(shù)直到m的前一個值。若無可以除盡的就說明這個數(shù)是質(zhì)數(shù)。

  2. 內(nèi)循環(huán)每次將sum設(shè)置為0保證sum不會將前面的值加進(jìn)來

    sum就是從1開始的質(zhì)數(shù)的和,若有質(zhì)數(shù)m等于sum,那么這個質(zhì)數(shù)就是完數(shù)。

輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)

任務(wù):輸入兩個正整數(shù) m 和 n,求其最大公約數(shù)和最小公倍數(shù)。

相關(guān)知識:頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青

#include<stdio.h>
int main(void)
{  
    /*********Begin*********/
    int m,n,t,m1,n1;
    scanf("%d%d",&m,&n);
    m1=m;
    n1=n;
    t = m % n;
    while( t )
    {
        m = n;
        n = t;  
        t = m%n;    
    }   
    printf("最大公約數(shù)是:%d\n最小公倍數(shù)是:%d",n,m1*n1/n);

    /*********End**********/ 
    return 0;
}

注:這里設(shè)置m1,n1是保留m,n原來的值

用while循環(huán)求1+2+3+…+n之和

任務(wù):輸入 n,使用 while 循環(huán)語句求1+2+3+…+n之和。

#include <stdio.h>
int main()
{
    int i=1,sum=0,n;
    scanf("%d",&n);
    /********** Begin **********/
    while(i<=n)
    {
        sum+=i;
        i++;
    }
    /********** End **********/
    printf("sum=%d\n",sum);              
    return 0;
}

輸入正整數(shù),判斷該數(shù)是否是完數(shù)

任務(wù):一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如6=1+2+3,編程判斷n是否是完數(shù),n從鍵盤輸入。

#include <stdio.h>
int main()
{	//完數(shù)等于因子之和,因子包括質(zhì)數(shù)和1
	/********** Begin **********/
    int m,n,i,sum;//變量m為質(zhì)數(shù)
    scanf("%d",&n);
    for(m=1;m<=n;m++)
    {
        for(i=1,sum=0;i<m;i++)
        {
        if(m%i==0)
        sum+=i;
        }
        if(sum==n)
        printf("Yes\n");
    }
    if(sum!=n)
    printf("No\n");
       /********** End **********/
	return 0;
}

注:判斷完數(shù)的原理和前面題目相同,但是這里完數(shù)判斷出來,并不將其打印,而是打印YES。不能直接用else打印NO因?yàn)橛匈|(zhì)數(shù)出現(xiàn)出外層循環(huán)時會打印NO,放在循環(huán)外則不會有這種風(fēng)險(xiǎn)。

求Fibonacci數(shù)列的前12個數(shù)

任務(wù):求Fibonacci數(shù)列的前12個數(shù)。Fibonacci數(shù)列有如下特點(diǎn):第1、2 兩個數(shù)為1、1,從第 3 個數(shù)開始,該數(shù)是其前面兩個數(shù)之和,即為: 1,1,2,3,5,8,13,21,……。

頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青

輸出格式:

頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青

#include <stdio.h>
int main()
{
    /********** Begin **********/
    int month,sum,s1,s2,i;
    for(month=1,sum=1,s1=1;month<=12;month++)
    {
        s2=sum;
        if(month>2)
        {
        s2=s1;
        s1=sum;
        sum=s1+s2;
        }
        printf("第%d月:%d\n",month,sum);
    }

    /********** End **********/
    return 0;
}
  • 因?yàn)榈降谌齻€月才開始變化,設(shè)置if進(jìn)行限制。

  • 條件s1的值賦給s2,再將sum作為值賦給s1,sum是s1+s2得到的新值,這樣不斷更新保證賦值前s1,s2是sum前兩個值,賦值后s1再和s2相加得到下一個sum值。

隨機(jī)輸入一批整數(shù),編程計(jì)算并且輸出這批整數(shù)中5個正整數(shù)的和

任務(wù):隨機(jī)輸入一批整數(shù),有正整數(shù),負(fù)整數(shù)和零,計(jì)算并且輸出這批整數(shù)中 5 個正整數(shù)的和,當(dāng)讀入的數(shù)據(jù)為負(fù)數(shù)或 0 時,程序忽略此次輸入,直到讀入 5 個正整數(shù)時程序才停止。

#include <stdio.h>
int main()
{
	int i, n, sum=0;
   /*********Begin*********/
   i=0;
   while(i<5)
   {
      scanf("%d",&n);
      if(n>0)
      {
         i++;
         sum+=n;
      }
      else
      continue;
      }
   /*********End**********/ 
   printf("sum=%d\n",sum);
   return 0;	
}

注:i為正數(shù)的計(jì)數(shù)器,n為輸入的值,如果為正數(shù)就遞增i,并且將正數(shù)加到sum里面。

輸入正整數(shù)n,輸出n以內(nèi)的全部素?cái)?shù),并輸出n以內(nèi)所有素?cái)?shù)個數(shù)

任務(wù):輸入正整數(shù) n,輸出 n 以內(nèi)的全部素?cái)?shù),并輸出 n 以內(nèi)所有素?cái)?shù)個數(shù)。(素?cái)?shù)就是質(zhì)數(shù),一個大于1的自然數(shù),除了1和它自身外,不能被其他自然數(shù)整除的數(shù)叫做質(zhì)數(shù))

#include<stdio.h>
int main()
{
    int m,i,n=0,num=0;
    scanf("%d",&n);
    /*********Begin*********/
    for(m=2;m<=n;m++)
    {
       int is_Prime=1;
       for(i=2;i<m;i++)
       {
        if(m%i==0)
        {
        is_Prime=0;
        break;
        }
       }
       if(is_Prime==1)
       {
       printf("%d,",m);
       num++;
       }
       }

    /*********End**********/ 
    printf("\n%d以內(nèi)共有%d個素?cái)?shù)\n",n,num);
    return 0;
}

質(zhì)數(shù)不包括1,所以m,i的初始值都設(shè)為2,設(shè)置is_Prime的目的是為了輸出質(zhì)數(shù),如果不是質(zhì)數(shù)即m%i==0為真,將is_Prime變?yōu)?就防止其輸出,而且直接跳出循環(huán),也不用繼續(xù)內(nèi)層循環(huán)占用空間。如果m%i ==0在內(nèi)層循環(huán)中一直為假,那么is_Prime的值不變,這個數(shù)為質(zhì)數(shù)就會輸出。

輸入正整數(shù)m,判斷m是否是素?cái)?shù)

任務(wù):輸入正整數(shù) m ,判斷 m 是否是素?cái)?shù)。

#include<stdio.h>
int main()
{
    int m,i;
    scanf("%d",&m);
    /*判斷m是否能被2~ m-1之中任何一個整數(shù)整除*/
    /*********Begin*********/
       int is_Prime=1;
       for(i=2;i<m;i++)
       {
        if(m%i==0)
        {
        is_Prime=0;
        break;
        }
       }
       if(is_Prime==1)
       {
       printf("%d is a prime number",m);
       }
       else
       printf("%d is not a prime number",m);

    /*********End**********/ 
    /*判斷上述循環(huán)語句是否是提前結(jié)束循環(huán)*/
    /*********Begin*********/


    /*********End**********/ 
    return 0;
}

參照上一題

輸入一行字符,分別統(tǒng)計(jì)出其中的英文字母、空格、數(shù)字和其他字符的個數(shù)

任務(wù):輸入一行字符,以'#'作為結(jié)束標(biāo)志,分別統(tǒng)計(jì)出其中的英文字母、空格、數(shù)字和其他字符的個數(shù)。

#include <stdio.h>
int main()
{
	int letter=0,space=0,digit=0,other=0;
	char ch;
	//字母、數(shù)字、空格、其它字符的判定方法
	/********** Begin **********/
    do
    {
        ch=getchar();
        if(ch>=97&&ch<=122||ch>=60&&ch<=95)
        letter++;
        else if(ch==32)
        space++;
        else if(ch>=48&&ch<=57)
        digit++;
        else if(ch=='#')
        continue;
        else  other++;
    }
    while(ch!='#');

	/********** End **********/
	printf("字母有%d個,空格有%d個,數(shù)字有%d個,其他字符有%d個\n",letter,space,digit,other);  
	return 0;
}
  1. 讀取字符可以選擇getchar()函數(shù)每次讀取一個字符,將他放在循環(huán)里面便可一個一個字符的讀取。

  2. 選擇do…while循環(huán),可以保證有字符輸入,循環(huán)先執(zhí)行一次,再進(jìn)行條件判斷。

  3. 使用else if要將#號情況剔除,否則會出現(xiàn)other數(shù)目不對的情況,只需判斷字符輸入輸入中的#利用continue直接進(jìn)行while里面的條件判斷。

用do…while循環(huán)實(shí)現(xiàn)輸入一批整數(shù)統(tǒng)計(jì)正負(fù)數(shù)個數(shù)

任務(wù):用do…while循環(huán)實(shí)現(xiàn)輸入一批整數(shù),以零為結(jié)束標(biāo)志,統(tǒng)計(jì)正負(fù)數(shù)個數(shù)。

#include <stdio.h>
int main()
{
	int num,zsum=0,fsum=0;
	//循環(huán)輸入與求和
	/********** Begin **********/
    do{
        scanf("%d",&num);
        if(num>0) zsum++;
        else if(num==0) continue;
        else fsum++;
    }
    while(num!=0);
    printf("正數(shù)個數(shù)為%d\n負(fù)數(shù)個數(shù)為%d",zsum,fsum);
    /********** End **********/
	return 0;
}

do…while循環(huán)中continue會直接跳到while處進(jìn)行條件判斷。

用do…while循環(huán)按公式e=1+1/1!+1/2!+1/3!+…+1/n!計(jì)算 e 的值(精度為 1e-6)

任務(wù):編寫程序用do-while循環(huán)按公式e=1+1/1!+1/2!+1/3!+…+1/n!計(jì)算 e 的值,要求直到最后一項(xiàng)的絕對值小于精度值eps時,計(jì)算終止。輸出e的值并統(tǒng)計(jì)累加的項(xiàng)數(shù)。

#include <stdio.h>
int main()
{
	/********** Begin **********/
	int i=1;
    double e=1.0,sum=1.0,eps;
    scanf("%lf",&eps);
    do
    {
        sum*=i;
        e+=(1.0/sum);
        i++;
    }
    while((1/sum)>=eps);
    printf("i=%d\ne=%.6lf\n",i,e);
	/********** End **********/
	return 0;
}

思路:

  1. i=1,利用循環(huán)將i++,并累乘(sum*=i;),循環(huán)結(jié)束時i就是項(xiàng)數(shù)。

  2. 由e的公式可知,利用循環(huán)逐漸累加:e+=(1/sum);

  3. 當(dāng)1/sum>=eps時計(jì)算中止。

注:

  • 1e-6是科學(xué)記數(shù)法表示負(fù)六次方的精度。
  • 階乘前面還有個1不要漏掉。
  • sum要設(shè)置為浮點(diǎn)數(shù),因?yàn)閑為浮點(diǎn)數(shù),因?yàn)閏語言中整數(shù)除法相除得到一個浮點(diǎn)數(shù),小數(shù)部分會丟失。

用for循環(huán)求分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13,…,前n項(xiàng)之和

任務(wù):用for循環(huán)求分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13,…,n項(xiàng)之和。

#include <stdio.h>
int main()
{
	/********** Begin **********/
	float a=2,b=3,c=1,d=2,t,n,i,sum;
    scanf("%f",&n);
    sum+=a/c;
    for(i=1;i<n;i++)
    {
     sum+=b/d;
     t=b;
     b=a+b;
     a=t;
     t=d;
     d=c+d;
     c=t;
    }
    printf("sum=%.2f",sum);
    /********** End ***********/
	return 0;
}

注:

  • 因?yàn)檫@里優(yōu)先加了一個值,所以i只能遞增到n的前一個值。
  • 需要設(shè)置t作為中間變量交換值,使4個值保持為更新的兩個值。
  • 也可以嘗試“后一項(xiàng)分?jǐn)?shù)是前一項(xiàng)分?jǐn)?shù)的倒數(shù)加1”這個思路的寫法。

用for循環(huán)求 s=1!+ 2!+ 3!+ …+n!的值

任務(wù):編寫程序輸入n,用for循環(huán)求 s=1!+ 2!+ 3!+ …+n!的值并輸出。

#include <stdio.h>
int main()
{
	int i=1,n;
	long s=1,sum=0;
	scanf("%d",&n);
    /********** Begin **********/
    for(;i<=n;i++)
    {
        s*=i;
        sum+=s;
        printf("%d!=%ld\n",i,s);
    }
    printf("1!+2!+ …+%d!=%ld\n",n,sum);
    /********** End **********/ 
    return 0;
}

注:for循環(huán)三個式子可以不寫表達(dá)式,但是要帶上分號。

用while循環(huán)求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n) 的值

任務(wù):用while循環(huán)求編寫求s=1+(1+2)+(1+2+3)+....+(1+2+3+....+n)值的小程序。

#include <stdio.h>
int main()
{
	int i,n,sum=0,result=0;
	scanf("%d",&n);
	/********** Begin *********/
    i=1;
    while(i<=n)
    {
        result+=i;
        i++;
        sum+=result;
    }
    printf("sum=%d",sum);
    /********** End **********/
	return 0;
}

result儲存每一個括號的值,再累加到sum。文章來源地址http://www.zghlxwxcb.cn/news/detail-447339.html

到了這里,關(guān)于頭歌:《C語言程序設(shè)計(jì)編程實(shí)踐任務(wù)》循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 教學(xué)團(tuán)隊(duì):祁文青的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包