主頁 > 軟體設計 > C語言實體練習(上)

C語言實體練習(上)

2021-02-16 15:31:10 軟體設計

??生如螻蟻當立鴻鵠之志,命薄似紙應有不屈之心!

??學編程必須動手敲代碼,所以刷題是硬道理,

??題目來源:菜鳥教程 C語言實體

??對某些題目做了一些小改動,并加入了自己的學習筆記和理解,代碼不是原教程中的代碼,是我自己作為練習寫的,每塊代碼都測驗了,應該是沒有問題,但不足之處仍無可避免,如有問題,還請各位大佬批評指正,


文章目錄

  • 1、輸出 "Hello, World!"
  • 2、輸出整數
  • 3、輸出單個字符
  • 4、輸出浮點數
  • 5、兩個整數相加
  • 6、兩個浮點數相乘
  • 7、字符轉 ASCII 碼
  • 8、多組輸入兩整數相除,如果有余數,輸出余數,
  • 9、比較兩個數的大小
  • 10、比較三個數的大小
  • 11、計算 int, float, double 和 char 位元組大小
  • 12、交換兩個數的值
  • 13、多組輸入,判斷奇數/偶數
  • 14、回圈區間范圍內的奇數/偶數
  • 15、多組輸入,判斷元音/輔音
  • 16、多組輸入,求一元二次方程的解
  • 17、多組輸入,判斷閏年
  • 18、多組輸入,判斷正數/負數
  • 19、多組輸入,判斷字母
  • 20、計算自然數的和
  • 21、九九乘法表
  • 22、斐波那契數列
  • 23、求兩數的最大公約數
  • 24、求兩數的最小公倍數
  • 25、計算階乘
  • 26、輸出26個英文字母
  • 27、判斷用戶輸入的資料為幾位數
  • 28、計算一個數的 n 次方
  • 29、判斷素數
  • 30、輸出水仙花數
  • 31、判斷回文數
  • 32、求一個數的所有因數
  • 33、創建各類三角形圖案
    • 1、正直角三角形
    • 2、翻轉直角三角形
    • 3、正數字直角三角形
    • 4、翻轉數字直角三角形
    • 5、正字母直角三角形
    • 6、翻轉字母直角三角形
    • 7、正金字塔三角形
    • 8、翻轉金字塔三角形
    • 9、菱形
    • 10、楊輝三角
    • 11、弗洛伊德三角形
  • 34、表格形式輸出資料
  • 35、實作簡單的計算器


1、輸出 “Hello, World!”

使用 scanf() 來接收輸入,使用 printf() 輸出 “Hello, World!”,

#include <stdio.h>

int main(void)
{
	printf("Hello World!\n");

	return 0;
}
//#是一個參考的標志
//include是英語參考的意思
//<stdio.h>是庫函式中的一個函式
//格式化輸入輸出函式,standard+input+output縮寫而成.h是頭檔案后綴
//int main void)的意思是main函式的回傳值型別為int,引數為空
//printf();函式是格式化列印的意思,print是列印的意思
//printf中的f有的地方說是format格式化的意思,也有的地方說是function函式的意思
//\n是轉義字符,表示換行
//return 0表示函式回傳值為0
Hello World!

2、輸出整數

使用 scanf() 來接收輸入,使用 printf()%d格式化輸出整數,

#include <stdio.h>

int main(void)
{
	int number = 0;//定義一個整型變數a,并初始化為0\

	scanf("%d", &number);//格式化輸入函式,取number的地址存放用戶輸入的數值

	printf("%d\n", number);//%d格式化列印整型引數,傳遞引數a

	return 0;
}
1
1

3、輸出單個字符

使用 scanf() 來接收輸入,使用 printf()%c格式化輸出一個字符,

#include <stdio.h>

int main(void)
{
	char ch = 0;//定義一個字符型變數ch,并初始化為0\

	scanf("%c", &ch);//格式化輸入函式,取ch的地址存放用戶輸入的字符

	printf("%c\n", ch);//%d格式化列印字符,傳遞引數ch

	return 0;
}
a
a

4、輸出浮點數

使用 scanf() 來接收輸入,使用 printf()%f 輸出浮點數,

#include <stdio.h>

