机考算法系列
上机考试算法系列
流动的星
AutoSAR软件开发,汽车控制器开发,高级软件工程师;
展开
-
二叉树创建查找
include"stdio.h"typedef struct TreeNode{ int value; struct TreeNode *left; struct TreeNode *right;}TreeNodeType;int createTree(TreeNodeType **root){ int val; scanf("%d",&val); if (val <= 0) { *root = NULL;...原创 2021-06-28 13:33:22 · 158 阅读 · 0 评论 -
二叉树查找
一、二叉树节点定义typedef char DataType;typedef struct TreeNode{ DataType elem; struct TreeNode* rchild; struct TreeNode* lchild;}TreeNode;二、初始化void InitTree(TreeNode** root){ assert(root); if(*root == NULL) return; *roo原创 2021-06-28 11:17:23 · 88 阅读 · 0 评论 -
二分法搜索算法
#include<stdio.h>intBinySerch(int*arr,intx,intlengh){ intleft=0,right=lengh-1; intmid; while(left<=right) { mid=left+(right-left)/2; if(x<arr[mid]) { right=...原创 2021-06-25 15:50:36 · 97 阅读 · 0 评论 -
快速排序法
假设对以下10个数进行快速排序:6 1 2 7 9 3 4 5 10 8我们先模拟快速排序的过程:首先,在这个序列中随便找一个数作为基准数,通常为了方便,以第一个数作为基准数。6 1 2 7 9 3 4 5 10 8在初始状态下,数字6在序列的第1位。我们的目标是将6挪到序列中间的某个位置,假设这个位置是k kk。现在就需要寻找这个k kk,并且以第k位为分界点,左边的数都≤ 6 \le6...转载 2021-06-25 14:37:51 · 106 阅读 · 0 评论 -
快速排序法
#include <stdio.h>void Quick_Sort(int *arr, int begin, int end) { if (begin > end) return; int tmp = arr[begin]; int i = begin; int j = end; while (i != j) { while (arr[j] >= tmp && j > i) j--; while (arr[i] <= .原创 2021-06-25 14:34:09 · 101 阅读 · 0 评论 -
快速排序法
#include <stdio.h>void Swap(int A[], int i, int j){ int temp = A[i]; A[i] = A[j]; A[j] = temp;}int Partition(int A[], int left, int right) // 划分函数{ int pivot = A[right]; // 这里每次都选择最后一个元素作为基准 int tail = left .原创 2021-06-25 09:18:45 · 90 阅读 · 0 评论 -
选择排序法
#include void Swap(int A[], int i, int j){ int temp = A[i]; A[i] = A[j]; A[j] = temp;}void selectsort(int A[],int n){ for(i=0;i { min = i; for(int j=i+1;j { if(A[j] { ...原创 2021-06-25 08:25:09 · 112 阅读 · 0 评论 -
插入排序法
void InsertionSort(int A[],int n){ for(int i=1;i { int get = A[i]; int j = i-1; while(j>=0;&&A[j]>get) { A[j+1]=A[j]; j--; } A[j+1] =get; } }int main...原创 2021-06-24 15:27:13 · 89 阅读 · 0 评论 -
统计字符串中特点字符个数
#include <stdio.h>#include <string.h>#include <ctype.h>int main(void){ char str[1000]="\0"; char inputChar='\0'; char* pSrch=str; int count=0; //scanf("%[a-zA-Z0-9]",str); scanf("%[^\n]",str); scanf(" %c",&.原创 2021-05-29 09:05:50 · 134 阅读 · 0 评论 -
统计每个月兔子的总数
描述有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?本题有多组数据。输入描述:输入int型表示month输出描述:输出兔子总数int型示例1输入:9输出:34...原创 2021-06-05 09:44:42 · 146 阅读 · 0 评论 -
深度搜索算法
描述问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利输入:4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字。输出:true or false本题含有多组样例输入。输入描述:输入4个int整数输出描述:返回能否得到24点,能输出true,不能输出false示例1输入:7 2 1 10输出:true...原创 2021-06-05 07:52:40 · 160 阅读 · 0 评论 -
拼接字符串
拼接url,给定一个字符串,中间存在“,”隔开前后两个url,要求拼接这两个url,且中间有且只有一个“/”。 (例如 abc/,/bdd 输出abc/bdd)原创 2021-06-05 07:49:45 · 169 阅读 · 0 评论 -
深度查找算法
给定一个数组,求是否存在满足A=B+2C等式的三个元素A、B、C#include<stdio.h>int a[10]={1,2,3,4,5,6,7,8,9,10};int i;int j;int k;int main(void){ for(i=0;i<10;i++) { for(j=0;j<10;j++) { for(k=0;k<10;k++) { .原创 2021-06-05 07:47:37 · 284 阅读 · 0 评论 -
等差数列求和
描述功能:等差数列 2,5,8,11,14。。。。输入:正整数N >0输出:求等差数列前N项和本题为多组输入,请使用while(cin>>)等形式读取数据输入描述:输入一个正整数。输出描述:输出一个相加后的整数。示例1输入:2输出:7...原创 2021-06-05 07:46:15 · 2498 阅读 · 0 评论 -
字母、数字字符串排序
描述Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。本题含有多组样例输入。输入描述:Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。输出描述:Lily的所有图片按照从小到大的顺序输出示例1输入:Ihave1nose2hands10fingers输出:0112Iaadeeefghhinnnorsssv...原创 2021-06-05 07:44:54 · 568 阅读 · 0 评论 -
蛇形矩阵,找规律
描述蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。例如,当输入5时,应该输出的三角形为:1 3 6 10 152 5 9 144 8 137 1211请注意本题含有多组样例输入。输入描述:输入正整数N(N不大于100)输出描述:输出一个N行的蛇形矩阵。#include<stdio.h>int n;int i;int j;int main(void){ scanf("%d",&n); int a[n][n]...原创 2021-06-04 15:27:04 · 613 阅读 · 0 评论 -
小球弹跳高度,找规律题
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?最后的误差判断是小数点6位原创 2021-06-04 15:25:58 · 288 阅读 · 0 评论 -
统计字符串不同种类的个数
#include<stdio.h>char pc = 0;int eng;int spc;int num;int oth;int main(void){ while(pc != EOF) { pc = getchar() ; if((pc>='A' && pc<='Z')||(pc>='a' && pc<='z')) { e.原创 2021-06-04 15:24:25 · 152 阅读 · 0 评论 -
排序多种算法
排序方法一# include <stdio.h>int main(void){ int a[] = {900, 2, 3, -58, 34, 76, 32, 43, 56, -70, 35, -234, 532, 543, 2500}; int n; //存放数组a中元素的个数 int i; //比较的轮数 int j; //每轮比较的次数 int buf; //交换数据时用于存放中间数据 n = sizeof(a) / size...原创 2021-06-04 15:22:04 · 74 阅读 · 0 评论 -
检查IP地址合法性
输入描述:输入一个ip地址,保证是xx.xx.xx.xx的形式(xx为整数)输出描述:返回判断的结果YES or NO示例1输入:10.138.15.1255.0.0.255255.255.255.1000输出:YESYESNO原创 2021-06-04 15:20:12 · 165 阅读 · 0 评论 -
字符串插入算法
描述将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。注意:本题有多组样例输入。输入描述:输入一个字符串输出描述:字符中所有出现的数字前后加上符号“*”,其他字符保持不变示例1输入:Jkdi234klowe90a35151输出:Jkdi*234*klowe*90*a*3**5151*...原创 2021-06-04 15:17:34 · 412 阅读 · 0 评论 -
自守数算法
描述自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数接口说明/*功能: 求出n以内的自守数的个数输入参数:int n返回值:n以内自守数的数量。*/...原创 2021-06-04 15:16:10 · 837 阅读 · 0 评论 -
字符串个数统计与排序
描述输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。本题含有多组样例输入输入描述:一个只包含小写英文字母和数字的字符串。输出描述:一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。示例1输入:aaddccdc1b1bbbbbbbbb输出:cdab1说明:第一个样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输原创 2021-06-04 15:14:26 · 959 阅读 · 0 评论 -
字符串统计与排序
输入:aaddccdc1b1bbbbbbbbb输出:cdab1#include<stdio.h>#include<string.h> char str[1005];int b[150],max=0;int main(){ while(scanf("%s",str)!=EOF) { memset(b,0,sizeof(b)); for(int i=0;str[i]!=0;i++) { b[原创 2021-06-04 15:10:58 · 206 阅读 · 0 评论 -
scanf()函数怎么读入空格
输入:happy end输出:happy endint main(){ char arr[88]; char *str; str = &arr[0]; scanf("%[^\n]%*c",str); printf("%s",str); return 0;}scanf("%[^\n]%*c",str)表示读入一行字符串。^表示"非",[^\n]表示读入换行字符就结束读入。*表示该输入项读入后不赋予任何变量,即scanf("%*.原创 2021-06-04 15:08:27 · 2066 阅读 · 0 评论 -
字符串排序
输入3wsdcasdfbbbb输出asdf bbbb wsdc#include<stdio.h>#include<stdlib.h>#include<string.h> int main(){ int n; scanf("%d",&n); char str[n][20]; int i=0; for(;i<n;i++) scanf("%s",&str[i]);//注意地原创 2021-06-03 13:52:18 · 81 阅读 · 0 评论 -
冒泡排序法
/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 *//* 2. 对所有元素均重复以上步骤,直至最后一个元素 *//* elemType arr[]: 排序目标数组; int len: 元素个数 */原创 2021-06-03 13:36:10 · 83 阅读 · 0 评论 -
c语言scanf返回值
c语言scanf返回值1. scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b); 如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量); 如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。 2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。 3) EOF,...原创 2021-06-03 13:34:18 · 6104 阅读 · 0 评论 -
求最大连续bit数
查找输入整数二进制中1的个数输入:5输出:2说明:5的二进制表示是101,有2个1原创 2021-06-03 13:29:54 · 121 阅读 · 0 评论 -
整数转字符串与字符串转整数
整数转字符串size_t digits10(uint32_t value){ int length = 0; while(value) { length++; value /= 10; } return length;}size_t my_uint32_to_str(uint32_t value, char *dst){ size_t length = digits10(value); size_t len .原创 2021-06-03 13:23:44 · 175 阅读 · 0 评论 -
换汽水瓶算法
描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表.原创 2021-06-03 13:14:32 · 149 阅读 · 0 评论 -
字符串倒序输出
#include<stdio.h>#include<string.h>int main(void){ char str[1000]; int len ; scanf("%s",str); len =strlen(str); while(len) { printf("%c",str[len-1]); len--; } return 0;}原创 2021-06-03 13:11:48 · 106 阅读 · 0 评论 -
百钱买百鸡
公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?详细描述:接口说明原型:int GetResult(vector &list)输入参数: 无输出参数(指针指向的内存区域保证有效): list 鸡翁、鸡母、鸡雏组合的列表返回值: -1 失败 0 成功输入描述:输入任何一个整数,即可运行程序。输出描述:示例1...原创 2021-06-03 11:10:44 · 189 阅读 · 0 评论 -
根据输入的日期,计算是这一年的第几天
#include<iostream>using namespace std;int dataToDay(int year,int month,int day){ if(year<=0||month<=0||month>12||day>31||day<=0) return -1; int lemp[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int Nolemp[12]={31,28,31...原创 2021-06-03 11:02:42 · 237 阅读 · 0 评论