大一作业习题

news2024/11/18 23:37:07

第一题:答案:

#include <stdio.h> 
void sort(int a[], int m)  //将数组a的前m个元素(从小到大)排序 
{
	int i = 0;
	for (i = 0; i < m - 1; i++)
	{
		int j = 0;
		int flag = 1;
		for (j = 0; j < m - 1 - i; j++)
		{
			if (a[j] > a[j + 1])
			{
				int t = 0;
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
				flag = 0;
			}
		}
		if (flag == 1)
		{
			break;
		}
	}
}
void input(int a[], int m) //依次从键盘输入数组a的前m个元素 
{
	int i = 0;
	for (i = 0; i < m; i++)
	{
		scanf("%d", &a[i]);
	}
}
void print(int a[], int m) //依次输出数组a的前m个元素 
{
	int i = 0;
	for (i = 0; i < m; i++)
	{
		printf("%4d", a[i]);
	}
	printf("\n");
}
void insertSortedList(int a[], int m, int num) //将num插入到数组a中(数组a的前m个元素已经排序),使得数组a仍然升序。
{
	a[m] = num;
	int i = 0;
	for(i=m;i>=0;i--)
	{
		if (a[i] < a[i-1])
		{
			int t = a[i-1];
			a[i-1] = a[i];
			a[i] = t;
		}
		else
		{
			break;
		}
	}
}
void main()
{
	int m, k;
	scanf("%d", &m);
	int alist[1000];
	input(alist, m);
	sort(alist, m);
 	print(alist, m);
	scanf("%d", &k);
	insertSortedList(alist, m, k);
	print(alist, m + 1);
}

第二题:

答案:

#include <stdio.h>
int gcd(int a, int b); //计算并返回整数a,整数b的最大公约数. 
void add(int op1[], int op2[], int rst[]); //计算分数op1和op2的和,保存结果到rst. 
void sub(int op1[], int op2[], int rst[]); //计算分数op1和op2的差,保存结果到rst.
void mul(int op1[], int op2[], int rst[]); //计算分数op1和op2的积,保存结果到rst.
void div(int op1[], int op2[], int rst[]); //计算分数op1和op2的商,保存结果到rst.


void main()
{
	int a, b, c, d;
	int op1[2], op2[2], rst[2];
	scanf("%d%d", &op1[1], &op1[0]);
	scanf("%d%d", &op2[1], &op2[0]);
	add(op1, op2, rst);
	printf("%d/%d + %d/%d = %d/%d\n", op1[1], op1[0], op2[1], op2[0], rst[1], rst[0]);
	sub(op1, op2, rst);
	printf("%d/%d - %d/%d = %d/%d\n", op1[1], op1[0], op2[1], op2[0], rst[1], rst[0]);
	mul(op1, op2, rst);
	printf("%d/%d * %d/%d = %d/%d\n", op1[1], op1[0], op2[1], op2[0], rst[1], rst[0]);
	div(op1, op2, rst);
	printf("%d/%d / %d/%d = %d/%d\n", op1[1], op1[0], op2[1], op2[0], rst[1], rst[0]);
}

int gcd(int a, int b)//返回参数a,b的最大公约数
{
	int r = a % b;
	while (r != 0)
	{
		a = b;
		b = r;
		r = a % b;
	}
	return b;
}
void add(int op1[], int op2[], int rst[]) //计算分数op1和op2的和,保存结果到rst. 
{
	int fm = op1[0] * op2[0];                   //和的分母
	int fz = op1[1] * op2[0] + op2[1] * op1[0]; //和的分子
	int g = gcd(fm, fz);
	rst[0] = fm / g;                     //分子分母同时除以它们的最大公约数,实现约分
	rst[1] = fz / g;
	if (rst[0] < 0)                              //确保分母为正数
	{
		rst[0] = -rst[0];
		rst[1] = -rst[1];
	}
}
void sub(int op1[], int op2[], int rst[])  //计算分数op1和op2的差,保存结果到rst.
{
	int fm = op1[0] * op2[0];
	int fz = op1[1] * op2[0] - op2[1] * op1[0];
	int g = gcd(fm, fz);
	rst[0] = fm / g;
	rst[1] = fz / g;
	if (rst[0] < 0)                              //确保分母为正数
	{
		rst[0] = -rst[0];
		rst[1] = -rst[1];
	}
}
void mul(int op1[], int op2[], int rst[]) //计算分数op1和op2的积,保存结果到rst.
{
	int fm = op1[0] * op2[0];
	int fz = op1[1] * op2[1];
	int g = gcd(fm, fz);
	rst[0] = fm / g;
	rst[1] = fz / g;
	if (rst[0] < 0)                              //确保分母为正数
	{
		rst[0] = -rst[0];
		rst[1] = -rst[1];
	}
}
void div(int op1[], int op2[], int rst[])  //计算分数op1和op2的商,保存结果到rst.
{
	int fm = op1[0] * op2[1];
	int fz = op1[1] * op2[0];
	int g = gcd(fm, fz);
	rst[0] = fm / g;
	rst[1] = fz / g;
	if (rst[0] < 0)                              //确保分母为正数
	{
		rst[0] = -rst[0];
		rst[1] = -rst[1];
	}
}

第三题:

答案:

#include <stdio.h> 
int myisdigital(char ch);                //数字字符判断函数,如果ch是数字字符,则返回1,否则返回0; 
int myisalpha(char ch);                  //字母字符判断函数,如果ch是大小写字母字符, 则返回1,否则返回0; 
int mystrlen(char str[]);                // 返回指定字符串str的长度 (不计\0字符) 
void mystrcat(char str1[], char str2[]);  // 连接的两个字符串, 将str2连接到str1后面 
int mystrcmp(char str1[], char str2[]);  //比较两个字符串,如果str1大,则返回1;如果str2则返回-1;如果相等,返回0; 
void mystrcpy(char str1[], char str2[]);  //复制字符串str2到字符串str1中 

void main()
{
	char str1[1000], str2[100], tmp[100]; int m;
	int num_alpha = 0; //str1中的字母字符的个数 
	int num = 0;       //str2中的数组字符构成的整数 
	int i;
	scanf("%s%s%d", str1, str2, &m);
	printf("%d,", mystrlen(str1) + mystrlen(str2));
	for (i = 0; i < mystrlen(str1); i++)
		if (myisalpha(str1[i]))
			num_alpha++;
	for (i = 0; i < mystrlen(str2); i++)
		if (myisdigital(str2[i]))
			num = num * 10 + str2[i] - '0'; //找到一个新数符,将原来的数字左移一位,然后在末位添加新数符 
	printf("%d,%d,", num_alpha, num);
	if (mystrcmp(str1, str2) > 0)  // str1比较大,则交换 
	{
		mystrcpy(tmp, str1);
		mystrcpy(str1, str2);
		mystrcpy(str2, tmp);
	}
	for (i = 1; i <= m; i++)
		mystrcat(str1, str2);
	printf("%s", str1);
}

int myisdigital(char ch)
{
	if (ch >= '0' && ch <= '9')
		return 1;
	else
		return 0;
}


void mystrcat(char str1[], char str2[])
{
	int i = 0, j = 0;
	while (str1[i] != '\0')
		i++;
	while (str2[j] != '\0')
	{
		str1[i] = str2[j];
		i++;
		j++;
	}
	str1[i] = '\0';  //给str1最后赋值一个结束字符,这里不可遗漏!!! 
}

int myisalpha(char ch)                  //字母字符判断函数,如果ch是大小写字母字符, 则返回1,否则返回0;
{
	if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
		return 1;
	else
		return 0;
}

int mystrlen(char str[])                // 返回指定字符串str的长度 (不计\0字符)
{
	int i = 0;
	while (str[i] != '\0')
	{
		i++;
	}
	return i;
}

int mystrcmp(char str1[], char str2[])  //比较两个字符串,如果str1大,则返回1;如果str2则返回-1;如果相等,返回0;
{
	int i = 0, j = 0;
	if (mystrlen(str1) < mystrlen(str2))
	{
		for (i = 0; i <= mystrlen(str1); i++)
		{
			if (str1[i] > str2[i])
				return 1;
			if ((str1[i] < str2[i])|| (str1[i] == str2[i]) && i == mystrlen(str1))
				return -1;
		}
	}
	if (mystrlen(str1) > mystrlen(str2))
	{
		for (i = 0; i <= mystrlen(str2); i++)
		{
			if (str1[i] > str2[i] || ((str1[i] == str2[i]) && i == mystrlen(str2)))
				return 1;
			if (str1[i] < str2[i])
				return -1;
		}
	}
	if (mystrlen(str1) == mystrlen(str2))
	{
		for (i = 0; i <= mystrlen(str2); i++)
		{
			if (str1[i] > str2[i])
				return 1;
			if (str1[i] < str2[i])
				return -1;
			if ((str1[i] == str2[i]) && i == mystrlen(str2))
				return 0;
		}
	}
}

void mystrcpy(char str1[], char str2[])  //复制字符串str2到字符串str1中 
{
	int i = 0;
	for (i = 0; i < mystrlen(str2); i++)
	{
		str1[i] = str2[i];
	}
	str1[i] = '\0';
}

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

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

相关文章

数据科学实践:探索数据驱动的决策

写在前面 你是否曾经困扰于如何从海量的数据中提取有价值的信息?你是否想过如何利用数据来指导你的决策,让你的决策更加科学和精确?如果你有这样的困扰和疑问,那么你来对了地方。这篇文章将引导你走进数据科学的世界,探索数据驱动的决策。 1.数据科学的基本原则 在我们…

AGM离线下载器使用说明

AGM专用离线下载器示意图&#xff1a; 供电方式&#xff1a; 通过 USB 接口给下载器供电&#xff0c;跳线 JP 断开。如果客户 PCB 的 JTAG 口不能提供 3.3V 电源&#xff0c;或仅需烧写下载器&#xff0c;尚未连接用户 PCB 时&#xff0c;采用此种方式供电。 或者&#xff1a…

测距传感器

测距传感器 电子元器件百科 文章目录 测距传感器前言一、测距传感器是什么二、测距传感器的类别三、测距传感器的应用实例四、测距传感器的作用原理总结前言 测距传感器广泛应用于自动化控制、机器人导航、无人驾驶、测量仪器等领域。不同类型的测距传感器具有不同的测距范围、…

从零开始实现神经网络(三)_RNN循环神经网络

参考文章&#xff1a;rnn循环神经网络介绍 循环神经网络 &#xff08;RNN&#xff09; 是一种专门处理序列的神经网络。它们通常用于自然语言处理 &#xff08;NLP&#xff09; 任务&#xff0c;因为它们在处理文本方面很有效。在这篇文章中&#xff0c;我们将探讨什么是 RNN&a…

【ClickHouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse

参考1:MySQL(通过该配置实现了实时同步) 参考2:experimental MaterializedMySQL 参考3:[experimental] MaterializedMySQL(包含设置 allow_experimental_database_materialized_mysql) MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中&#xff0c;并允许您对表进行I…

GitHub 跑了 1200 多台 MySQL 主机,如何实现无缝升级到 8.0 版本?

文章目录 翻译概述前言升级的动机GitHub 的 MySQL 基础设施准备旅程准备基础设施以进行升级确保应用程序兼容性沟通和透明度升级计划第 1 步&#xff1a;滚动副本升级步骤 2&#xff1a;更新复制拓扑步骤 3&#xff1a;将 MySQL 8.0 主机提升为主主机步骤 4&#xff1a;升级面向…

【Linux】地址空间

本片博客将重点回答三个问题 什么是地址空间&#xff1f; 地址空间是如何设计的&#xff1f; 为什么要有地址空间&#xff1f; 程序地址空间排布图 在32位下&#xff0c;一个进程的地址空间&#xff0c;取值范围是0x0000 0000~ 0xFFFF FFFF 回答三个问题之前我们先来证明地址空…

openlayers-19-分屏对比

分屏对比实现很简单&#xff0c;定义两个map对象&#xff0c;然后让这两个map对象共用一个view即可。 代码如下&#xff1a; <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd…

Linux上编译和测试V8引擎源码

介绍 V8引擎是一款高性能的JavaScript引擎&#xff0c;广泛应用于Chrome浏览器和Node.js等项目中。在本篇博客中&#xff0c;我们将介绍如何在Linux系统上使用depot_tools工具编译和测试V8引擎源码。 步骤一&#xff1a;安装depot_tools depot_tools是一个用于Chromium开发…

【深度学习】强化学习(五)深度强化学习

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数6、值函数7、深度强化学习1. 背景与动机2. 关键要素3. 成功案例4. 挑战和未来展望5. 核心概念和方法总结 一、强化学习问题 强化学…

微服务网关组件Gateway实战

1. 需求背景 在微服务架构中&#xff0c;通常一个系统会被拆分为多个微服务&#xff0c;面对这么多微服务客户端应该如何去调用呢&#xff1f;如果根据每个微服务的地址发起调用&#xff0c;存在如下问题&#xff1a; 客户端多次请求不同的微服务&#xff0c;会增加客户端代码…

【LLM】大模型之RLHF和替代方法(DPO、RAILF、ReST等)

note SFT使用交叉熵损失函数&#xff0c;目标是调整参数使模型输出与标准答案一致&#xff0c;不能从整体把控output质量&#xff0c;RLHF&#xff08;分为奖励模型训练、近端策略优化两个步骤&#xff09;则是将output作为一个整体考虑&#xff0c;优化目标是使模型生成高质量…

如何在Linux本地部署openGauss开源数据管理系统并结合内网穿透公网访问

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

恢复Django 项目

随笔记录 目录 1. 重建Mysql DB 2. 启动Django 项目 2.1 确保你的系统上已安装pip工具。你可以使用以下命令来检查pip是否已安装 2.2 安装Packages 2.2.1 安装Django 2.2.2 安装pymysql 2.2.3 安装 kafka 2.2.4 安装 requests 2.2.5 安装simplepro 2.2.6 安装libjp…

作为一个产品经理带你了解Axure的安装和基本使用

1.Axure的简介 Axure是一种强大的原型设计工具&#xff0c;它允许用户创建交互式的、高保真度的原型&#xff0c;以及进行用户体验设计和界面设计。Axure可以帮助设计师和产品经理快速创建和共享原型&#xff0c;以便团队成员之间进行沟通和反馈。Axure提供了丰富的交互组件和功…

体系化学习运筹学基础算法的实践和总结

文章目录 引言目标设计目标实践文章汇总经验总结一则预告 引言 眨眼间已经12月了&#xff0c;眼看着2023年马上要过完了。 女朋友最近总说&#xff0c;工作以后感觉时间过的好快。事实上&#xff0c;我也是这么认为的。年纪越大&#xff0c;越会担心35岁危机的降临。所以&…

Rocket MQ 架构介绍

文章目录 为什么选择Rocket MQ基本概念优点缺点架构图编程模型发送者发送消息固定步骤消费者消费消息固定步骤 为什么选择Rocket MQ Rocket MQ是阿帕奇顶级的开源项目&#xff0c;由阿里开发并开源。它的研发背景是Active MQ与Kafka不能很好的解决当时的业务场景。官网上是这么…

【rabbitMQ】Exchanges交换机

上一篇&#xff1a;springboot整合rabbitMQ模拟简单收发消息 https://blog.csdn.net/m0_67930426/article/details/134904766 本篇代码基于上一篇继续写 目录 Fanout 交换机 1. add queue 2. add Exchange 3.绑定队列 Direct 交换机 1. add queue 2. add Exchange 3.…

求职智能分析系统

本项目是一个基于Flask轻量级框架的计算机就业数据可视化分析平台。 采用echarts和ajax等技术进行数据展示和用户交互。

Mybatis是如何进行分页的?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …