学习c语言中的几道习题(小有难度)!

news2024/11/26 12:52:49

有兴趣的朋友可以看着题目自己做做,最后在和答案对比!相信能力会有所提升的。我现在只是刚刚开始学习c语言,如果有什么说的不对的地方,网路过的大佬,及时予以指正。多谢!

1、函数判断闰年
实现函数判断year是不是闰年。

函数判断闰年
实现函数判断year是不是闰年。
#include"stdio.h"

int panduan(int x) {
	if (x % 4 == 0 && x % 100 != 0 || x % 400 == 0) {
		return 1;
	}
	else
		return 0;
}

int main() {
	int year = 2000;
	if (panduan(year)) {
		printf("%d年是闰年", year);
	}
	return 0;
}

2、交换两个整数
    实现一个函数来交换两个整数的内容。

/*
	交换两个整数
	实现一个函数来交换两个整数的内容。
*/

#include"stdio.h"

void jiaohuan(int *x, int *y) {
	int z = 0;
	z = *x;
	*x = *y;
	*y = z;
}

int main() {
	int a = 9, b = 5;
	printf("交换前 a=%d   b=%d\n", a, b);
	jiaohuan(&a, &b);
	printf("交换后 a=%d   b=%d\n", a, b);
	return 0;
}

3、乘法口诀表
    实现一个函数,打印乘法口诀表,口诀表的函数和列数自己制定
    如:输入9,输出9*9口诀表,输入12,输出12*12乘法口诀表

/*
	乘法口诀表
	实现一个函数,打印乘法口诀表,口诀表的函数和列数自己制定
	如:输入9,输出9*9口诀表,输入12,输出12*12乘法口诀表
	
*/


#include"stdio.h"

void print(int);    // 声明函数

int main() {
	int input = 0;
	printf("请输入你要打印的乘法口诀表的行数?\n");
	scanf("%d", &input);
	print(input);
	return 0;
}


void print(int x) {                // 此函数在主函数的调用之后,所以在前面要有声明。
	int i = 0, j = 0;
	for (i = 1; i <= x; i++) {
		for (j = 1; j <= i; j++) {
			printf("%2dX%2d = %3d ", j, i, j * i);
		}
		printf("\n");
	}

}

4、调用fun(2)返回值是多少?

int fun(int n) {
    if (n == 5) {
        return 2;
    }
    else
        return 2 * fun(n + 1);

}

 

int fun(int n) {
	if (n == 5) {
		return 2;
	}
	else
		return 2 * fun(n + 1);

}

5、打印一个数的每一位
递归的方式实现?

/*
打印一个数的每一位
递归的方式实现?
*/


#include"stdio.h"

void print(int a) {
	if (a > 9) {
		print(a / 10);
	}
	printf("%d ", a%10);
}

int main() {
	int a = 122456;
	print(a);
	return 0;
}

 6、求阶乘
       递归和非递归分别实现求n的阶乘

/*
	求阶乘
	递归和非递归分别实现求n的阶乘
*/

#include"stdio.h"

int jiecheng(int n) {
	int a = 1;
	int i = 1;
	for (i = 1; i <= n; i++) {
		a *= i;
	}
	return a;
}

int main() {
	int n = 0;
	scanf("%d", &n);
	int ret = jiecheng(n);
	printf("%d", ret);
	return 0;
}


下面是递归的方式实现阶乘:

#include"stdio.h"

int jiecheng(int n) {
	if (n <= 1)
		return 1;
	return n * jiecheng(n - 1);
}

int main() {
	int n = 0;
	scanf("%d", &n);
	int ret = jiecheng(n);
	printf("%d", ret);
	return 0;
}

 7、字符串逆序(递归实现)
    编写一个函数reverse_string(char * string)(递归实现)
    实现:
        将参数字符串中的字符反向排列,不是逆序打印。
    要求:
        不能使用c函数库中的字符串操作函数。
    比如:
        char arr[]="abcdef";
    逆序之后的数组内容变成fedcba。

#include"stdio.h"
// 下面是循环的方式实现功能
int my_strled(char* str) {  // 计算传入的字符串中的字符个数
	int count = 0;
	while (*str != '\0') {
		count++;
		str++;
	}
	return count;
}

//void reverse_string(char *pa){
//	int left = 0;
//	int right = my_strled(pa) - 1;  // 字符个数减1也就是最右边的下标
//	while(left<right){
//		char tmp = pa[left];
//		pa[left] = pa[right];
//		pa[right] = tmp;
//		left++;
//		right--;
//	}
//	}

void reverse_string(char* pa) {
	int left = 0;
	int right = my_strled(pa) - 1;  // 字符个数减1也就是最右边的下标
	while (left < right) {
		char tmp = *(pa+left);
		*(pa+left) = *(pa+right);
		*(pa+right) = tmp;
		left++;
		right--;
	}
}


int main() {
	char arr[] = "abcdefg";
	printf("调整之前的数组是:%s\n", arr);
	reverse_string(arr);                     // 数组名arr是数组首元素的地址
	printf("调整之后的数组是:%s\n", arr);
	return 0;
}

下面是递归的方式实现:

#include"stdio.h"

int my_strlen(char* arr) {
	int count = 0;
	while (*arr != '\0') {
		count++;
		arr++;
	}
	return count;
}

void diandao(char* arr) {
	int tem = *arr;            // 第一步
	int len = my_strlen(arr);  
	*arr = *(arr + len - 1);   // 第二步
	*(arr + len - 1) = '\0';   // 第三步
	if (my_strlen(arr+1) >= 2) {
		diandao(arr + 1);     // 第四步
	}
	*(arr + len - 1) = tem;    // 第五步
}

int main() {
	char arr[] = "abcdef";
	diandao(arr);
	printf("%s\n", arr);
	return 0;
}

以上就是今天早晨起来做的 7道题,主要是为了自己不忘记,或是忘记的时候看自己的代码熟悉的速度会更快,特此记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/578197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python行太长如何处理?

Python行太长如何处理&#xff1f; 介绍 Python 是一门强大的编程语言&#xff0c;易于学习和使用。它也因其可读性和简洁性而受到广泛赞誉。然而&#xff0c;在实际编写时&#xff0c;往往遇到了行太长的情况。 当一行代码在编辑器中撑满了整个屏幕&#xff0c;或者末尾的字…

【Redis入门篇】| Redis的Java客户端

目录 一&#xff1a; Redis的Java客户端 1. Jedis快速入门 2. Jedis连接池 3. SpringDataRedis快速入门 4. RedisSerializer配置 5. StringRedisTemplate 图书推荐 一&#xff1a; Redis的Java客户端 在Redis官网中提供了各种语言的客户端&#xff0c;地址&#xff1a;…

chatgpt赋能python:Python阶乘算法——快速、高效的算法实现!

Python阶乘算法 —— 快速、高效的算法实现&#xff01; Python作为一门高级编程语言&#xff0c;在众多领域都得到了广泛应用&#xff0c;尤其在算法领域更是拥有着举足轻重的地位。阶乘算法作为计算领域中的一种经典算法&#xff0c;也是Python中不可或缺的一部分。 什么是…

尚硅谷大数据hadoop教程_HDFS

P40 hdfs产生背景和定义 p41 优缺点 p42 组成 p43 文件块大小 p 44 45 shell命令 p46 api环境准备

单链表—C语言实现数据结构

本期带大家一起用C语言实现单链表&#x1f308;&#x1f308;&#x1f308; 文章目录 一、链表的概念&#x1f30e;二、链表中数据元素的构成&#x1f30e; &#x1f30d;三、链表的结构&#x1f30e; &#x1f30d; &#x1f30f;四、 单链表的实现✅✅二、接口的实现✅✅1.单…

SAP-MM-采购申请-价值特性

采购申请审批在维护价值特性时要注意是抬头价值还是行价值&#xff0c;要确定选择哪个&#xff0c;配置时对应配置。 1、创建价值特性CT04 字段名称&#xff1a;CEBAN-GSWRT&#xff0c;和CEBAN-GFWRT 抬头总价值&#xff1a;CEBAN-GFWRT&#xff1b;如果选择的是抬头审批&am…

WPF界面设计

目录 1.设计一个优美的注册界面1.实现效果2.代码展示 2.简易登录按钮设计1.实现效果2.代码展示 3.设计一个优美的注册登录界面&#xff08;连接数据库&#xff09;1.实现效果2.代码展示 4.设计一个简单的在线教育系统界面1.实现效果2.代码展示 5. 设计一个Dashboard1.实现效果2…

linux线程创建等待及退出总结

线程操作 线程操作分线程的创建&#xff0c;退出&#xff0c;等待 3 种 1. 线程创建 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg); // 返回&#xff1…

chatgpt赋能python:Python中的逆序数

