news 2026/4/27 23:41:04

函数的练习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
函数的练习
  1. 编写一个主函数以及四个函数max(a, n)、min(a, n)、aver(a, n)和prime(m)。要求是:
    1. 函数max(a, n)、min(a, n)和aver(a, n)分别求出含有n个元素的数组a中的最大值、最小值和平均值,并返回结果到主调函数。函数prime(m)要求对m是否为素数进行判断,如果不是素数则返回0,否则返回1,
    2. 在主函数中任意输入10个[3,9999]之间的素数存放到数组中,保证输入10个[3,9999]之间的素数(输入的符合要求的素数未到十个时要求重新输入);然后分别调用max、min和aver函数,并输出返回的最大值、最小值和平均值。
解题思路

通过素数判断函数确保输入 10 个符合要求的素数存入数组,

再调用最值、平均值函数处理数组,

最后输出结果。

    1. #include <stdio.h> #include <math.h> int max(int n[], int m) { int max_1; max_1 = n[0]; for (int i = 0; i < m; i++) { if (n[i] > max_1) { max_1 = n[i]; } } return max_1; } int min(int n[], int m) { int min_1; min_1 = n[0]; for (int i = 0; i < m; i++) { if (n[i] < min_1) { min_1 = n[i]; } } return min_1; } int aver(int n[], int m) { int sum=0; for (int i = 0; i < m; i++) { sum += n[i]; } sum = sum / m; return sum; } int prime(int a) { int k = 0; if (a < 1) { return k; } else if (a > 1) { if (a % 2 == 0) { return k; } else if (a % 2 != 0) { for (int i = 3; i <sqrt(a)+1; i+= 2) { if (a % i == 0) { return k; } else { k++; return k; } } } } } int main() { int k[10]; printf("输入10个[3,9999]之间的素数:"); for (int i = 0; i < 10; i++) { scanf_s("%d", &k[i]); prime(k[i]); while (prime(k[i]) == 0) { scanf_s("%d", &k[i]); } } printf("%d %d %d", max(k, 10), min(k, 10), aver(k, 10)); return 0; }
      2.编写名称为insert,search,sort,delElem,printArr,halfSearch的函数,定义整型数组arr,输入m个各不相同的元素(假设数组arr的长度足够)。测试上述函数的功能。各个函数的功能如下
      1. insert函数的功能为将形参x插入到数组a的后面,要求x元素不与a中的其他元素相同,如果相同在输出报错提示;
      2. search函数的功能是在n个元素的数组a中按照顺序查找元素x,返回x在数组a中的下标,若无x元素,则返回-1;
      3. halfSearch函数的功能是在n个元素的数组a中按照折半查找法查找元素x,返回x在数组a中的下标,若无x元素,则返回-1;
      4. sort函数的功能是对数组a中的n个元素从小到大进行排序,
      5. delElem函数的功能是在n个元素的数组a中删除形参为x的元素。
      6. printArr函数的功能是将数组a中n个的元素逐个输出

解题思路

构建测试基础,确保初始数组符合 “元素各不相同” 的要求。

函数功能实现(按 “增、查、排、删、输出” 拆解)

按 “输出初始数组→插入→顺序查找→排序→折半查找→删除→最终输出” 的顺序,验证每个函数的正确性。

