news 2026/8/8 23:27:30

函数的练习

作者头像

张小明

前端开发工程师

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/8/9 3:53:03

HunyuanVideo-Foley模型开源:大幅提升视频后期制作效率

HunyuanVideo-Foley模型开源&#xff1a;大幅提升视频后期制作效率 在短视频日均产量突破千万条的今天&#xff0c;内容创作者正面临一个隐性瓶颈——音效。画面可以快速剪辑、滤镜一键套用&#xff0c;但脚步声是否踩在雨后石板上、门轴转动是否有年久失修的吱呀声&#xff0c…

作者头像 李华
网站建设 2026/8/9 7:18:54

火山引擎AI大模型生态中Qwen3-VL-8B的应用定位

火山引擎AI大模型生态中Qwen3-VL-8B的应用定位 在电商客服对话框里上传一张商品图&#xff0c;系统立刻识别出“这是一款复古风高腰牛仔阔腿裤&#xff0c;搭配白色条纹衬衫适合通勤穿搭”&#xff1b;在内容审核后台&#xff0c;一张看似正常的风景照配上敏感文字&#xff0c;…

作者头像 李华
网站建设 2026/8/8 21:58:47

Linux动态壁纸终极指南:7个简单技巧打造惊艳桌面

Linux动态壁纸终极指南&#xff1a;7个简单技巧打造惊艳桌面 【免费下载链接】linux-wallpaperengine Wallpaper Engine backgrounds for Linux! 项目地址: https://gitcode.com/gh_mirrors/li/linux-wallpaperengine 厌倦了单调的静态壁纸&#xff1f;想在Linux系统上体…

作者头像 李华
网站建设 2026/8/9 13:30:41

深度解析Qwen3-VL-30B:300亿参数背后的视觉语言黑科技

深度解析Qwen3-VL-30B&#xff1a;300亿参数背后的视觉语言黑科技 在自动驾驶系统需要实时判断“前方施工围挡是否影响变道”、医生希望AI能直接从X光片中指出病灶区域并推测病因、电商平台用户上传一张北欧风装修图却期望推荐风格一致的沙发时——我们早已超越了对图像分类或文…

作者头像 李华
网站建设 2026/8/9 22:02:56

ComfyUI-Manager终极指南:一站式AI绘画插件管理平台

ComfyUI-Manager是专为ComfyUI设计的智能管理工具&#xff0c;彻底革新了传统手动安装插件的繁琐流程&#xff0c;让插件安装、更新和配置变得前所未有的简单高效。无论你是AI绘画爱好者还是专业创作者&#xff0c;这个工具都能显著提升你的工作效率&#xff0c;让技术门槛不再…

作者头像 李华
网站建设 2026/8/9 5:14:22

为什么Wan2.2-T2V-5B是社交媒体内容创作者的新利器?

Wan2.2-T2V-5B&#xff1a;如何让每个创作者都拥有“AI导演”&#xff1f; 在抖音、Instagram Reels 和 YouTube Shorts 每天吞吐数亿条短视频的今天&#xff0c;内容创作者面临的不再是“有没有创意”的问题&#xff0c;而是“能不能跟上节奏”。一条爆款视频可能带来百万流量…

作者头像 李华