Python中的逆序数 介绍逆序数 在数学中&#xff0c;逆序数指的是一个序列中逆序对的个数。逆序对指一个序列中的两个元素&#xff0c;其中较大的元素在前而较小的元素在后。例如&#xff0c;序列 [2, 4, 1, 3] 中逆序对的个数是 2&#xff1a;(2,1) 和 (4,1)。 逆序数常用于…

chatgpt赋能python:Python逆序遍历-解决问题的神奇方式

Python逆序遍历 - 解决问题的神奇方式 Python是一种简单易学的编程语言&#xff0c;依靠其强大的功能和可扩展性&#xff0c;已成为数据科学、人工智能和Web开发的首选语言之一。Python的核心优点之一是其非常方便的列表操作&#xff0c;而逆序遍历列表是Python的又一个实用而…

chatgpt赋能python:Python虚拟环境移植:为何以及如何

Python虚拟环境移植&#xff1a;为何以及如何 在Python项目开发过程中&#xff0c;管理项目依赖关系是一个很重要的问题。一个有效的解决方案是使用Python虚拟环境。虚拟环境是Python的一个工具&#xff0c;允许您在隔离的环境中管理Python包和依赖&#xff0c;从而避免不同开…

期末复习总结【MySQL】五种约束类型, 主键和外键的使用方式(重点)

文章目录 前言一、约束类型二、NOT NULL三、UNIQUE四、DEFAULT五、PRIMARY KEY(重点)1, 自增主键 六、FOREIGN KEY (重点)1, 插入数据2, 删除数据3, 关于外键约束下删除数据的思考 总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5;…

chatgpt赋能python:Python词法分析:理解语言的起点

Python词法分析&#xff1a;理解语言的起点 在计算机科学中&#xff0c;词法分析&#xff08;也称为词法分析器&#xff09;是解析编程语言时的重要步骤之一。词法分析器将程序代码转换为由单词组成的序列&#xff08;称为标记或词法单元&#xff09;&#xff0c;为编译器和解…

chatgpt赋能python:Python转变为大写:学习如何使用Python中的str.upper()

Python 转变为大写&#xff1a;学习如何使用 Python 中的 str.upper() 作为一名有10年python编程经验的工程师&#xff0c;我可以肯定地说&#xff0c;Python 作为一门流行的编程语言&#xff0c;在全球范围内得到了广泛的应用。除了成为数据科学和机器学习的首选语言之外&…

设置ssh免密码登陆linux的配置步骤

概述 生成私钥文件 在客户端终端下输入以下命令 ssh-keygen -t rsa每次执行 ssh-keygen -t rsa 产生的私钥文件都会不同 如果文件"~/.ssh/id_rsa"存在&#xff0c;会提示是否覆盖该文件&#xff0c;此时可选择"n"不覆盖该文件而使用已有的id_rsa文件 如…

钉钉群通过短信转发器接收手机短信消息

1.短信转发器官网下载 下载地址 首发地址&#xff1a;https://github.com/pppscn/SmsForwarder/releases国内镜像&#xff1a;https://gitee.com/pp/SmsForwarder/releases网盘下载&#xff1a;https://wws.lanzoui.com/b025yl86h 访问密码&#xff1a;pppscn 使用文档 首发…

计算机网络 - 网络层的控制平面

Introduction 控制平面设计很多路由的算法, 然后计算出路由表给数据平面转发跟路由的, 传统方式的控制平面是每一个路由器都有一个控制平面, SDN方式的话通常是集中的remote管理, 一个控制平面控制多个本地代理CA - (Control Agent) 路由选择算法 路由route的概念 按照某种…

chatgpt赋能python:Python词性分析:一步步了解自然语言处理技术

Python词性分析&#xff1a;一步步了解自然语言处理技术 Python是一种高级编程语言&#xff0c;拥有广泛的应用领域。自然语言处理技术是其中一个重要的领域&#xff0c;它包含了词性分析、命名实体识别、句法分析等多项任务。词性分析是自然语言处理中的基本任务之一&#xf…

chatgpt赋能python:Python请求头——让你的网络请求更有效率

Python请求头——让你的网络请求更有效率 网络请求是现代应用程序的核心。但是&#xff0c;如果你不了解Python请求头的概念和用途&#xff0c;那么你可能会面临一些棘手的问题。在本文中&#xff0c;我们将深入探讨Python请求头&#xff0c;了解其作用、语法和最佳实践。 什…

计算机毕业论文选题推荐|软件工程|系列十一

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)系统的校园社交…