C程序设计
AlexCookie
感谢互联网,让我在知识的海洋遨游,感谢广大网友,把所学知识分享,咱们一起进步!博主主分享:算法,计算机方向。
展开
-
计算机复试题总结(九)
C程序汇总程序和算法的概念 程序:完成事务的方式和过程,算法的具体实现。算法:由若干指令组成的有穷序列。特性:输入,输出,可行性,确定性,有穷性1)程序设计的基本过程 1.问题分析,2设计算法,3编写程序4.生成可执行文件:预处理.i->编译.s->汇编.o->链接.exe5.运行程序,6整理文档2)算法的特点 特性:输入:有0个或多个输入,输出:有1个或多个输出,可行性:算法的所有操作可以通过操作有限次实现确定性:操作有确定的规定含义,算原创 2022-04-05 19:06:59 · 1017 阅读 · 0 评论 -
计算机复试题总结(六)
C程序题总结原创 2022-03-28 16:18:41 · 325 阅读 · 0 评论 -
完成一半题目<leetcode>
有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。主办方提供了 2*N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。若每位扣友选择不同的一题,请返回被选的 N 道题目至少包含多少种知识点类型。void shell(int a[],int n)//希尔排序 从大到小{ int d = n / 2; while(d > 0) { for(int i = d + 1;i < n;i ++)原创 2022-03-22 18:38:56 · 1408 阅读 · 0 评论 -
快乐数<leetcode_set>
编写一个算法来判断一个数n是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为1,那么这个数就是快乐数。如果n是快乐数就返回true;不是,则返回false。bool isHappy(int n){ long int sum = 0,div = 1,ar = div * 10,count = 1; while(1) ...原创 2022-03-22 14:00:33 · 105 阅读 · 0 评论 -
买卖股票的最佳时机给定一个数组 prices <leetcode_set>
它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出。int maxProfit(int* prices, int pricesSize){ int dp[pricesSize];//收益统计 dp[0] = 0;//初始 if(pricesSize < 2) { return 0; } //动态规划 逐步增加考虑的天数范围 in原创 2022-03-22 13:56:17 · 225 阅读 · 0 评论 -
线索树找*p的中序后继且中序遍历 二叉线索树
//线索树找*p的中序后继且中序遍历 二叉线索树#define thread 1#define link 0typedef struct Bt{ char data; struct Bt *lc;//左孩子 struct Bt *rc;//右孩子 struct Bt *ltag;//左标识 struct Bt *rtag;//右标识 }*Bt;Bt SBack(Bt p);//找后继 //中序 void mider(Bt p){ while(p->lc == lin.原创 2022-03-05 16:34:10 · 2025 阅读 · 0 评论 -
寻找二叉树 以某个值为根的点的 深度,先序创树主要代码
寻找二叉树 以某个值为根的点的 深度,先序创树//先序创建树,初始化树typedef struct Btree{ char data; struct Btree *lc; struct Btree *rc;}*Btree,node;//树结点 结构体 Btree CT(){ char c; Btree t; scanf("%c",&c); if(c == '#') { //如果# 说明该结点 不存在 t = NULL; } else { t = (B原创 2022-03-05 14:51:33 · 214 阅读 · 0 评论 -
折半查找 主要代码部分
//二分查找(折半查找)void TS(int a[],int data,int low,int high)//传入一个升序的数组a,查找值data,下界 下标low,上界 下标high { int mid = (low + high) / 2;//中间下标 if(a[mid] > data) { //data比中间值小 升序时 往左边找 TS(a,data,low,mid - 1); } else if(a[mid] < data) { //data比中间值大.原创 2022-03-05 14:32:48 · 145 阅读 · 0 评论 -
归并排序,快速排序,希尔排序主要代码对比
/*o(nlogn) time efficiency*///归并排序 o(nlogn) o(n) stable//归并排序 o(nlogn) o(n) stablevoid MA(int a[],int be,int mid,int en)//数组的a[0] 不保存元素 { int b = be,ob = mid + 1,k = 0,c[101] = {0};//c数组为临时数组 //当且当 b,ob在范围内 while(b <= mid && ob <原创 2022-03-04 23:42:46 · 176 阅读 · 0 评论 -
冒泡,选择,插入对比代码
冒泡,选择,插入排序的代码原创 2022-03-04 22:06:08 · 521 阅读 · 0 评论 -
基数排序主要代码
/*o(n*k) time efficiency*///基数排序 o(n*k) o(n+k) stabletypedef struct base{ int key; float data; int next;//假指针 }base;//返回 排序后首位元素的小标,访问该元素用 a[BS[a],n].key int BS(base a[],int n){ int f[10],e[10];//f[k],e[k]分别为 指向 基数池k的第一个元素“位置”和最后一个元素位置,某池只有一个元..原创 2022-03-04 21:36:14 · 646 阅读 · 0 评论 -
希尔排序主要代码o(nlogn) o(1) stable
//希尔排序 o(nlogn) o(1) stablevoid shell(int a[],int n){ int d = n / 2;//初始增量 while(d >= 1) { for(int i = d + 1;i < n;i ++)//起始点往后 { int j = i - d,x = a[i]; while(j > 0 && a[j] > x)//以该增量 往前遍历 对比 { a[j + d] = a[j]..原创 2022-03-04 21:34:43 · 116 阅读 · 0 评论 -
大乐透模拟自选
模拟自选//模拟自选 /*大乐透投注区分为前区号码和后区号码,前区号码范围为01~35,后区号码范围为01~12。大乐透每期从35个前区号码中开出5个号码,从12个后区号码中开出2个号码作为中奖号码,大乐透玩法即是竞猜开奖号码的5个前区号码和2个后区号码,顺序不限。*/#include <iostream>//c ++输入输出 #include <stdlib.h>//含srand()选种子函数,rand随机函数 #include <ctime>/.原创 2022-01-21 13:34:46 · 1972 阅读 · 1 评论 -
已有两个链表a、b,结点包含学号、姓名。从a表中删除与b表相同相同学号的结点。
已有两个链表a、b,结点包含学号、姓名。从a表中删除与b表相同相同学号的结点。/*已有两个链表a、b,结点包含学号、姓名。从a表中删除与b表相同相同学号的结点。 */#include <stdio.h>#include <malloc.h>//申请动态空间 typedef struct node{ int num;//学号 float grade;//成绩 struct node *next;}node,*stu;//从a表中删除与b链中学号相同结点原创 2021-12-31 13:00:42 · 1208 阅读 · 0 评论 -
一个链表包括学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含年龄等于此年龄则删除该结点。
一个链表包括学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含年龄等于此年龄则删除该结点。/*一个链表包括学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含年龄等于此年龄则删除该结点。 *//*已有两个链表a、b,结点包含学号、姓名。从a表中删除与b表相同相同学号的结点。 */#include <stdio.h>#include <malloc.h>//申请动态空间 typedef struct node{ int num;//学.原创 2021-12-31 12:59:25 · 1366 阅读 · 0 评论 -
13人围成一圈,从第一个人开始顺序报号1,2,3。报到3退出。找出最后留在圈子中的人原来的序号。用链表实现。
13人围成一圈,从第一个人开始顺序报号1,2,3。报到3退出。找出最后留在圈子中的人原来的序号。用链表实现。/*13人围成一圈,从第一个人开始顺序报号1,2,3。报到3退出。找出最后留在圈子中的人原来的序号。用链表实现。 */#include <stdio.h>#include <malloc.h>//申请空间 //人 结点 typedef struct node{ int order; struct node *next;}node,*people;//原创 2021-12-30 23:53:35 · 1579 阅读 · 0 评论 -
已有a,b两个链表,每个链表包含学号、成绩。要求合并两个链表,按学号升序排列。
已有a,b两个链表,每个链表包含学号、成绩。要求合并两个链表,按学号升序排列。/*已有a,b两个链表,每个链表包含学号、成绩。要求合并两个链表,按学号升序排列。 */#include <stdio.h>#include <malloc.h>//申请动态空间 typedef struct node{ int num;//学号 float grade;//成绩 struct node *next;}node,*stu;//初始化链表,长度有n结点stu In原创 2021-12-30 23:52:09 · 1778 阅读 · 0 评论 -
输入月份号,输出该月的英文月名。用指针数组处理
/*输入月份号,输出该月的英文月名。用指针数组处理 */#include <stdio.h>//用二维数组实现 int main(){ char a[][12] = { " ", "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "Dece.原创 2021-12-30 21:07:28 · 6055 阅读 · 0 评论 -
输入月份号,输出该月的英文月名。用switch处理
/*输入月份号,输出该月的英文月名。用switch处理 */#include <stdio.h>int main(){ int x = 0; scanf("%d",&x); switch(x) { case 1:printf("January");break; case 2:printf("February");break; case 3:printf("March");break; case 4:printf("April");break; .原创 2021-12-30 21:06:48 · 1351 阅读 · 0 评论 -
输入一个十六进制数,输出相应的十进制数。(非调库)
/*输入一个十六进制数,输出相应的十进制数。 */#include <stdio.h>#include <cmath>//含pow(value,number)次方函数 #define n 101//十六进制转化为十进制 int decimal_hex(char a[],int size)//传入十六进制数组,和其长度 { //去除错误情况 if(a == '\0' && size < 1) { return 0; } //.原创 2021-12-30 18:05:52 · 1891 阅读 · 0 评论 -
给出年、月、日,计算该日是该年的第几天。
给出年、月、日,计算该日是该年的第几天。//大多数情况下列出 每个月的默认天数(如果是闰年后面再修改)//默认 1、3、5、7、8、10、12每月31天,二月闰年29天,平年28天,其余月份30天/*给出年、月、日,计算该日是该年的第几天。 */#include <stdio.h>#define n 8//大多数情况下列出 每个月的默认天数(如果是闰年后面再修改)//默认 1、3、5、7、8、10、12每月31天,二月闰年29天,平年28天,其余月份30天 in...原创 2021-12-30 18:04:47 · 4915 阅读 · 0 评论 -
求魔方阵,1~n次方的自然数构成的魔方阵(奇数矩阵)。
一,第一行 最中间一列为1(是奇数矩阵一定存在中间列)二,数字x(1< x <= n*n),如果其x - 1能被n整除,行位置向下移动则其列位置和 上一位一样不变.三,数字x(1< x <= n*n),如果不能被整除,其行需要往上移动一行,列需要向右移动一行四,移动需要注意是 自上而下,自右而左的循环着移动,需要求余运算/*求魔方阵,1~n次方的自然数构成的魔方阵(奇数矩阵)。 *//*魔方阵规律 一,第一行 最中间一列为1(是奇数矩阵一定存在中间列)二,数..原创 2021-12-30 16:16:02 · 1009 阅读 · 0 评论 -
输入小于1000的正数,输出它的平方根。(如果平方根不是整数,则输出其整数部分)
/*输入小于1000的正数,输出它的平方根。(如果平方根不是整数,则输出其整数部分) */#include <stdio.h>void solve_sqrt(int n){ for(int i = 1;i <= n/2;i ++) { if(i * i <= n && (i + 1)*(i + 1) > n ) { printf("sqrt is %d\n",i);//如果平方根不是整数,则输出其整数部分 break; .原创 2021-12-29 18:28:21 · 1327 阅读 · 0 评论 -
一个球从100m高度自由下落,每次反弹回一半高度,再落下,球10次过程共经过多少米,和第10次反弹多高
/*一个球从100m高度自由下落,每次反弹回一半高度,再落下,球10次过程共经过多少米,和第10次反弹多高 */#include <stdio.h>#define Begin_high 100int main(){ double h = Begin_high,sum = Begin_high;//double float 最开始下落100m int i = 1; while(i <= 9)//这里先进行9次反弹 { h = h / 2;//反弹 sum .原创 2021-12-29 18:15:14 · 867 阅读 · 0 评论 -
找1000之内的完数和其因子。 一个数恰好等于它因子之和,这个数就称为完数。
/*找1000之内的完数和其因子。 一个数恰好等于它因子之和,这个数就称为完数。*///如6因子为1,2,3,又6 = 1 + 2 + 3,故6为完数#include <stdio.h>#define Size 1000//找完数 并打印 蛮力遍历 void Find_PerfectNumber(){ int sum = 0; for(int i = 6;i < Size;i ++)//找完数 (显然从6开始) { sum = 0;//初始化sum因子总值 .原创 2021-12-29 17:24:11 · 5055 阅读 · 0 评论 -
输入两个正整数m和n,求其最大公约数和最小公倍数。
/*输入两个正整数m和n,求其最大公约数和最小公倍数。 */#include <stdio.h>//找最大公约数 并打印 void Find_MaxCommonDivisor(int m,int n){ if(m == 0 && n == 0) { printf("Maximum common divisor is zero\n"); return; } int mmin = (m > n ? n : m);//取m,n中较小值,作为最后一个测.原创 2021-12-29 17:23:29 · 242 阅读 · 0 评论 -
将“China”译成密码,用原来的字母后面第4个字母代替原来字母。用putchar和printf输出字符数组。
/*将“China”译成密码,用原来的字母后面第4个字母代替原来字母。用putchar和printf输出字符数组。 */#include <stdio.h>//含printf,scanf等 void Decoding(char a[]){ int i; for(i = 0;a[i] != '\0';i ++) { if(i == 0)//第一个字符 是大写, { a[i] = char((int(a[i]) + 4 - 'A')%26 + 'A');//循环 .原创 2021-12-29 17:22:46 · 742 阅读 · 0 评论 -
1900-2000年是闰年的年份。(被4整除但不被100整除 或 能被100整除且被400整除)
/*1900-2000年是闰年的年份。(被4整除但不被100整除 或 能被100整除且被400整除) */#include <stdio.h>int main(){ int i,j; for(i = 1900;i <= 2000;i ++) { if(i % 4 == 0 && i % 100 != 0 || i % 100 == 0 && i % 400 == 0) { printf("%d ",i); } } r.原创 2021-12-29 17:21:53 · 439 阅读 · 0 评论