六道题 : 1.设计一个函数,用来计算b的n次方 2.(n! = 1*2*3*4*...n) 3.(1! + 2! + 3! + 4! + ... + n!) 4.成绩 5. 数组中的元素逆序存放 6.九九乘法口诀

/*

设计一个函数,用来计算b的n次方

递归的2个条件:

1.函数自己调用自己

2.必须有个明确的返回值

*/

#include <stdio.h>

int pow2(int b, int n);

int main()

{

int c = pow2(3, 2);

printf("%d\n", c);

return 0;

}

/*

pow2(b, 0) == 1

pow2(b, 1) == b == pow2(b, 0) * b

pow2(b, 2) == b*b == pow2(b, 1) * b

pow2(b, 3) == b*b*b == pow2(b, 2) * b

1> n为0,结果肯定是1

2> n>0,pow2(b, n) == pow2(b, n-1) * b

*/

int pow2(int b, int n)

{

if (n <= 0) return 1;

return pow2(b, n-1) * b;

}

/*

int pow2(int b, int n)

{

// 用来保存计算结果

int result = 1;

//result *= b;

//result *= b;

//result *= b;

//result *= b;

//....

//n次

for (int i = 0; i<n; i++)

{

result *= b;

}

return result;

}*/

?





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

/*第一题:

 提示用户输入一个正整数n,求出并输出其阶乘值n! = 1*2*3*4*...n

 要求:用递归的方式编写一个函数实现n的阶乘

*/

#include <stdio.h>

int jieCheng(int
n);

int main()

{

    // 1.定义变量存储用户输入的整数

    int
n = 0;

    

    // 2.判断n是否为正整数

    while
(n <= 0)

    {

        // 2.1 提示输入

        printf("输入一个正整数:\n");

        

        // 2.2 让用户输入

        scanf("%d", &n);

    }

    

    // 3.计算阶乘

    int
result = jieCheng(n);

    

    printf("%d! = %d\n", n, result);

    return
0;

}

int
jieCheng(int
n)

{

    // 如果n为1,那么阶乘值就是1

    if
(n == 1) return
1;

    

    // jieCheng(n) = n! = 1*2*3*...*(n-1)*n

    // jieCheng(n-1) = (n-1)! = 1*2*3*...*(n-1)

    // jieCheng(n) = jieCheng(n-1) * n

    return
jieCheng(n-1) * n;

}

  

?





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

/*第二题

 提示用户输入一个正整数n,求出并输出下列结果:1! + 2! + 3! + 4! + ... + n!

 要求:用至少两种方式实现(函数名自拟,函数个数不限)

 1> 非递归

 2> 递归

*/

#include <stdio.h>

int pieAdd(int
n);

int main()

{

    // 1.定义变量存储用户输入的整数

    int
n = 0;

    

    // 2.判断n是否为正整数

    while
(n <= 0)

    {

        // 2.1 提示输入

        printf("输入一个正整数:\n");

        

        // 2.2 让用户输入

        scanf("%d", &n);

    }

    

    // 3.计算结果

    int
result = pieAdd(n);

    

    printf("结果是%d\n", result);

    

    return
0;

}

// ------------------非递归的方式----------------

int
pieAdd(int
n)

{

    // 1.定义变量保存总和

    int
sum = 0;

    

    // 2.需要累加n次,每次累加的都是一个阶乘值

    for
(int i = 1; i<=n; i++)

    {

        // 3.计算阶乘i!

        // 3.1 定义变量保存阶乘的结果

        int
multi = 1;

        for
(int j = 1; j<=i; j++)

        {

            multi *= j;

        }

        

        // 4.累加每次的阶乘结果

        sum += multi;

    }

    

    // 5.返回和

    return
sum;

}

/*

// ------------------递归的方式----------------

// 为了代码方便和性能,额外定义一个函数求阶乘

int jieCheng(int n)

{

    // 如果n为1,那么阶乘值就是1

    if (n == 1) return 1;

    

    // jieCheng(n) = n! = 1*2*3*...*(n-1)*n

    // jieCheng(n-1) = (n-1)! = 1*2*3*...*(n-1)

    // jieCheng(n) = jieCheng(n-1) * n

    return jieCheng(n-1) * n;

}

int pieAdd(int n)

{

    // 1.如果n是1,计算结果就是1

    if (n == 1) return 1;

    

    // pieAdd(n) = 1! + 2! + ... + (n-1)!+ n!

    // pieAdd(n-1) = 1! + 2! + ... + (n-1)!

    // pidAdd(n) = pieAdd(n-1) + n!

    return pieAdd(n - 1) + jieCheng(n);

}*/

  

?





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

/* 第三题:

提示输入5个学生的成绩(保证分数在0~100之间),算出平均分、最高分、最低分,然后输出

*/

#include <stdio.h>

// 学生的个数

#define kCount 5

int main()

{

    // 1.定义一个数组保存5个学生的分数

    // 初始化一下,默认都是-1分,只要默认值不是0~100都行

    int
scores[kCount] = {-1, -1, -1, -1, -1};

    

    // 2.定义变量保存总分、最高分(默认是0分)、最低分(默认是100分)

    int
sum = 0, max = 0, min = 100;

    

    // 3.提示输入

    for
(int i = 0; i<kCount; i++)

    {

        // 3.1 如果学生的成绩不在0~100内,就重新提示输入

        while
(scores[i]<0 || scores[i]>100)

        {

            // 3.1.1 提示输入

            printf("请输入第%d个学生的成绩(0~100):\n", i + 1);

            

            // 3.1.2 接收输入

            scanf("%d", &scores[i]);

        }

        

        // 3.2 累加成绩

        sum += scores[i];

        

        // 3.3 判断最高分

        if
(scores[i] > max)

        {

            max = scores[i];

        }

        

        // 3.4 判断最低分

        if
(scores[i] < min)

        {

            min = scores[i];

        }

    }

    

    // 4.输出结果

    printf("平均分是%d,最高分是%d,最低分是%d\n", sum/kCount, max, min);

}

  

?





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

/*第四题

设计一个函数:将一维整型数组中的元素逆序存放。比如本来是1,3,4,2,逆序存放就变成了:2,4,3,1

*/

#include <stdio.h>

void reverse(int
array[], int
len);

int main()

{

    int
ages[4] = {1, 3, 4, 2};

    

    reverse(ages, 4);

    

    for
(int i = 0; i<4; i++)

    {

        printf("%d\n", ages[i]);

    }

    

    return
0;

}

// 第一个参数是数组,第二个参数是数组长度

// 不需要返回值

// 因为改变了形参数组就相当于修改了外面的实参数组

void
reverse(int
array[], int
len)

{

    // 思路:以数组中间为轴,交换左右对称元素的值

    // 比如array[0] array[1] array[2] array[3] array[4] array[5]

    // 交换array[0]和array[5]的值

    // 交换array[1]和array[4]的值

    // 交换array[2]和array[3]的值

    

    // 左边元素的下标(默认是最左边)

    int
left = 0;

    // 右边元素的下标(默认是最右边)

    int
right = len - 1;

    

    // 如果左边元素的下标 < 右边元素的下标

    while
(left < right)

    {

        // 利用中间变量交换两个元素的值

        int
temp = array[left];

        array[left] = array[right];

        array[right] = temp;

        

        // 交换一次后,左边元素下标增加,右边元素下标减小

        

        left++;

        right--;

    }

}

  

?





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

/*第五题:

输出99乘法表

 1x1=1

 2x1=2  2x2=4

 3x1=3  3x2=6   3x3=9

 4x1=4  4x2=8   4x3=12  4x4=16

 5x1=5  5x2=10  5x3=15  5x4=20  5x5=25

 6x1=6  6x2=12  6x3=18  6x4=24  6x5=30  6x6=36

 7x1=7  7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49

 8x1=8  8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64

 9x1=9  9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81

*/

#include <stdio.h>

int
main()

{

    // 一共有多少行

    for
(int row = 1; row<=9; row++)

    {

        // 一共有多少列(其实列数==行数)

        for(int
column = 1; column<=row; column++)

        {

            // \t是tab键,目的是保持每列之间有相同的距离

            printf("%dx%d=%d\t", row, column, row * column);

        }

        

        // 换行

        printf("\n");

    }

}

  

六道题 : 1.设计一个函数,用来计算b的n次方 2.(n! = 1*2*3*4*...n) 3.(1! + 2! +
3! + 4! + ... + n!) 4.成绩 5. 数组中的元素逆序存放 6.九九乘法口诀,布布扣,bubuko.com

六道题 : 1.设计一个函数,用来计算b的n次方 2.(n! = 1*2*3*4*...n) 3.(1! + 2! +
3! + 4! + ... + n!) 4.成绩 5. 数组中的元素逆序存放 6.九九乘法口诀

时间: 2024-08-14 05:49:57

六道题 : 1.设计一个函数,用来计算b的n次方 2.(n! = 1*2*3*4*...n) 3.(1! + 2! + 3! + 4! + ... + n!) 4.成绩 5. 数组中的元素逆序存放 6.九九乘法口诀的相关文章

练习7-3 将数组中的数逆序存放(20 分)

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出格式: 在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格. 输入样例: 4 10 8 1 2 输出样例: 2 1 8 10 #include<stdio.h> const int maxn=100; int a[maxn]; int main() { int n;

练习7-3 将数组中的数逆序存放 (20分)

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1).第二行输入n个整数,用空格分开. 输出格式: 在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格. 输入样例: 4 10 8 1 2 输出样例: 2 1 8 10 #include<stdio.h> int main(void) { int i,n; int a[100]; scanf("%d"

写一个函数实现数组中的元素随机乱序排序

//原生JS写一个函数实现一个shuffle方法,将数组中的元素随机乱序排序 var shuffle = function(arr){ var len,t,rand; for(var i =0;len = arr.length,i<len;i++){ rand = parseInt(Math.random()*len);//parseInt(Math.random()*(len-1-0)+1);或者rand = Math.floor(Math.random()*(len-1-0)+1);即Mat

设计一个函数,找出整型数组元素的最大值

/* 设计一个函数,找出整型数组元素的最大值 */ #include <stdio.h> int maxOfArray(int array[], int length) { // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节 //int size = sizeof(array); //printf("array=%d\n", size); //sizeof(array); // 1.定义一个变量存储最大值(默认就是首元素) i

问题 A: 习题7-5 字符串逆序存放

问题 A: 习题7-5 字符串逆序存放 时间限制: 1 Sec  内存限制: 12 MB献花: 173  解决: 152[献花][花圈][TK题库] 题目描述 写一个函数将一个字符串按反序存放.在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出. 输入 一行字符串. 输出 输入字符串反序存放后的字符串.单独占一行. 样例输入 abcd 样例输出 dcba 参考代码: #include<stdio.h>#include<string.h> int ch

Power BI-Power Query实现九九乘法口诀

最近闲来没事儿,开始研究使用Power BI,主要是案例形式,这一次的案例是如何实现九九乘法口诀. 首先来看下最终实现后的效果图,我没有使用Power BI Desktop,而直接使用的是Excel2016 我实现的步骤如下: 首先,启动Excel并新建一个空白Excel工作簿文件: 接下来,在空白工作表中建立一个如下所示10行9列的表数据,第一列为行数字标签,第一行为列标签,其中的数据区域留空即可: 选中全表,展开数据选项卡,点击"从表格",将录入的表转换为Power Query的查

C语言::输出九九乘法口诀表

题目要求 编写C语言程序.输出九九乘法口诀表.(如下所示) 1x1=1 1x2=2  2x2=4 1x3=3  2x3=6  3x3=9 ..... 1x9=9  2x9=18 3x9=27 4x9=... 算法分析 首先容我先装一逼,依老夫多年的编程经验,本题一定需要循环! 如果你目前还不知道为什么用循环,也没有关系,只要记住就好,日后经验丰富后,必然也能像我这样! 话入正题,我是怎么看出来这道题用循环的? 首先我们得考虑这份乘法口诀表具有什么特征,稍加分析,我们发现... 乘法口诀表特征如下

for循环基础- - -九九乘法口诀表

在for循环的学习里,对for循环的嵌套的扎实掌握,很有助于学习好语言的逻辑,本人今天就浅谈一下for循环的嵌套里的“九九乘法口诀表”!下面我用java语言来写这个程序, 我们要解决九九乘法表这个问题,首先要思考这个九九乘法表的构造,我们不难看出它是由行和列组成的,所以应该有两个for循环就可以解决. 下面我们就来看看这个程序: 的for决定j的for的循环次数, 因为只有当j不满足 j<= i这个条件的时候,才会跳出j的for循环执行i的for循环,每次执行i的循环的时候 j的循环都会被重新执

【C语言】【C++】对齐输出九九乘法口诀

//对齐输出九九乘法口诀 #include <iostream> #include <iomanip.h> //using namespace std; int main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { cout<<i<<"*"<<j<<"="<<setw(2)<<i*j<<