int main(void)
{
	float number = 0;//定義一個單精度浮點型變數number,并初始化為0\

	scanf("%f", &number);//格式化輸入函式,取number的地址存放用戶輸入的字符

	printf("%f\n", number);//%f格式化列印浮點型資料,傳遞引數number

	return 0;
}
1
1.000000

5、兩個整數相加

使用 scanf() 來接收輸入, printf()%d 格式化輸出整數,

#include <stdio.h>

int main(void)
{
	int a, b = 0;//定義兩個整形變數,用來存放兩個整數

	printf("請輸入兩個整數,我來計算兩個數的和:\n");
	scanf("%d%d", &a, &b);//取ab的兩個地址來存放用戶輸入的資料
	printf("您輸入的兩個整數的和為%d\n", a + b);//傳遞的引數為a+b

	return 0;
}
請輸入兩個整數,我來計算兩個數的和:
520 521
您輸入的兩個整數的和為1041

6、兩個浮點數相乘

輸入兩個浮點數,計算乘積,結果保留兩位小數,

#include <stdio.h>

int main(void)
{
	float a, b = 0;

	printf("請輸入兩個數,我來計算兩個數的乘積:\n");
	scanf("%f%f", &a, &b);
	printf("您輸入的兩個數的積為%.2f\n", a * b);

	return 0;
}
請輸入兩個數,我來計算兩個數的乘積:
520 521.1415926
您輸入的兩個數的積為270993.63

7、字符轉 ASCII 碼

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL3971G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL
#include <stdio.h>

int main(void)
{
	char ch = 0;
    
	printf("請輸入一個字符:\n");
	scanf("%c", &ch);
	printf("%d", ch);

	return 0;
}
請輸入一個字符:
A
65

8、多組輸入兩整數相除,如果有余數,輸出余數,

#include <stdio.h>

int main(void)
{
	int a, b = 0;

	printf("請輸入了兩個整數:\n");

	while (~scanf("%d%d", &a, &b))//多次輸入判斷條件,也可以寫成scanf("%d%d", &a, &b)!=EOF
	{
		if (a % b == 0)
		{
			printf("您輸入的兩個數的商為%d\n", a / b);
		}
		else
		{
			printf("您輸入的兩個數的商為%d,余數為%d\n", a / b, a % b);
		}
	}

	return 0;
}
請輸入了兩個整數:
9 3
您輸入的兩個數的商為3
9 5
您輸入的兩個數的商為1,余數為4
2021 66
您輸入的兩個數的商為30,余數為41

9、比較兩個數的大小

int main(void)
{
	int a, b = 0;//這里以整型為例,宣告兩個整形變數用來存放兩個數,

	printf("請輸入了兩個整數:\n");
	scanf("%d%d", &a, &b);

	if (a > b)
	{
		printf("%d>%d", a, b);
	}
	else if(b<a)
	{
		printf("%d>%d", b, a);
	}
	else
	{
		printf("%d=%d", a, b);
	}

	return 0;
}
請輸入了兩個整數:
55 58
58>55

10、比較三個數的大小

#include <stdio.h>

int main() {
    int a, b, c;//宣告三個整型變數

    printf("請輸入三個整數\n");
    scanf("%d%d%d", &a, &b, &c);//如果直接比較應該有10種大小關系,這里只比較誰最大或者是否存在相等,

    if (a > b && a > c)
    {
        printf("%d最大", a);
    }
    else if (b > a && b > c)
    {
        printf("%d最大", b);
    }
    else if (c > a && c > b)
    {
        printf("%d最大", c);
    }
    else
    {
        printf("有兩個或三個數值相等");
    }

    return 0;
}
請輸入三個整數
45 99 98
99最大

11、計算 int, float, double 和 char 位元組大小

使用 sizeof 運算子計算int, float, doublechar四種變數位元組大小,

#include <stdio.h>

int main() 
{
    int a = 0;
    float b = 0;
    double c = 0;
    char d = 0;

    printf("int所占位元組大小為%d\n", sizeof(int));//sizeof只是個運算子,類似于+-*/不是個函式
    printf("float所占位元組大小為%d\n", sizeof(float));
    printf("double所占位元組大小為%d\n", sizeof(double));
    printf("char所占位元組大小為%d\n", sizeof(char));

    return 0;
}
int所占位元組大小為4
float所占位元組大小為4
double所占位元組大小為8
char所占位元組大小為1

12、交換兩個數的值

#include <stdio.h>

int main() 
{
    int a, b = 0;
    int temp;//臨時變數

    printf("請輸入兩個整數a,b的值:\n");
    scanf("%d%d", &a, &b);
    printf("a=%d,b=%d\n", a, b);

    temp = a;
    a = b;
    b = temp;

    printf("交換后a=%d,b=%d\n", a, b);

    return 0;
}
請輸入兩個整數a,b的值:
520 521
a=520,b=521
交換后a=521,b=520

13、多組輸入,判斷奇數/偶數

#include <stdio.h>

int main() 
{
    int a = 0;
    
    printf("請輸入一個整數:\n");

    while (~scanf("%d", &a))
    {
        if (a % 2 == 0)
        {
            printf("您輸入的數是偶數\n");
        }
        else if (a % 2 != 0)
        {
            printf("您輸入的數是奇數\n");
        }
    }

    return 0;
}
請輸入一個整數:
2020
您輸入的數是偶數
2021
您輸入的數是奇數

14、回圈區間范圍內的奇數/偶數

#include <stdio.h>

int main() 
{
    int n1, n2 = 0;
    int i = 0;

    printf("您輸入您要輸出的區間范圍\n(例如(輸入0 100表示輸出0到100之間的所有偶數))\n請選擇:>>>");
    scanf("%d%d", &n1, &n2);

    for (i = n1; i >= n1 && i <= n2; i++)
    {
        if (i % 2 == 0)
        {
            printf("%d ", i);
        }
    }

    return 0;
}
您輸入您要輸出的區間范圍
(例如(輸入0 100表示輸出0100之間的所有偶數))
請選擇:>>>33 99
34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98

15、多組輸入,判斷元音/輔音

??英語有26個字母,元音只包括 a、e、i、o、u 這五個字母,其余的都為輔音,y是半元音、半輔音字母,但在英語中都把他當作輔音,

#include <stdio.h>

int main() 
{
    char ch = 0;

    printf("請輸入多個英文字母\n");
    while (~scanf("%c", &ch) && ch != '\n')//多組輸入遇到換行停止
    {
        if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U')
        {
            printf("您輸入的字母是元音\n");
        }
        else
        {
            printf("您輸入的字母是輔音\n");
        }
    }

    return 0;
}
請輸入多個英文字母
abcDEFG
您輸入的字母是元音
您輸入的字母是輔音
您輸入的字母是輔音
您輸入的字母是輔音
您輸入的字母是元音
您輸入的字母是輔音
您輸入的字母是輔音

16、多組輸入,求一元二次方程的解

??求一元二次方程:ax 2+bx+c=0 的根,

??輸入三個實數a,b,c的值,且a不等于0,

#include <stdio.h>
#include <math.h>//sqrt()需要參考<math.h>庫函式頭檔案

int main() 
{
    float a, b, c;
    float x1, x2;
    float det;

    printf("請輸入a,b,c的值,其中a不等于0,\n");

    while (~scanf("%f%f%f", &a, &b, &c))
    {
        det = b * b - 4 * a * c;//Δ=b*b-4*a*c

        if (a != 0 && det > 0)//方程有兩個解
        {
            x1 = (-b - sqrt(det)) / (2 * a);
            x2 = (-b + sqrt(det)) / (2 * a);
            printf("方程的的根x1=%.2f,x2=%.2f\n", x1, x2);
        }
        else if (a != 0 && det == 0)//方程有兩個相同的解
        {
            x1 = (-b - sqrt(det)) / (2 * a);
            x2 = (-b + sqrt(det)) / (2 * a);
            printf("方程的的根x1=x2=%.2f\n", x1);
        }
        else if (a != 0 && det < 0)//方程無實數解
        {
            printf("方程無實數解\n");
        }
        
        if (a == 0)//a等于0
        {
            printf("a等于0的話原式不再是一元二次方程,請重新輸入,\n");
            break;
        }
    }

    return 0;
}
請輸入a,b,c的值,其中a不等于05 12 13
方程無實數解
1 -2 1
方程的的根x1=x2=1.00
1 5 1
方程的的根x1=-4.79,x2=-0.21
0 1 2
a等于0的話原式不再是一元二次方程,請重新輸入,

17、多組輸入,判斷閏年

??閏年是公歷中的名詞,閏年分為普通閏年和世紀閏年,

??普通閏年:公歷年份是4的倍數的,且不是100的倍數,為普通閏年(如2004年、2020年就是閏年),

