大一作业习题

第一题:答案:

#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';
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第二节、项目支付功能实战-信息安全、支付安全、接口安全详解

信息安全的概念 提起信息安全&#xff0c;我们通常会想到&#xff0c;数据的传输安全、接口传输安全、登录认证、授权这些类型安全知识&#xff0c;同时也会想到&#xff0c;加密、解密、认证、加签、验签、安全证书等这些小而繁琐的复杂概念&#xff0c;一说起这些概念&#…

Caching the Application Engine Server 缓存应用程序引擎服务器

Caching the Application Engine Server 缓存应用程序引擎服务器 Application Engine caches metadata just like the application server. This caching enhances performance because a program can refer to the local cache for any objects that it uses. 应用程序引擎…

网工内推 | 项目经理专场,最高20K*13薪,软考证书优先

01 Trasen 招聘岗位&#xff1a;大项目经理&#xff08;医疗行业/HIS&#xff09; 职责描述&#xff1a; 1.负责项目按计划完成交付并顺利验收结项&#xff1b; 2.参与项目前期预算、评审、方案设计等&#xff1b; 3.负责具体项目实施&#xff0c;制定项目计划、组织项目资源、…

树莓派上电发送IP地址到邮箱

创建python脚本文件 auto_send_email.py #!/usr/bin/python3import subprocess import smtplib from email.mime.text import MIMEText import datetime import time import osdef check_ping():hostname "www.baidu.com"response os.system("ping -c 1 &quo…

AI 与胚胎结合?系统生物学家 Patrick Müller 利用孪生网络对斑马鱼胚胎展开研究

300 万张图片1.5 万个斑马鱼胚胎的数据集&#xff0c;系统生物学家 Patrick Mller 成功实现基于 AI 的胚胎识别。 作者&#xff5c;加零 编辑&#xff5c;三羊 在动物发育过程中&#xff0c;胚胎随着时间的推移会发生复杂的形态变化&#xff0c;研究者们希望能够客观地量化发…

SpringBootWeb请求响应之前言及状态码的详细解析

SpringBootWeb请求响应 前言 在上一次的课程中&#xff0c;我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用&#xff0c;浏览器发起请求 /hello 后 &#xff0c;给浏览器返回字符串 “Hello World ~”。 其实呢&#xff0c;是我们在浏览器发起请求…

WebRTC AEC回声消除算法拆解

WebRTC AEC算法流程分析——时延估计&#xff08;一&#xff09; 其实&#xff0c;网上有很多类似资料&#xff0c;各个大厂研发不同应用场景设备的音频工程师基本都对其进行了拆解&#xff0c;有些闪烁其词&#xff0c;有些却很深奥&#xff0c;笔者随着对WebRTC了解的深入&a…

算法Day28 二进制差异序列(格雷码)

二进制差异序列&#xff08;格雷码&#xff09; Description n 位二进制差异序列是一个由2^n个整数组成的序列&#xff0c;其中&#xff1a; 每个整数都在范围[0, 2^n - 1]内&#xff08;含0和2^n - 1&#xff09; 第一个整数是0 一个整数在序列中出现不超过一次 每对相邻整数…

scripty妙用

在monorepo项目中&#xff0c;随着子模块增多&#xff0c; 每个子项目都需要配置各自的package.json,并且大同小异&#xff0c;为了进一步提高配置效率&#xff0c;引入了scripty&#xff0c;自己写脚本&#xff0c;直接就可以用哦 1、安装 npm install scripty --save-dev 2…

STM32MP157D-DK1开发板固件烧录

本篇介绍STM32MP157D-DK1开发板如何烧录官方固件。 1 开发板基础硬件介绍 1.1 常用接口 板子上的各种接口功如下&#xff0c;本篇固件烧录&#xff0c;主要用的接口包括&#xff1a; CN6&#xff1a;供电接口B2&#xff1a;复位按键CN11&#xff1a;ST-LINK USB&#xff08…

