C語言程序設計實驗報告(4)


C程序設計實驗報告

實驗項目:5.3.1(2)、5.3.2(2)、5.3.4、5.3.5(1)、5.3.5(2)、5.3.5(3)、九九乘法表

姓名:蔡鵬  實驗地點:家里   實驗時間:2020年4月9日

一、實驗目的與要求:

1、熟練地掌握while,do_while及for語句實現循環的方法。


 

2、了解3種循環語句的區別和轉換、各自的適應性、循環嵌套的使用。


 

3、掌握如何在循環語句種使用break,continue語句,改變程序流程。


 

4、掌握在程序設計種用循環的方法實現各種算法。


 

二、實驗內容:

實驗練習:5.3.1 練習2 求數列的和

1.問題的簡單描述:

編寫程序,求數列1,-3!,5!,-7!,···,(-1)n-1(2n-1)!前n項的和。


 

2.實驗代碼:

#include<stdio.h>
int main()
{
    int n,i,j,sign=1;
    float fac,sum;
    printf("please input value of n:");
    scanf("%d",&n);
    sum=0.0;
    for(i=1;i<=2*n-1;i=i+2)
    {
        fac=1.0;
        {for(j=1;j<=i;j++)
        fac=j*fac;}
        sum=sum+fac*sign;
        sign=-sign;
    }
    printf("sum=%.0f\n",sum);
}

3.問題分析:注意正負號的循環



 

實驗練習:5.3.2 求水仙花數

1.問題的簡單描述:

求所有的水仙花數(水仙花數是一個3位自然數,該數各位數的立方和等於該數本身,如153為水仙花數13+53+33)。


 

2.實驗代碼:

#include <stdio.h>
main()
{
    int x,y,z;
    int k=100;
    while(k<=999)
    {
        x=k/100;
        y=(k/10)%10;
        z=k%10;
        if(k==x*x*x+y*y*y+z*z*z)
        printf("%d\n",k);
        k++;
    }
}

3.問題分析:最開始直接賦值k==x*x*x+y*y*y+z*z*z錯了,加了if判斷就對了



實驗練習:5.3.4 十進制轉換

1.問題的簡單描述:

輸入4個字符型數字,並把其轉換為十進制整數后顯示出來。


 

2.實驗代碼:

#include <stdio.h>
main()
{
    char c;
    int k,data;
    data=0;
    for(k=0;k<4;k++)
    {
        while(1)
        {
            c=getchar();
            if (c>='0'&&c<='9')
                break;    
        }
        if(k==0)
            data+=(c-'0')*1000;
        else if(k==1)
            data+=(c-'0')*100;
        else if(k==2)
            data+=(c-'0')*10;
        else if(k==3)
            data+=(c-'0')*1;
    }
    printf("Data=%d",data);
}

問題分析:最開始只用了一次判斷,if...else語句使用錯誤。



實驗練習:5.3.5 練習1 百馬百擔問題

1.問題的簡單描述:

有100匹馬,要馱100擔貨物。其中,1匹大馬可以馱3擔貨物,1匹中馬可以馱量擔貨物,兩匹小馬可以馱1擔貨物,求所需要的大馬、中馬和小馬可以有多少種組合。


 

2.實驗代碼:

#include<stdio.h>
 main()
{
    int m,n,k;
    int sum=0;
    printf("各種馱法如下:\n");
    for(m=1;m<=100;m++)
        for(n=1;n<=100-m;n++)
        {
            k=100-m-n;
            if((k%2==0)&&(3*m+2*n+0.5*k==100))
        {
            printf("大馬%3d匹;中馬%3d匹;小馬%3d匹.\n",m,n,k);
            sum++;
        }
     }
    printf("共有%d種馱法.\n",sum);
}

3.問題分析:判斷的時候要考慮小馬不能為負數,且兩匹小馬馱一擔。



實驗練習:5.3.5 練習2 求等差數列

1.問題的簡單描述:

有一個整數等差數列,已知該數列前4項之和等於26,前4項之積等於880,編寫程序求出該數列前6項的值及該數列前6項的和。


 

2.實驗代碼:

#include <stdio.h>
main()
{
    int a,b,c,d,i,sum=0;
    for(a=1;a<=26;a++)
        for(d=1;d<=26;d++)
        {
            b=4*a+6*d;
            c=a*(a+d)*(a+2*d)*(a+3*d);
            if((b==26)&&(c==880))
            {
                printf("數列的初始值為a=%d,差值為d=%d\n",a,d);
                printf("\n數列前6項的值:");
                for(i=0;i<6;i++)
                {
                    printf("%d ",a+i*d);
                    sum=sum+(a+i*d);
                }
                printf("\n");
            }
        }
    printf("\n數列的前6項的和:%d\n",sum);
 } 

3.問題分析:要通過已知條件求出首項和差值。



 

實驗練習:5.3.5 練習3 食品分配問題

1.問題的簡單描述:

有30個學生一起買小吃,共花費50元,其中,每個大學生花3元,每個中學生花2元,每個小學生花1元,求大中小學生的人數分配共有多少種不同的組合?


 

2.實驗代碼:

#include<stdio.h>
int main()
{
    int x,y,z,sum;/*x代表大學生,y代表中學生 ,z代表小學生*/
    sum=0;
    for(x=1;x<30;x++)
    {
        for(y=1;y<30;y++)
        {
            z=30-x-y;
        if((z!=0)&&50==3*x+2*y+z)
            {
                printf("大學生%3d\t中學生%3d\t小學生%3d\n",x,y,z);
                sum=sum+1;
            }
            else
            continue;
        }
     } 
    printf("共有%d種不同的組合。\n",sum);
 } 

問題分析:沒有考慮小學生花的錢不能小於0,后來加了一個條件就正確了



實驗練習:九九乘法表

1.問題的簡單描述:

編寫程序,在屏幕上輸出階梯式的乘法口訣表。


流程圖

 

 

實驗代碼:

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

問題分析:

輸出可以改成%d*%d=%2d,既可以看到數據相乘,也可以然輸出數據看上去更清楚 



 

實驗小結:

本次實驗是練習循環語句的使用,代碼編輯也很快,像for語句使用的較多,找到條件的表達式很重要,for語句中的;一定不能省略。while語句以及do...while語句也是基本掌握了,實驗過程中有許多的問題需要去注意,條件的掌握,控制十分重要,現在在中英文切換上也會十分注意,根據流程圖去編寫代碼會輕松很多,如果沒有弄清楚關系可以先畫流程圖。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM