大一作业习题

第一题:答案:

#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;elsereturn 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;elsereturn 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.hqwc.cn/news/266715.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<习题集><LeetCode><队列><225/232/387/622/641>

目录 225. 用队列实现栈 232. 用栈实现队列 387. 字符串中的第一个唯一字符 622. 设计循环队列 641. 设计循环双端队列 225. 用队列实现栈 https://leetcode.cn/problems/implement-stack-using-queues/ class MyStack{private Queue<Integer> queue1;private Queu…

校验maven安装是否安装成功失败

错误分析&#xff1a; 如图&#xff0c;核心文件存没有存放在maven文件夹里&#xff0c;而是存放在他下面的一个文件夹中 解决办法&#xff1a; 将文件剪切到“apache-maven-3.9.6-bin”文件夹中 验证&#xff1a; 问题解决&#xff01;

Mybatis-Plus 3.3.2 发布,新增优雅的数据安全保护姿势[MyBatis-Plus系列]

Hi,大家好,我是悟纤。过着爱谁谁的生活,活出不设限的人生。 存在数据库中的数据对于普通用户而言是不可见的,好像是藏起来了一样,但对于开发者,只要知道数据库的连接地址、用户名、密码,则数据不再安全;这也意味着,一旦连接数据库的配置文件暴露出去,则数据不再安全…

Java毕业设计 SSM SpringBoot 在线学习系统

Java毕业设计 SSM SpringBoot 在线学习系统 SSM SpringBoot 在线学习系统 功能介绍 首页 图片轮播 视频推荐 在线学习 学习介绍 评论 收藏 资料中心 资料详情 下载资料 话题讨论 文档发布 试题中心 系统公告 登录 注册学生 个人中心 试题记录 错题本 我的收藏 算法演示 结果分…

图-数据结构

图的介绍 如果你有学过《离散数学》&#xff0c;那么对图的概念一定不陌生&#xff0c;在计算机科学中&#xff0c;一个图就是一些顶点的集合&#xff0c;这些顶点通过一系列边连接&#xff08;结对&#xff09;。顶点用圆圈表示&#xff0c;边就是这些圆圈之间的连线。注意&a…

使用 PyTorch FSDP 微调 Llama 2 70B

通过本文&#xff0c;你将了解如何使用 PyTorch FSDP 及相关最佳实践微调 Llama 2 70B。在此过程中&#xff0c;我们主要会用到 Hugging Face Transformers、Accelerate 和 TRL 库。我们还将展示如何在 SLURM 中使用 Accelerate。 完全分片数据并行 (Fully Sharded Data Paral…

Win11在Virtualbox上安装ubuntu操作系统

注&#xff1a;原创笔记&#xff0c;以下图片水印为本人 相关工具展示 第四个&#xff1a;ubuntu的vmdk文件&#xff0c;用于配置虚拟机 第5/6个&#xff1a;virtualbox安装包 一、安装 VirtualBox 由于win11版本问题&#xff0c;如果装不了 virtualBox需要在官网安装最新版…

【USRP】LFTX / LFRX

LFTX/LFRX 设备概述 LFTX 子板利用两个高速运算放大器来允许 0-30 MHz 的传输。该板仅接受实模式信号。LFTX 非常适合 HF 频段的应用&#xff0c;或使用外部前端来上变频和放大中间信号的应用。LFTX 的输出可以独立处理&#xff0c;也可以作为单个 I/Q 对进行处理。 主要特征…

C语言使用malloc函数模拟开辟二维数组(带分析)

系列文章目录 &#x1f31f; 个人主页&#xff1a;古德猫宁- &#x1f308; 信念如阳光&#xff0c;照亮前行的每一步 文章目录 系列文章目录&#x1f308; *信念如阳光&#xff0c;照亮前行的每一步* 当我们使用malloc函数来模拟创建一个二维数组时&#xff0c;我们需要理解…

【23真题】做不完啦!

马上就要考研了&#xff0c;虽然掐着手指头&#xff0c;也没办法把我手里的真题全部做完&#xff0c;发完。但是我依然会更新到考研前一天&#xff0c;绝不断更&#xff0c;就和我每日一题一样&#xff0c;从开始到现在&#xff0c;无论发生任何事情&#xff0c;我一天没有断更…

城市数字化管理、智慧城市、数字孪生城市间的关系和演变

基于《基于数字孪生的智慧城市》和《2023版数字孪生世界白皮书》&#xff0c;我们可以全面了解从数字城市管理到智慧城市&#xff0c;再到数字孪生城市的关系和发展历程。 以下是这一顺序和继承关系的要点总结&#xff1a; 城市数字化管理 这是城市地区向智慧城市演进的初始…

Android---Kotlin 学习002

声明变量 在 Kotlin 中定义一个变量&#xff0c;通过关键字 var 开始。然后是变量名&#xff0c;在“:”后紧跟变量类型。 示例1&#xff1a;声明一个 int 类型的变量 var num:Int 1 示例2&#xff1a;声明一个 String 类型的变量 var str:String "Hello world&quo…