IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言练习题之函数部分 -> 正文阅读

[C++知识库]C语言练习题之函数部分

对于C语言的练习题,笔者之前写过不少,而且还有函数,指针,图形……各种练习题,笔者都有涉及,恰巧今日练习了部分函数的练习题,趁热打铁,想要将其分享给各位老铁,希望老铁能给个一箭三连呀!!感激

其实学习语法是次要的,主要在于将知识如何应用到实际中去,因此,练习题就是必不可缺少的部分,对于程序员而言,在力扣,牛客网,这两个热门的网站去练习题,是一个不错的选择!

或不多说,言归正传,下面请看笔者的练习题!

1.题目:利用递归方法求5!。

2.题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

3..题目:计算第五个人的年龄

4.题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

5.题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

1.

C 练习实例26

题目:利用递归方法求5!。

程序分析:递归公式:fn=fn_1*4!

下面请看笔者代码:


//题目:利用递归方法求5!。
//
//程序分析:递归公式:fn = fn_1 * 4!

#include <stdio.h>
int fn(int n)
{
	if (n == 1)
		return 1;
	else 
		return n=n * fn(n - 1);
}
int main()
{
	int n = 0;
	while (~scanf_s("%d", &n))
	{
		printf("%d\n", fn(n));

	}
	return 0;
}

代码的运行结果为:

2.

C 练习实例27

题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

程序分析:无。

对于这等难度的练习题一开始没有思路,可以选择,由浅入深,一步步进行深入!从而破解该题!

因此对于该题,笔者首先想到的是:将5个字符,以相反顺序打印出来。然后在根据此问题来进行思考题目的代码

//题目;将5个字符,以相反顺序打印出来。
#include <stdio.h>
#include <string.h>
int main()
{
	char ch[6] = "abcde";
	
	int sz = strlen(ch);
	int left = 0;
	int right = sz - 1;
	while (left < right)
	{
		char tmp = ch[left];
		ch[left] = ch[right];
		ch[right] = tmp;
		left++;
		right--;
	}
	printf("%s\n", ch);
	return 0;
}

上述代码,将5个字符,以相反顺序打印出来。所以,根据此代码,可以进行选择性的增添,从而达到目的!

笔者对于上述代码的更改就不做更多的讲述!

下面请看笔者的函数写法:参考代码为:

//利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#include <stdio.h>
void reverseSentence()
{
    char c;
    c = getchar();
    if (c != '\n')
    {
        reverseSentence();
        putchar(c);
    }
}
int main()
{
    printf("输入一个字符串: ");
    reverseSentence();
    return 0;
}

代码的运行结果为:

?上述代码,用到了几个库函数,对于不知道用法的读者,可以在https://cplusplus.com 这个网站进行搜索!学习!

3.

C 练习实例28

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。。

根据题意,这个题目,将会是函数的真正典范!!如果你能自主写出来该题目,那么你将能够成功出师!


#include <stdio.h>
int reserve(int n)
{
	if (n == 1)
		return 10;
	if (n > 1)
		return 2 + reserve(n - 1);
}
int main()

{
	int n = 0;
	scanf_s("%d", &n);
	int ret = reserve(n);
	printf("%d\n",ret);
}

这个代码,可以实现想求第几个人的年龄,就能求出来,简短许多!毕竟规律在哪儿放着来!!

代码的运行结果为:

?4.

C 练习实例29

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

对于该题目,可以选择创建数组来进行不多于五位数字的输入(不过该写法就得首先知道要输入的是几位数),也可以直接输入该数字来进行求!

1.直接输入该数字进行求:参考代码为:


//题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

#include <stdio.h>

int main()
{
    long a, b, c, d, e, x;
    printf("请输入 5 位数字:");
    scanf("%ld", &x);
    a = x / 10000;        /*分解出万位*/
    b = x % 10000 / 1000;   /*分解出千位*/
    c = x % 1000 / 100;     /*分解出百位*/
    d = x % 100 / 10;       /*分解出十位*/
    e = x % 10;           /*分解出个位*/
    if (a != 0) {
        printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n", e, d, c, b, a);
    }
    else if (b != 0) {
        printf("为 4 位数,逆序为: %ld %ld %ld %ld\n", e, d, c, b);
    }
    else if (c != 0) {
        printf("为 3 位数,逆序为:%ld %ld %ld\n", e, d, c);
    }
    else if (d != 0) {
        printf("为 2 位数,逆序为: %ld %ld\n", e, d);
    }
    else if (e != 0) {
        printf("为 1 位数,逆序为:%ld\n", e);
    }
}

上述代码显得臃肿,而且不是该函数的写法!不是很建议!!!

2.下面请看笔者对于函数的写法!!参考代码为:


#include<stdio.h>
int the_mount_of_noumbles(int n) {
	int i = 0;
	while (n) {
		n /= 10;
		i++;
	}
	return i;
}


void print_noumbles(int n) {
	int i;
	while (n) {
		i = n % 10;
		n /= 10;
		printf("%d", i);
	}
}

int main() {
	int n;
	printf("输入一个数: ");
	scanf_s("%d", &n);
	printf("它是 %d 位数", the_mount_of_noumbles(n));
	print_noumbles(n);
	return 0;
}

上述代码,笔者定义了两个函数,分别实现:输入的数字有几位数,逆序打印该数字!!

代码的运行结果为:

?3.假设知道输入的是几位数!请看参考代码!!

选择创建数组来进行不多于五位数字的输入(不过该写法就得首先知道要输入的是几位数)

#include <stdio.h>
int main()
{
	int arr[10] = { 0 };
	int n = 0;
	scanf_s("%d", &n);   //假设知道几位数
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	int left = 0;
	int right = n - 1;
	while (left < right)
	{
		int tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
	for (i = 0; i < n; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}

代码的运行结果为:

?5.

C 练习实例30 - 回文数

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:学会分解出每一位数。

参考代码为:

//题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
//
//程序分析:学会分解出每一位数。

#include <stdio.h>

int main()
{
    long ge, shi, qian, wan, x;
    printf("请输入 5 位数字:");
    scanf_s("%ld", &x);
    
    wan = x / 10000;        /*分解出万位*/
    qian = x % 10000 / 1000;  /*分解出千位*/
    shi = x % 100 / 10;       /*分解出十位*/
    ge = x % 10;            /*分解出个位*/
    if (ge == wan && shi == qian) { /*个位等于万位并且十位等于千位*/
       printf("这是回文数\n");
    }
    else {
       printf("这不是回文数\n");
    }
    
}

代码的运行结果为:

?对于函数的习题,本次就到此结束,有兴趣的读者,请看笔者之前的练习题!!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 10:54:41  更:2022-09-13 10:55:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 14:51:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码