C语言实例练习(上)

2022-01-14 11:28:11 浏览数 (1)

学编程必须动手敲代码,所以刷题是硬道理。

题目来源:菜鸟教程 C语言实例

对某些题目做了一些小改动,并加入了自己的学习笔记和理解,代码不是原教程中的代码,是我自己作为练习写的,每块代码都测试了,应该是没有问题,但不足之处仍无可避免,如有问题,还请各位大佬批评指正

输出 “Hello, World!”

使用 scanf() 来接收输入,使用 printf() 输出 “Hello, World!”。

代码语言:javascript复制
#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
代码语言:javascript复制
Hello World!

输出整数

使用 scanf() 来接收输入,使用 printf()%d 格式化输出整数。

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	int number = 0;//定义一个整型变量a,并初始化为0

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

	printf("%dn", number);//%d格式化打印整型参数,传递参数a

	return 0;
}
代码语言:javascript复制
1
1

输出单个字符

使用 scanf() 来接收输入,使用 printf()%c格式化输出一个字符。

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	char ch = 0;//定义一个字符型变量ch,并初始化为0

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

	printf("%cn", ch);//%d格式化打印字符,传递参数ch

	return 0;
}
代码语言:javascript复制
a
a

输出浮点数

使用 scanf() 来接收输入,使用 printf()%f 输出浮点数。

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	float number = 0;//定义一个单精度浮点型变量number,并初始化为0

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

	printf("%fn", number);//%f格式化打印浮点型数据,传递参数number

	return 0;
}
代码语言:javascript复制
1
1.000000

两个整数相加

使用 scanf() 来接收输入, printf()%d 格式化输出整数。

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	int a, b;//定义两个整形变量,用来存放两个整数

	printf("请输入两个整数,我来计算两个数的和:n");
	scanf("%d%d", &a, &b);//取ab的两个地址来存放用户输入的数据
	printf("您输入的两个整数的和为%dn", a   b);//传递的参数为a b

	return 0;
}
代码语言:javascript复制
请输入两个整数,我来计算两个数的和:
520 521
您输入的两个整数的和为1041

两个浮点数相乘

输入两个浮点数,计算乘积,结果保留两位小数。

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	float a, b;

	printf("请输入两个数,我来计算两个数的乘积:n");
	scanf("%f%f", &a, &b);
	printf("您输入的两个数的积为%.2fn", a * b);

	return 0;
}
代码语言:javascript复制
请输入两个数,我来计算两个数的乘积:
520 521.1415926
您输入的两个数的积为270993.63

字符转 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

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	char ch = 0;
    
	printf("请输入一个字符:n");
	scanf("%c", &ch);
	printf("%d", ch);

	return 0;
}
代码语言:javascript复制
请输入一个字符:
A
65

多组输入两整数相除,如果有余数,输出余数。

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	int a, b;

	printf("请输入了两个整数:n");

	while (~scanf("%d%d", &a, &b))//多次输入判断条件,也可以写成scanf("%d%d", &a, &b)!=EOF
	{
		if (a % b == 0)
		{
			printf("您输入的两个数的商为%dn", a / b);
		}
		else
		{
			printf("您输入的两个数的商为%d,余数为%dn", a / b, a % b);
		}
	}

	return 0;
}
代码语言:javascript复制
请输入了两个整数:
9 3
您输入的两个数的商为3
9 5
您输入的两个数的商为1,余数为4
2021 66
您输入的两个数的商为30,余数为41

比较两个数的大小

代码语言:javascript复制
int main(void)
{
	int a, b;//这里以整型为例,声明两个整形变量用来存放两个数。

	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;
}
代码语言:javascript复制
请输入了两个整数:
55 58
58>55

比较三个数的大小

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入三个整数
45 99 98
99最大

计算 int, float, double 和 char 字节大小

使用 sizeof 操作符计算int, float, doublechar四种变量字节大小。

代码语言:javascript复制
#include <stdio.h>

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

    printf("int所占字节大小为%dn", sizeof(int));//sizeof只是个运算符,类似于 -*/不是个函数
    printf("float所占字节大小为%dn", sizeof(float));
    printf("double所占字节大小为%dn", sizeof(double));
    printf("char所占字节大小为%dn", sizeof(char));

    return 0;
}
代码语言:javascript复制
int所占字节大小为4
float所占字节大小为4
double所占字节大小为8
char所占字节大小为1

交换两个数的值

代码语言:javascript复制
#include <stdio.h>

int main() 
{
    int a, b;
    int temp;//临时变量

    printf("请输入两个整数a,b的值:n");
    scanf("%d%d", &a, &b);
    printf("a=%d,b=%dn", a, b);

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

    printf("交换后a=%d,b=%dn", a, b);

    return 0;
}
代码语言:javascript复制
请输入两个整数a,b的值:
520 521
a=520,b=521
交换后a=521,b=520