MYSQL索引和事务

Mysql 索引 事务 存储引擎 索引&#xff1a;索引是一个排序的列表&#xff0c;列表当中存储的是索引的值和包含这个值的数据所在行的物理地址 索引的作用加快查询速度 索引的作用&#xff1a; 利用索引数据库可以快速定位&#xff0c;大大加快查询速度&#xff0c;主要作用表…

LINUX:如何以树形结构显示文件目录结构

tree tree命令用于以树状图列出目录的内容。 第一步&#xff0c;先安装tree这个包 sudo apt-get install tree 第二步&#xff0c;在指定文件目录输入下面命令&#xff0c;7代表7级子目录 tree -L 7 第三步&#xff0c;效果图 第四步&#xff0c;拓展学习 颜色显示 tree -C显…

Go json 差异比较 json-diff(RFC6902)

Go json 差异比较 json-diff(RFC 6902) 毕业设计中过程中为了比较矢量图的差异而依据 RFC 6902 编写的一个包&#xff0c;现已开源&#xff1a; Json-diff 使用 go get -u github.com/520MianXiangDuiXiang520/json-diff序列化与反序列化 与官方 json 包的序列化和反序列化不…

川崎ZX-6R确定引进,636它真的来了,3C认证已过。

最新消息&#xff0c;兄弟们&#xff0c;你们期待已久的川崎ZX6R&#xff08;636&#xff09;基本已经确定引进了&#xff0c;官方的3C认证已经通过&#xff0c;那么从3C里面我们可以看到哪几个信息&#xff1f;产品代号ZX636J就是心心念念的ZX-6R了。 有些小伙伴不太清楚3C认…

数据结构:第13关:查找两个单词链表共同后缀的起始结点

任务描述编程要求 输入输出测试说明来源 任务描述 本关任务&#xff1a;假定采用带头结点的单链表保存单词&#xff0c;当两个单词有相同的后缀时&#xff0c;则可共享相同的后缀空间。 例如&#xff0c;“loading”和“being”的存储映像如下图所示&#xff1a; 设str1和str2…

detectron2中save_text_instance_predictions⭐

save_text_instance_predictions demo.py中修改关于路径os.path.join()函数用于路径拼接文件路径&#xff0c;可以传入多个路径os.path.basename(path)就是给定一串路径的最终找到的那个文件python官方文档链接 将 Python 对象序列化为 JSON 字符串with open 打开文件&#xff…

PostGIS学习教程十三:几何图形创建函数

PostGIS学习教程十三&#xff1a;几何图形创建函数 目前我们看到的所有函数都可以处理已有的几何图形并返回结果&#xff1a; 分析几何图形&#xff08;ST_Length(geometry), ST_Area(geometry)) 几何图形的序列化&#xff08;ST_AsText(geometry), ST_AsGML(geometry)) 选取…

动态规划_不同路径||

//一个机器人位于一个 // m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 // // 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 // // 现在考虑网格中有障碍物。那么…

坚守数字化创新烽火之地 百望云入选新华社“品牌信用建设典型案例”

潮起海之南&#xff0c;风好正扬帆。2023年12月2日-5日&#xff0c;南海之滨&#xff0c;由新华通讯社、海南省人民政府、中国品牌建设促进会主办的主题为“聚焦新质生产力&#xff0c;增强发展新动能”的2023中国企业家博鳌论坛在海南博鳌隆重举行。 群贤毕至&#xff0c;高朋…

vue零基础

vue 与其他框架的对比 框架设计模式数据绑定灵活度文件模式复杂性学习曲线生态VueMVVM双向灵活单文件小缓完善ReactMVC单向较灵活all in js大陡丰富AngularMVC双向固定多文件较大较陡&#xff08;Typescript&#xff09;独立 更多对比细节&#xff1a;vue 官网&#xff1a;ht…