??世紀閏年:公歷年份是整百數的,必須是400的倍數才是世紀閏年(如1900年不是世紀閏年,2000年是世紀閏年),

#include <stdio.h>

int main() 
{
    int year = 0;

    printf("請輸入幾個年份:\n");

    while (~scanf("%d", &year))
    {
        if (year % 4 == 0)
        {
            if (year % 100 == 0)
            {
                printf("此年份是世紀閏年,\n");
            }
            else
            {
                printf("此年份是普通閏年,\n");
            }
        }
        else
        {
            printf("此年份不是閏年,\n");
        }
    }

    return 0;
}
請輸入幾個年份:
2000 2008 2020 2021
此年份是世紀閏年,
此年份是普通閏年,
此年份是普通閏年,
此年份不是閏年,

18、多組輸入,判斷正數/負數

??用戶輸入一個數字,判斷該數字是正數還是負數或是零,

#include <stdio.h>

int main()
{
    int number;

    printf("請輸入幾個整數: \n");
    
    while (~scanf("%d", &number))
    {
        if (number > 0)
        {
                printf("你輸入的是正數\n");
        }
        else if (number <0)
        {
            printf("你輸入的是負數\n");
        }
        else
        {
            printf("你輸入的數是0\n");
        }
    }

    return 0;
}
請輸入幾個整數:
-1 0 1
你輸入的是負數
你輸入的數是0
你輸入的是正數

19、多組輸入,判斷字母

#include <stdio.h>

int main()
{
    char ch = 0;

    printf("請輸入一串字符:\n");

    while (~scanf("%c", &ch) && ch != '\n')
    {
        if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
        {
            printf("您輸入的字符是字母\n");
        }
        else
        {
            printf("您輸入的字符不是字母\n");
        }
    }

    return 0;
}
請輸入一串字符:
a@1A
您輸入的字符是字母
您輸入的字符不是字母
您輸入的字符不是字母
您輸入的字符是字母

20、計算自然數的和

??自然數是指表示物體個數的數,即由0開始,0,1,2,3,4,……一個接一個,組成一個無窮的集體,即指非負整數,

#include <stdio.h>
int main()
{
    int i, n, sum = 0;

    printf("您需要計算多少個自然數的和\n請輸入:");
    scanf("%d", &n);

    for (i = 0; i < n; i++)
    {
        sum += i;
    }

    printf("自然數0-%d的和為%d\n", n - 1, sum);

    return 0;
}
您需要計算多少個自然數的和
請輸入:10
自然數0-9的和為45

21、九九乘法表

??對于此類的題,類似于列印特殊三角形的題,我找到了近似通法的方法,詳情可見我的另外一篇博客,點我進入

#include <stdio.h>
int main()
{
    int i, j = 0;

    for (i = 1; i <= 9; i++)//這個所有的都是從1開始,注意
    {
        for (j = 1; j <= i; j++)//因為這里是遞增的想1 2 3 4這樣所以肯定有i來控制
                                //i起初為1,列印效果第一行也為1個,所以這里應該是就<=i
        {
            printf("%d*%d=%d ", j, i, i * j);
        }
        
        printf("\n");//列印最外層回圈換行
    }

    return 0;
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

22、斐波那契數列

??斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…

#include <stdio.h>

int main()
{
    int i, n = 0;//i用來控制回圈,n用來控制用戶輸入菲波那切數列的項數,
    int t1 = 0, t2 = 1, next = 0;//很顯然t1+t2=next的規律,后面就是回圈就好了

    printf("您要輸出幾項菲波那切數列的項數呢?\n請輸入:");
    scanf("%d", &n);

    for (i = 0; i < n; i++)
    {
        printf("%d ", t1);

        next = t1 + t2;
        t1 = t2;//往右挪一個,t1的值變成了t2,t2的值變成了next,以此類推,
        t2 = next;
    }

    return 0;
}
您要輸出幾項菲波那切數列的項數呢?
請輸入:10
0 1 1 2 3 5 8 13 21 34

23、求兩數的最大公約數

#include <stdio.h>

int main()
{
    int a, b = 0;
    int i = 0;
    int gy = 0;

    printf("請輸入兩個整數:\n");
    scanf("%d%d", &a, &b);

    for (i = 1; i <= a && i <= b; i++)//注意i要從1開始,因為0不能做除數
    {
        if ((a % i == 0) && (b % i == 0))
        {
            gy = i;
        }
    }

    printf("您輸入的兩個整數的最大公約數為%d", gy);
    return 0;
}
請輸入兩個整數:
25 5
您輸入的兩個整數的最大公約數為5

24、求兩數的最小公倍數

#include <stdio.h>

int main()
{
    int a, b = 0;
    int i = 0;
    int gb = 0;
    //這個變數是核心,最小公倍數的求法,就是先找到這兩個數中的最大值,
    //如果滿足這個最大值剛好可以被這兩個數整除,那么該數就是這兩個數的最小公倍數,如果不是那就+1

    printf("請輸入兩個整數:\n");
    scanf("%d%d", &a, &b);

    //先將兩個數的最大值找出來
    if (a >= b)
    {
        gb = a;
    }
    else
    {
        gb = b;
    }

    //開始判斷
    while (1)
    {
        if (gb % a == 0 && gb % b == 0)
        {
            printf("您輸入的兩個整數的最大公約數為%d", gb);
            break;
        }
        else
        {
            gb++;
        }
    }

    return 0;
}
請輸入兩個整數:
25 5
您輸入的兩個整數的最大公約數為25

25、計算階乘

??一個正整數的階乘(英語:factorial)是所有小于及等于該數的正整數的積,并且0的階乘為1,自然數n的階乘寫作n!,

??n!=1×2×3×…×n

#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int jc = 1;

    printf("請輸入多個自然數:\n");
    while (~scanf("%d", &n))
    {
        jc = 1;//第二組資料輸入后jc要歸1

        if (n < 0)
        {
            printf("非法輸入\n");
        }
        else if (n == 0)
        {
            printf("0!=1\n");
        }
        else if (n > 0)
        {
            for (i = 1; i <= n; i++)
            {
                jc *= i;
            }
            printf("%d!=%d\n", n, jc);
        }
    }

    return 0;
}
請輸入多個自然數:
-1 0 1 2 3 4 5
非法輸入
0!=1
1!=1
2!=2
3!=6
4!=24
5!=120

26、輸出26個英文字母

#include <stdio.h>

int main(void)
{
    char ch = 0;

    printf("輸入d顯示大寫字母,輸入x顯示小寫字母: ");
    scanf("%c", &ch);

    if (ch == 'd')
    {
        for (ch = 'A'; ch <= 'Z'; ch++)
        {
            printf("%c ", ch);
        }
    }
    else if (ch == 'x')
    {
        for (ch = 'a'; ch <= 'z'; ch++)
        {
            printf("%c ", ch);
        }
    }
    else
    {
        printf("非法輸入\n");
    }

    return 0;
}
輸入d顯示大寫字母,輸入x顯示小寫字母: d
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

27、判斷用戶輸入的資料為幾位數

??用戶輸入資料,判斷該數字是幾位數,

#include <stdio.h>

int main(void)
{
    int number = 0; //用來存放用戶輸入的數值
        int count = 0;//用來記錄我們猜測的數值位數,

    printf("請輸入一個數,我來判斷你輸入的是幾位數:\n");
    scanf("%d", &number);

    while (number != 0)//當number/10等于0時
    {
        number = number / 10;//更新number
        count++;//先更新在記錄,先記錄在更新的話記錄的是前一次數值的位數,
    }

    printf("您所輸入的數是%d位數", count);

    return 0;
}
請輸入一個數,我來判斷你輸入的是幾位數:
123456756
您所輸入的數是9位數

28、計算一個數的 n 次方

#include <stdio.h>

int main(void)
{
	int x, y = 0;
	int result = 1;
	int flag = 0;

	printf("請輸入底數:");
	scanf("%d", &x);

	printf("請輸入指數:");
	scanf("%d", &y);

	flag = y;
	while (flag != 0)
	{
		result *= x;
		flag--;
	}

	printf("%d的%d次方是%d\n", x, y, result);
}
請輸入底數:2
請輸入指數:10
210次方是1024

29、判斷素數

#include <stdio.h>

int main(void)
{
	int a = 0;
	int i = 0;

	printf("請輸入一個正整數:\n");
	scanf("%d", &a);

	if (a == 1)
	{
		printf("%d不是素數,\n", a);
	}
    
	for (i = 2; i <= a; i++)
	{
		if (a % i == 0&& a != 2)
		{
			printf("%d不是素數,\n",a);
			break;
		}
		else
		{
			printf("%d是素數,\n",a);
            break;
		}
	}
	
	return 0;
}
請輸入一個正整數:
1
1不是素數,
請輸入一個正整數:
2
2是素數,
請輸入一個正整數:
67
67是素數,

30、輸出水仙花數

??水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)

#include <stdio.h>

int main(void)
{
	int number = 0;
	int a, b, c = 0;//分別存放個位數,十位數,百位數,

	printf("所有的水仙花數:\n");

	for (number = 100; number < 999; number++)
	{
		a = number % 10;
		b = number / 10 % 10;
		c = number / 100;

		if (number == (a * a * a + b * b * b + c * c * c))
		{
			printf("%d ", number);
		}
	}

	return 0;
}
所有的水仙花數:
153 370 371 407

31、判斷回文數

??設n是一任意自然數,若將n的各位數字反向排列所得自然數n1與n相等,則稱n為一回文數,例如,若n=1234321,則稱n為一回文數;但若n=1234567,則n不是回文數,

這個題我之前也有一篇博客中寫到了,比較詳細,可以康康,點我進入

#include <stdio.h>

int main(void)
{
	int number = 0;
	int n_number = 0;
	int last_number = 0;
	int flag = 0;

	printf("請輸入一個數:\n");
	scanf("%d", &number);
	flag = number;

	number = flag;
	while (number != 0)
	{
		last_number = number % 10;
		n_number = n_number * 10 + last_number;
		number = number / 10;
	}

	number = flag;
	if (n_number == number)
	{
		printf("您輸入的數是回文數,\n");
	}
	else
	{
		printf("您輸入的數不是回文數,\n");
	}

	return 0;
}
請輸入一個數:
1234321
您輸入的數是回文數,
請輸入一個數:
123
您輸入的數不是回文數,

32、求一個數的所有因數

int main(void)
{
	int number = 0;
	int i = 0;

	printf("請輸入一個整數\n");
	scanf("%d", &number);

	for (i = 1; i <= number; i++)//0不可做除數從1開始
	{
		if (number % i == 0)
		{
			printf("%d ", i);
		}
	}

	return 0;
}
請輸入一個整數
24
1 2 3 4 6 8 12 24

33、創建各類三角形圖案

??這類題有個近似的通法,我之前的博客有寫到,而且比這個全一點,博客點我進入


1、正直角三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的直角三角形的邊數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i+1 ; j++)
		{
			printf("* ");
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的直角三角形的邊數:
5
*
* *
* * *
* * * *
* * * * *

2、翻轉直角三角形

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的翻轉直角三角形的邊數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - i ; j++)
		{
			printf("* ");
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的翻轉直角三角形的邊數:
5
* * * * *
* * * *
* * *
* *
*

3、正數字直角三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的數字直角三角形的邊數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i + 1 ; j++)
		{
			printf("%d ",j);
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的數字直角三角形的邊數:
5
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4

4、翻轉數字直角三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的翻轉數字直角三角形的邊數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - i ; j++)
		{
			printf("%d ",j);
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的翻轉數字直角三角形的邊數:
5
0 1 2 3 4
0 1 2 3
0 1 2
0 1
0

5、正字母直角三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的字母直角三角形的邊數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i + 1 ; j++)
		{
			printf("%c ",j + 65);
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的字母直角三角形的邊數:
5
A
A B
A B C
A B C D
A B C D E

6、翻轉字母直角三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的翻轉字母直角三角形的邊數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - i ; j++)
		{
			printf("%c ",j + 65);
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的翻轉字母直角三角形的邊數:
5
A B C D E
A B C D
A B C
A B
A

7、正金字塔三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的金字塔三角形的行數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - i ; j++)
		{
			printf(" ");
		}
		for (j = 0; j < i + 1; j++)
		{
			printf("* ");
		}
		printf("\n");
	}

	return 0;
}
請輸入您要輸出的金字塔三角形的行數:
5
     *
    * *
   * * *
  * * * *
 * * * * *

8、翻轉金字塔三角形

#include <stdio.h>

