典型的三道編程練習題

第一題

(1)猜名次
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果:c++

A選手說:B第二,我第三;編程

B選手說:我第二,E第四;ide

C選手說:我第一,D第二;函數

D選手說:C最後,我第三;ui

E選手說:我第四,A第一;code

比賽結束後,每位選手都說對了一半,請編程肯定比賽的名次
首先呢,編程的目的就是爲了解決實際問題,當咱們看到這道題的時候,須要跳脫出咱們本身的固定思惟,學會編程思惟,倆者之間其實就是一個轉換,大概步驟:
1,讀題,瞭解到題目在表達什麼,須要作什麼,結果是要求什麼
2.進行簡單的分析,麻煩的,瑣碎的思惟留給替你打工的計算機;string

代碼展現;void gue***ank()//調用函數it

{io

int a, b, c, d, e;//int型是由於a,b.c.e.爲變量,賦值12345.排名;

for (a = 1; a <= 5; a++) //五層循環找到每一個人可能排到的名次,一人有五種可能

{

    for (b = 1; b <= 5; b++)  

    {

        for (c = 1; c <= 5; c++) 

        {

            for (d = 1; d <= 5; d++) 

            {

                for (e = 1; e <= 5; e++) 

                {

                    if ((b == 2) + (a == 3) == 1

                        && (b == 2) + (e == 4) == 1

                        && (c == 1) + (d == 2) == 1

                        && (d == 3) + (c == 5) == 1

                        && (e == 4) + (a == 1) == 1)//進行篩選,由題分析獲得的篩選條件;代碼寫於此處基本已完成,能夠試一下運行看結果

                    {

                        if (a * b * c * d * e != 120) //由上面結果能夠獲得,知足體幹條件的狀況裏面,有重複排名的狀況,此處進行這個操做,是在保證五人排名相異;

                        {

                            continue;跳出

                        }

                        printf("a = %d, b = %d, c = %d, d = %d, e = %d\n", a, b, c, d, e);//打印結果,注意格式

                    }

                }

            }

        }

    }

}

}class

int main()

{

gue***ank();//函數調用,這裏會發現函數其實並未傳參

return 0;

}

第二題

日本某地發生了一件謀殺案,警察經過排查肯定殺人兇手必爲4個嫌疑犯的一個。

如下爲4個嫌疑犯的供詞:

A說:不是我。

B說:是C。

C說:是D。

D說:C在胡說

已知3我的說了真話,1我的說的是假話。

如今請根據這些信息,寫一個程序來肯定到底誰是兇手
(1)問題的結果是輸出兇手
(2)輸出結果爲A.B C D,k考慮到字符類型
(3)條件是三真一假,轉化爲代碼如何構建

int main()
{
    char murder;
    int i = 0, sum = 0;
    for (i = 1; i <= 4; i++)
    {
        murder = 64 + i;//murder爲char類型,轉爲ABCD
        sum = (murder != 'A') + (murder == 'C') + (murder == 'D') + (murder != 'C');
        if (sum == 3)
        {
            printf("兇手是:%c", murder);
        }
    }
    return 0;
}

第三題

楊輝三角
總結規律:
// 1. 每一行, 第一列和最後一列都是 1
// 2. 每一行, 列數, 和當前行號相同
// 3. 第 row 行 第 col 列 元素的內容, row-1行 col-1列 + row-1行 col列
// 例如, 第3行第2列值是 2 , 第 2 行第 1 列 和 第2行 第2列 和

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//
//楊輝三角
//1.首位是1;
//2.出首尾外,每次的數字爲上一行,上一列所在和上一行,所在列的和;
void print_yanghui(int n)
{
    int arr[15][15] = { 0 };//此處的15是隨手給的,若是須要動態變化的話,可使用·例如malloc,
    for (int row = 1; row <= n; row++)//行的循環
    {
        for (int col = 1; col <= row; col++)//列的循環
        {
            if (col == 1 || col == row)//首尾爲一
            {
                arr[row][col] = 1;
            }
            else
            {
                arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];
            }
            printf("%d", arr[row][col]);//打印一行
        }printf("\n");//打印完一行後換行操做
    }
}
int main()
{
    int n = 0;
    printf("親輸入要打印的楊輝三角的行數>");//此處給定基礎數量的自定義操做
    scanf("%d", &n);
    print_yanghui(10);
    return 0;
}
相關文章
相關標籤/搜索