??生如螻蟻當立鴻鵠之志,命薄似紙應有不屈之心!
??學編程必須動手敲代碼,所以刷題是硬道理,
??題目來源:菜鳥教程 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值 | 控制字符 |
|---|---|---|---|---|---|---|---|
| 0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
| 1 | SOH | 33 | ! | 65 | A | 97 | a |
| 2 | STX | 34 | " | 66 | B | 98 | b |
| 3 | ETX | 35 | # | 67 | C | 99 | c |
| 4 | EOT | 36 | $ | 68 | D | 100 | d |
| 5 | ENQ | 37 | % | 69 | E | 101 | e |
| 6 | ACK | 38 | & | 70 | F | 102 | f |
| 7 | BEL | 39 | ’ | 71 | G | 103 | g |
| 8 | BS | 40 | ( | 72 | H | 104 | h |
| 9 | HT | 41 | ) | 73 | I | 105 | i |
| 10 | LF | 42 | * | 74 | J | 106 | j |
| 11 | VT | 43 | + | 75 | K | 107 | k |
| 12 | FF | 44 | , | 76 | L | 108 | l |
| 13 | CR | 45 | - | 77 | M | 109 | m |
| 14 | SO | 46 | . | 78 | N | 110 | n |
| 15 | SI | 47 | / | 79 | O | 111 | o |
| 16 | DLE | 48 | 0 | 80 | P | 112 | p |
| 17 | DCI | 49 | 1 | 81 | Q | 113 | q |
| 18 | DC2 | 50 | 2 | 82 | R | 114 | r |
| 19 | DC3 | 51 | 3 | 83 | S | 115 | s |
| 20 | DC4 | 52 | 4 | 84 | T | 116 | t |
| 21 | NAK | 53 | 5 | 85 | U | 117 | u |
| 22 | SYN | 54 | 6 | 86 | V | 118 | v |
| 23 | TB | 55 | 7 | 87 | W | 119 | w |
| 24 | CAN | 56 | 8 | 88 | X | 120 | x |
| 25 | EM | 57 | 9 | 89 | Y | 121 | y |
| 26 | SUB | 58 | : | 90 | Z | 122 | z |
| 27 | ESC | 59 | ; | 91 | [ | 123 | { |
| 28 | FS | 60 | < | 92 | / | 124 | | |
| 29 | GS | 61 | = | 93 | ] | 125 | } |
| 30 | RS | 62 | > | 94 | ^ | 126 | ` |
| 31 | US | 63 | ? | 95 | _ | 127 | DEL |
#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, double和 char四種變數位元組大小,
#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表示輸出0到100之間的所有偶數))
請選擇:>>>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不等于0,
5 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
2的10次方是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
標籤:其他
下一篇:情人節禮物 浪漫至死不渝