int main(void)
{
	int n = 0;
	int i, j = 0;

	printf("請輸入您要輸出的翻轉金字塔三角形的行數:\n");
	scanf("%d", &n);

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i + 1; j++)
		{
			printf(" ");
		}
		for (j = 0; j < n - i; j++)
		{
			printf("* ");
		}

		printf("\n");
	}

	return 0;
}
請輸入您要輸出的翻轉金字塔三角形的行數:
5
 * * * * *
  * * * *
   * * *
    * *
     *

9、菱形

#include <stdio.h>
int main(void)
{
    int n = 0;
    int i = 0, j = 0;

    while (~scanf("%d", &n))
    {
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < i; j++)
            {
                printf(" ");
            }
            for (j = 0; j < n - i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    
    return 0;
}
3
   * 
  * * 
 * * * 
* * * * 
 * * * 
  * * 
   * 

10、楊輝三角

#include <stdio.h>

int main()
{
    int rows = 0;//行數
    int number = 1;//數字值
    int space = 0;//空格
    int i, j = 0;//控制回圈

    printf("行數: ");
    scanf("%d", &rows);

    for (i = 0; i < rows; i++)
    {
        for (space = 1; space <= rows - i; space++)
            printf("  ");

        for (j = 0; j <= i; j++)
        {
            if (j == 0 || i == 0)
                number = 1;
            else
                number = number * (i - j + 1) / j;

            printf("%4d", number);
        }
        printf("\n");
    }

    return 0;
}
行數: 8
                   1
                 1   1
               1   2   1
             1   3   3   1
           1   4   6   4   1
         1   5  10  10   5   1
       1   6  15  20  15   6   1
     1   7  21  35  35  21   7   1

11、弗洛伊德三角形

#include <stdio.h> 

int main()
{
    int i, j, l;
    int n;

    printf("您要輸出幾行\n請輸入:");
    scanf("%d", &n);

    for (i = 0, l = 1; i < n; i++)//新增一個變數l
    {
        for (j = 0; j < i + 1; j++, l++)//讓l在內層回圈后加1,第二行的話就成了2開頭了
        {
            printf("%4d", l);
        }
        printf("\n");
    }
    return 0;
}
您要輸出幾行
請輸入:8
   1
   2   3
   4   5   6
   7   8   9  10
  11  12  13  14  15
  16  17  18  19  20  21
  22  23  24  25  26  27  28
  29  30  31  32  33  34  35  36

34、表格形式輸出資料

#include <stdio.h> 

int main()
{
    int i, j, l;
    int n;

    printf("您要輸出幾行\n請輸入:");
    scanf("%d", &n);

    for (i = 0, l = 1; i < n; i++)
    {
        for (j = 0; j < 10; j++, l++)
        {
            printf("%4d", l);
        }
        printf("\n");
    }
    return 0;
}
您要輸出幾行
請輸入:10
   1   2   3   4   5   6   7   8   9  10
  11  12  13  14  15  16  17  18  19  20
  21  22  23  24  25  26  27  28  29  30
  31  32  33  34  35  36  37  38  39  40
  41  42  43  44  45  46  47  48  49  50
  51  52  53  54  55  56  57  58  59  60
  61  62  63  64  65  66  67  68  69  70
  71  72  73  74  75  76  77  78  79  80
  81  82  83  84  85  86  87  88  89  90
  91  92  93  94  95  96  97  98  99 100

35、實作簡單的計算器

# include <stdio.h>

int main()
{

    char ch;
    double n1, n2;

    printf("輸入運算子 (+, -, *, \\):\n ");
    scanf("%c", &ch);

    printf("輸入兩個數字: ");
    scanf("%lf %lf", &n1, &n2);

    switch (ch)
    {
    case '+':
        printf("%.2lf + %.2lf = %.2lf", n1, n2, n1 + n2);
        break;

    case '-':
        printf("%.2lf - %.2lf = %.2lf", n1, n2, n1 - n2);
        break;

    case '*':
        printf("%.2lf * %.2lf = %.2lf", n1, n2, n1 * n2);
        break;

    case '/':
        printf("%.2lf / %.1lf = %.2lf", n1, n2, n1 / n2);
        break;

    default:
        printf("非法輸入\n");
    }

    return 0;
}
輸入運算子 (+, -, *, \):
 +
輸入兩個數字: 2020 2021
2020.00 + 2021.00 = 4041.00

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/260105.html

標籤:其他

上一篇:牛客——小w的禁忌與小G的長詩(容斥原理)

下一篇:情人節禮物 浪漫至死不渝

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more