#include <stdio.h> void insert(int n, int a[], int *m) { for (int i = 0; i <*m; i++) { if (n == a[i]) { printf("输入错误,元素%d已存在,插入失败!\n", n); return; } } a[*m] = n; (*m)++; printf("元素%d插入成功!\n", n); } int search(int x, int n, int a[]) { for (int i = 0; i < n; i++) { if (a[i] == x) { printf("顺序查找成功:元素%d在数组的第%d个位置(下标%d)\n", x, i + 1, i); return i; } } printf("顺序查找失败:数组中无元素%d\n", x); return -1; } void sort(int n, int a[]) { for (int i = 0; i < n; i++) { for (int j = n-1; j > i; j--) { if (a[j] < a[j - 1]) { int temp; temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; } } } printf("数组排序完成!\n"); } void delElem(int x, int *n, int a[]) { int k = 0; int j = 0; for (int i = 0;i < *n;i++) { if (a[i] != x) { a[j++] = a[i]; } else k++; } *n -= k; if (k > 0) { printf("成功删除%d个元素%d!\n", k, x); } else { printf("删除失败:数组中无元素%d\n", x); } } void printArr(int n, int a[]) { if (n == 0) { printf("数组为空!\n"); return; } for (int i = 0;i < n;i++) { printf("%d ", a[i]); } printf("\n"); } int halfSearch(int x, int n, int a[]) { for (int i = 0; i < n; i++) { for (int j = n - 1; j > i; j--) { if (a[j] < a[j - 1]) { int temp; temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; } } } int low = 0; int high = n - 1; int mid; while (low <= high) { mid = (low + high) / 2; if (a[mid] == x) { printf("二分查找成功:元素%d在数组的第%d个位置(下标%d)\n", x, mid + 1, mid); return mid; } else if (a[mid] < x) { low = mid + 1; } else { high = mid - 1; } } printf("二分查找失败:数组中无元素%d\n", x); return -1; } int main() { int a[100000]; int n = 0; int k = 0; printf("输入数组的大小:"); scanf_s("%d", &n); printf("输入数组的值:"); for (int i = 0;i < n;i++) { scanf_s("%d", &a[i]); } while (k != 7) { printf("1.将形参x插入到数组a的后面\n"); printf("2.在n个元素的数组a中按照顺序查找元素x\n"); printf("3.查找元素x\n"); printf("4.从小到大进行排序\n"); printf("5.删除形参为x的元素\n"); printf("6.逐个输出\n"); printf("7.退出程序\n"); printf("请输入你要选择的操作:"); scanf_s("%d", &k); int x; if (k == 1) { printf("输入你要插入的元素:"); scanf_s("%d", &x); insert(x, a, &n); continue; } if (k == 2) { printf("输入你要查找的元素:"); scanf_s("%d", &x); search(x, n, a); continue; } if (k == 3) { printf("输入你要查找的元素:"); scanf_s("%d", &x); halfSearch(x, n, a); continue; } if (k == 4) { sort(n, a); for (int i = 0;i < n;i++) { printf("%d", a[i]); } continue; } if (k == 5) { printf("输入你要删除的元素:"); scanf_s("%d", &x); delElem(x, &n, a); continue; } if (k == 6) { printArr(n, a); continue; } } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 11:35:28

LSTM网络在旋律延续中的表现:ACE-Step是如何做到连贯性的?

LSTM网络在旋律延续中的表现&#xff1a;ACE-Step是如何做到连贯性的&#xff1f; 在AI音乐创作领域&#xff0c;一个长期困扰研究者的问题是&#xff1a;如何让机器生成的旋律听起来“自然”&#xff1f; 我们经常能听到AI作曲的作品——开头几句或许悦耳动听&#xff0c;但到…

作者头像 李华
网站建设 2026/4/17 19:06:45

回溯

lclc2121hash抽象分组后前缀和注意 这个地方的下标个数统计要-1...(ll)b[i] * (m - i-1); class Solution {typedef long long ll;public:vector<long long> getDistances(vector<int>& arr) {int narr.size();vector<ll> ret(n);unordered_map<int,v…

作者头像 李华
网站建设 2026/4/23 14:33:37

火山引擎AI大模型对比:为何选择Qwen3-VL-8B做轻量部署

火山引擎AI大模型对比&#xff1a;为何选择Qwen3-VL-8B做轻量部署 在电商后台上传一张新款运动鞋的照片&#xff0c;系统几秒内自动生成“这款鞋子采用网面透气设计&#xff0c;适合日常通勤与轻度跑步&#xff0c;搭配休闲或运动风格均可”的描述文案——这不再是未来构想&…

作者头像 李华
网站建设 2026/4/24 0:34:52

抖音内容解析与智能下载工具的技术解析

抖音内容解析与智能下载工具的技术解析 【免费下载链接】DouYinBot 抖音无水印下载 项目地址: https://gitcode.com/gh_mirrors/do/DouYinBot 在数字内容创作日益普及的今天&#xff0c;抖音平台已成为内容创作者和研究者获取灵感的重要来源。然而&#xff0c;平台对内容…

作者头像 李华
网站建设 2026/4/26 3:21:02

STM32F030CxT6学习记录

STM32F030CCT6/STM32F030C8T6的第44pin是Boot0&#xff0c;没有Boot1引脚。Boot00&#xff0c;即接地&#xff0c;为主闪存存储器启动模式&#xff0c;使用JTag或swd烧录&#xff0c;启动地址是0x08000000&#xff1b;Boot01&#xff0c;接VCC&#xff0c;通过串口烧录。有时候…

作者头像 李华
网站建设 2026/4/23 0:09:14

Transformer模型详解之外的新星:Wan2.2-T2V-5B的结构创新点

Transformer模型之外的新星&#xff1a;Wan2.2-T2V-5B的结构创新点 在短视频内容爆炸式增长的今天&#xff0c;创作者对“快速生成、即时反馈”的需求已远超传统视频制作流程的能力边界。一个用户输入“一只狐狸在雪地里奔跑”&#xff0c;希望3秒内看到一段连贯动态视频——这…

作者头像 李华