当前位置: 首页 > news >正文

实验题辅导

一、实验题

(3)求一个3X3的整型矩阵对角线元素之和

#include <stdio.h>int main ()
{int a[3][3] = {1,2,3,4,5,6,7,8,9};int sum = 0;for(int i = 0; i < 3; i ++)sum += (a[i][i] + a[i][2-i]);sum -= a[1][1];printf("%d", sum);return 0;
}

(6)输出杨辉三角形的前十行

#include <stdio.h>int a[100][100];int main ()
{a[1][1] = 1;printf("%d\n", a[1][1]);for(int i = 2; i <= 10; i ++){for(int j = 1; j <= i; j ++){a[i][j] = a[i-1][j] + a[i-1][j-1];printf("%d ", a[i][j]);}printf("\n");}return 0;
}

(7)编一程序,将两个字符串连接起来,不要用strcat函数。

#include <stdio.h>
#include <string.h>int main ()
{char a[100], b[100];printf("请输入第一个字符串:\n");scanf("%s", a);printf("请输入第二个字符串:\n");scanf("%s", b);int n, m;n = strlen(a);m = strlen(b);for(int i = 0; b[i]!= '\0';i ++)a[n ++] = b[i];a[n] = '\0';printf("%s", a);return 0;
}

二、查找排序题

(1)合并排序

/*
1.递归分组
2.工具数组合并
3.重复合并步骤
*/
#include<stdio.h>
const int N = 1e6+10;
int n;
int q[N], tmp[N];
void merge_sort(int q[], int l, int r)
{//分组结束标志if(l >= r) return ;int mid = l + r >> 1;merge_sort(q, l, mid);merge_sort(q, mid+1, r);//合并过程int k = 0, i = l, j = mid + 1;while(i <= mid && j <= r){if(q[i] <= q[j])tmp[k ++] = q[i ++];else  tmp[k ++] = q[j ++];}//合并剩下的数字while(i <= mid) tmp[k ++] = q[i ++]; //左边剩下while(j <= r)   tmp[k ++] = q[j ++]; //右边剩下//还值for(i = l, j = 0; i <= r; i ++, j ++)q[i] = tmp[j];}int main()
{scanf("%d", &n);for(int i=0; i<n; i++)scanf("%d", &q[i]);merge_sort(q, 0, n-1);//printf("good\n");for(int i=0; i<n; i++)printf("%d ", q[i]);return 0;
}

(2)插入排序

#include <stdio.h>
int a[100];int main() {int n;scanf("%d", &n);for(int i = 0; i < n; i ++)scanf("%d", &a[i]);int i, j, key;// 插入排序for (i = 1; i < n; i++) {key = arr[i];j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}// 输出结果for (i = 0; i < n; i++)printf("%d ", arr[i]);return 0;
}

(3)折半查找

输出这个数字第一次出现的位置(第一个数字的位置为1)

#include<stdio.h>int main()
{int n, num; //数组大小,要查找的数字int a[100];scanf("%d%d", &n, &num);for(int i =1; i <=n; i ++)scanf("%d", &a[i]);int l = 1, r = n;while(l < r){int mid = (l + r)/2;if(a[mid] >= num) r = mid;else l= mid + 1;}if(a[l] != num)printf("没有找到这个数字");elseprintf("%d", l);return 0;
}

(4)插值查找

插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。查找效率可能比二分查找更高。

#include <stdio.h>// 插值查找(返回索引,-1表示未找到)
int interpolationSearch(int arr[], int n, int key) {int left = 0, right = n - 1;while (left <= right && key >= arr[left] && key <= arr[right]) {// 计算插值位置(避免溢出写法)int mid = left + (key - arr[left]) * (right - left) / (arr[right] - arr[left]);if (arr[mid] == key) return mid;    // 找到目标else if (arr[mid] < key) left = mid + 1;  // 目标在右侧else right = mid - 1;  // 目标在左侧}return -1;  // 未找到
}int main() {int arr[] = {10, 20, 30, 40, 50, 60, 70};int n = 7, key = 50;int index = interpolationSearch(arr, n, key);printf("元素 %d 的索引是:%d\n", key, index);  // 输出:元素 50 的索引是:4return 0;
}

http://www.dtcms.com/a/617850.html

相关文章:

  • 【Python TensorFlow】BiTCN-BiLSTM双向时间序列卷积双向长短期记忆神经网络时序预测算法(附代码)
  • 番禺制作网站平台邢台123信息网
  • 网页制作软件有那些石家庄seo网站排名
  • 高级边界扫描 --6-- Silicon Nail测试调试
  • Linux 序列化技术、自定义协议实现及守护进程
  • 【Javaweb学习|黑马笔记|Day5】Web后端基础|java操作数据库
  • ArcGIS地统计综合实战 | 洛杉矶臭氧浓度预测-pretict-pretictable-pretiction
  • 【Agent零基础入门课程】告别黑盒:HelloAgents架构深度解析
  • PyTorch 零基础入门:从张量到 GPU 加速完全指南
  • Gradient Accumulation (梯度累积) in PyTorch
  • C++ 哈希表 常用接口总结 力扣 1. 两数之和 每日一题 题解
  • 百度云可以做网站吗wordpress文学模版
  • 数据库高可用架构-分表分库
  • C# 1116 流程控制 常量
  • ASC学习笔记0022:在不打算修改属性集时访问生成的属性集
  • 国外简约企业网站大连做环评网站
  • 【实际项目3】C#把文件夹中的RGB图片变为Gray图片
  • 学习C#调用OpenXml操作word文档的基本用法(7:Style类分析-5)
  • 【微服务】【Nacos 3】 ② 深度解析:AI模块介绍
  • 湖州网站seowordpress页面重定向
  • 10场景思考:OLAP系统在监控中的作用
  • 数据结构之二叉树-链式结构(下)
  • 云南省建设考试中心网站长春自助建站软件
  • ReALM(Retrieval-Augmented Language Model)介绍
  • 玩转Docker | Docker环境下部署JSON可视化管理工具JsonHero
  • 学院评估 网站建设整改wordpress 多条件搜索
  • 通信系统架构设计
  • C++_Bug:现代写法拷贝构造中 swap 写法之小坑
  • 通关upload-labs(14-21)加分析源码
  • 【目标检测】YOLOv10n-ADown弹孔检测与识别系统