多组输入,判断奇数/偶数

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入一个整数:
2020
您输入的数是偶数
2021
您输入的数是奇数

循环区间范围内的奇数/偶数

代码语言:javascript复制
#include <stdio.h>

int main() 
{
    int n1, n2;
    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;
}
代码语言:javascript复制
您输入您要输出的区间范围
(例如(输入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

多组输入,判断元音/辅音

  英语有26个字母,元音只包括 a、e、i、o、u 这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入多个英文字母
abcDEFG
您输入的字母是元音
您输入的字母是辅音
您输入的字母是辅音
您输入的字母是辅音
您输入的字母是元音
您输入的字母是辅音
您输入的字母是辅音

多组输入,求一元二次方程的解

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

  输入三个实数a,b,c的值,且a不等于0。

代码语言:javascript复制
#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=%.2fn", x1, x2);
        }
        else if (a != 0 && det == 0)//方程有两个相同的解
        {
            x1 = (-b - sqrt(det)) / (2 * a);
            x2 = (-b   sqrt(det)) / (2 * a);
            printf("方程的的根x1=x2=%.2fn", x1);
        }
        else if (a != 0 && det < 0)//方程无实数解
        {
            printf("方程无实数解n");
        }
        
        if (a == 0)//a等于0
        {
            printf("a等于0的话原式不再是一元二次方程,请重新输入。n");
            break;
        }
    }

    return 0;
}
代码语言:javascript复制
请输入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的话原式不再是一元二次方程,请重新输入。

多组输入,判断闰年

  闰年是公历中的名词。闰年分为普通闰年和世纪闰年。

普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入几个年份:
2000 2008 2020 2021
此年份是世纪闰年。
此年份是普通闰年。
此年份是普通闰年。
此年份不是闰年。

多组输入,判断正数/负数

  用户输入一个数字,判断该数字是正数还是负数或是零。

代码语言:javascript复制
#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("你输入的数是0n");
        }
    }

    return 0;
}
代码语言:javascript复制
请输入几个整数:
-1 0 1
你输入的是负数
你输入的数是0
你输入的是正数

多组输入,判断字母

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入一串字符:
a@1A
您输入的字符是字母
您输入的字符不是字母
您输入的字符不是字母
您输入的字符是字母

计算自然数的和

  自然数是指表示物体个数的数,即由0开始,0,1,2,3,4,……一个接一个,组成一个无穷的集体,即指非负整数。

代码语言:javascript复制
#include <stdio.h>
int main()
{
    int i = 0, n = 0, sum = 0;

    printf("您需要计算多少个自然数的和n请输入:");
    scanf("%d", &n);

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

    printf("自然数0-%d的和为%dn", n - 1, sum);

    return 0;
}
代码语言:javascript复制
您需要计算多少个自然数的和
请输入:10
自然数0-9的和为45

九九乘法表

  对于此类的题,类似于打印特殊三角形的题,我找到了近似通法的方法,详情可见我的另外一篇博客,点我进入

代码语言:javascript复制
#include <stdio.h>
int main()
{
    int i, j;

    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;
}
代码语言:javascript复制
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

斐波那契数列

  斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……..

代码语言:javascript复制
#include <stdio.h>

int main()
{
    int i, n;//i用来控制循环,n用来控制用户输入菲波那切数列的项数。
    int t1 = 1, 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;
}
代码语言:javascript复制
您要输出几项菲波那切数列的项数呢?
请输入:9
1 1 2 3 5 8 13 21 34

求两数的最大公约数

代码语言:javascript复制
#include <stdio.h>

int main()
{
    int a, b;
    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;
}
代码语言:javascript复制
请输入两个整数:
25 5
您输入的两个整数的最大公约数为5

求两数的最小公倍数

代码语言:javascript复制
#include <stdio.h>

int main()
{
    int a, b;
    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;
}
代码语言:javascript复制
请输入两个整数:
25 5
您输入的两个整数的最大公约数为25

计算阶乘

  一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

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

代码语言:javascript复制
#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!=1n");
        }
        else if (n > 0)
        {
            for (i = 1; i <= n; i  )
            {
                jc *= i;
            }
            printf("%d!=%dn", n, jc);
        }
    }

    return 0;
}
代码语言:javascript复制
请输入多个自然数:
-1 0 1 2 3 4 5
非法输入
0!=1
1!=1
2!=2
3!=6
4!=24
5!=120

输出26个英文字母

代码语言:javascript复制
#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;
}
代码语言:javascript复制
输入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

判断用户输入的数据为几位数

  用户输入数据,判断该数字是几位数。

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入一个数,我来判断你输入的是几位数:
123456756
您所输入的数是9位数

计算一个数的 n 次方

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	int x, y;
	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次方是%dn", x, y, result);
}
代码语言:javascript复制
请输入底数:2
请输入指数:10
2的10次方是1024

判断素数

代码语言:javascript复制
#include <stdio.h>
 
int main()
{
    int n, i, flag = 0;
 
    printf("输入一个正整数: ");
    scanf("%d",&n);
 
    for(i=2; i<=n/2;   i)
    {
        // 符合该条件不是素数
        if(n%i==0)
        {
            flag=1;
            break;
        }
    }
 
    if (flag==0)
        printf("%d 是素数",n);
    else
        printf("%d 不是素数",n);
    
    return 0;
}
代码语言:javascript复制
输入一个正整数:
1
1 不是素数。
输入一个正整数:
2
2是素数。
输入一个正整数:
67
67是素数。

输出水仙花数

  水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 5^3 3^3 = 153)

代码语言:javascript复制
#include <stdio.h>

int main(void)
{
	int number;
	int a, b, c;//分别存放个位数,十位数,百位数。

	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;
}
代码语言:javascript复制
所有的水仙花数:
153 370 371 407

判断回文数

  设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。

这个题我之前也有一篇博客中写到了,比较详细,可以康康,点我进入

代码语言:javascript复制
#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;
}
代码语言:javascript复制
请输入一个数:
1234321
您输入的数是回文数。
请输入一个数:
123
您输入的数不是回文数。

求一个数的所有因数

代码语言:javascript复制
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;
}
代码语言:javascript复制
请输入一个整数
24
1 2 3 4 6 8 12 24

创建各类三角形图案

  这类题有个近似的通法,我之前的博客有写到,而且比这个全一点,博客点我进入

正直角三角形

代码语言:javascript复制
#include <stdio.h>

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

	printf("请输入您要输出的直角三角形的边数:n");
	scanf("%d", &n);

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

	return 0;
}
代码语言:javascript复制
请输入您要输出的直角三角形的边数:
5
*
* *
* * *
* * * *
* * * * *

翻转直角三角形

代码语言:javascript复制
int main(void)
{
	int n;
	int i, j;

	printf("请输入您要输出的翻转直角三角形的边数:n");
	scanf("%d", &n);

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

	return 0;
}
代码语言:javascript复制
请输入您要输出的翻转直角三角形的边数:
5
* * * * *
* * * *
* * *
* *
*

正数字直角三角形

代码语言:javascript复制
#include <stdio.h>

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

	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;
}
代码语言:javascript复制
请输入您要输出的数字直角三角形的边数:
5
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4

翻转数字直角三角形

代码语言:javascript复制
#include <stdio.h>

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

	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;
}
代码语言:javascript复制
请输入您要输出的翻转数字直角三角形的边数:
5
0 1 2 3 4
0 1 2 3
0 1 2
0 1
0

正字母直角三角形

代码语言:javascript复制
#include <stdio.h>

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

	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;
}
代码语言:javascript复制
请输入您要输出的字母直角三角形的边数:
5
A
A B
A B C
A B C D
A B C D E

翻转字母直角三角形

代码语言:javascript复制
#include <stdio.h>

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

	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;
}
代码语言:javascript复制
请输入您要输出的翻转字母直角三角形的边数:
5
A B C D E
A B C D
A B C
A B
A

正金字塔三角形

代码语言:javascript复制
#include <stdio.h>

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

	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;
}
代码语言:javascript复制
请输入您要输出的金字塔三角形的行数:
5
     *
    * *
   * * *
  * * * *
 * * * * *

翻转金字塔三角形

代码语言:javascript复制
#include <stdio.h>

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

	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;
}
代码语言:javascript复制
请输入您要输出的翻转金字塔三角形的行数:
5
 * * * * *
  * * * *
   * * *
    * *
     *

菱形

代码语言:javascript复制
#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;
}
代码语言:javascript复制
3
   * 
  * * 
 * * * 
* * * * 
 * * * 
  * * 
   * 

杨辉三角

代码语言:javascript复制
#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("M", number);
        }
        printf("n");
    }

    return 0;
}
代码语言:javascript复制
行数: 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

弗洛伊德三角形

代码语言:javascript复制
#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("M", l);
        }
        printf("n");
    }
    return 0;
}
代码语言:javascript复制
您要输出几行
请输入: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

表格形式输出数据

代码语言:javascript复制
#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("M", l);
        }
        printf("n");
    }
    return 0;
}
代码语言:javascript复制
您要输出几行
请输入: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

实现简单的计算器

代码语言:javascript复制
# 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;
}
代码语言:javascript复制
输入操作符 ( , -, *, ):
  
输入两个数字: 2020 2021
2020.00   2021.00 = 4041.00

0 人点赞