![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
如我1220
这个作者很懒,什么都没留下…
展开
-
字符串问题集
题目描述学习了字典序和字符串比较之后,今天让我们来给学生名单进行一下排序。我们知道海贼理工学院的每个精英班有10名学生,老师会依次给出10名学生的名字(均为不含有空格的英文字符串)。你需要将这些名字按照字典序从小到大进行输出。输入测评机会反复运行你的程序。每次程序运行时,你的程序会被输入10行不含有空格的字符串,分别对应十个学生的姓名(字符串长度均大于0且小于20)。输出输出为10 行,为排序后的10 个学生姓名,每个学生姓名单独占一行。样例输入1AliceBobGaryHarryIv原创 2021-09-18 15:46:23 · 172 阅读 · 0 评论 -
入门题集1
现在给出你边c 的长度,请你求出有多少对不同a,b 满足a2+b2=c2,a,b,c均为整数,其实就是求有多少个不同形状的斜边为c 的直角三角形个数。输入输入第一行一个整数c(1≤c≤106) ,表示三角形斜边的长度。输出按照题目要求输出答案。样例输入125样例输出12#include<stdio.h>#include <math.h>int main() { long long n; scanf("%lld", &n); in原创 2021-08-12 20:17:49 · 135 阅读 · 0 评论 -
约瑟夫环问题
题目描述约瑟夫置换是一个很著名的问题,有个 N 犹太人围成一圈,从第一个人开始报数,数到 M 的人出列,再由下一个人重新从 开始报数,数到 M 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。输出一行 N 个整数,按顺序输出每个出圈人的编号。(注:编号是从 1 开始的,每两个数字中间有空格,最后一个数字后面没空格。)输入输入两个整数 N 和 M,分别表示有 N 个犹太人,数到 M 的人出圈。(2 <= n <= 10000, 2 <= m <= 10000原创 2021-06-18 17:13:15 · 112 阅读 · 0 评论 -
顺序表与链表
顺序表主要代码:typedef struct vector { int *data; int size,length;} Vec;Vec *init(int n) { Vec *v = (Vec *)malloc(sizeof(Vec)); v->data = (int *)malloc(sizeof(int) * n); v->size = n; v->length = 0; return v;}int expand原创 2021-05-31 02:26:25 · 324 阅读 · 0 评论 -
斐波那契--shell
相信小伙伴们都学过斐波那契数列,它是这样的一个数列: 1,1,2,3,5,,8,13。输入一个n, 求出第n项。样例输入113样例输出112#!/bin/bashread ndeclare -a flfl[1]=1fl[2]=1for ((i=3;i<=${n};i++));do fl[${i}]=$[${fl[$[${i}-1]]}+${fl[$[${i}-2]]}]doneif [[ ${n} -eq 1 || ${n} -eq 2 ]];then原创 2021-05-06 23:37:30 · 256 阅读 · 0 评论 -
图形集合--C语言
1. 输入一个正整数 n,并输出一个菱形,这个菱形有 2n−1 行,第一行有 1 个字母 A,之后的 n−1 行每行字母会变成上一行的下一个(A 的下一个是 B),且数量会递增 2 个,后面的 n+1 行至 2n−1 行,会变成上一行的上一个(B 的上一个是 A),且数量会递减 2 个,同时,我们需要在每行前输出一定数量的空格,以保证菱形居中,注意末尾不要有多余的输出。样例输入2样例输出ABBBA样例输入23样例输出2ABBBCCCCCBBBA思路:分为上下两部分,先打印上原创 2021-05-07 22:35:01 · 934 阅读 · 1 评论 -
简单空间换时间按思想
问题:由一个自然数组成的数组中,找出出现次数最多的数,并打印出来。思想:将所有的数字排序,然后一一递归, 这样效率不高,费时;利用空间换取时间,几多利用资源,提高时间效率:另外创建一个数组来存储每个数出现的次数,然后再遍历找出最大的数,注意这一的最大的数其实是数组的索引加一;代码如下:#include <stdio.h>void search_fun(int *arr, int len) { int spl[100] = {0}; int max原创 2021-05-06 22:46:49 · 81 阅读 · 0 评论 -
C语言-----结构类型
结构体原创 2021-04-17 17:54:37 · 137 阅读 · 0 评论 -
字符串函数
#include <string.h> size_t strlen(const char *s);strlen;#include <stdio.h>#include <string.h>int my_strlen(char *s) { int cunt = 0; int i = 0; while(s[i] != '\0') { i++; cunt++; } return cunt;原创 2021-04-07 00:14:07 · 71 阅读 · 0 评论 -
getchar 与 putchar
int putchar(int c);向标准输出写一个字符;返回写了几个字符,失败返回-1;int getchar(void);从标准输入读入一个字符;返回类型时int 是为了返回EOF(-1);#include <stdio.h>int main() { int ch; while((ch = getchar()) != EOF) { putchar(ch); } printf("EOF\n"); return 0;}原创 2021-04-04 15:49:24 · 92 阅读 · 0 评论 -
指针的使用
指针应用应用场景一交换两个变量大的值#include <stdio.h>void swap(int *a, int *b) { //传入地址---用指针 int temp; temp = *a; *a = *b; *b = temp;}int main() { int a, b; scanf("%d %d", &a, &b); swap(&a, &b); //实现两个值交换 printf原创 2021-04-03 16:50:46 · 68 阅读 · 0 评论 -
打印菱形
先打印空白,再打”AA“,方法比教笨,不太简洁;#include<stdio.h>void tra(int n) { for(int i = 1; i <= n; i++) { for(int j = 1; j < n + 1 - i; j++) { printf(" "); } for(int m = 1; m <= i; m++){ printf("AA");原创 2021-03-21 10:12:44 · 39 阅读 · 0 评论 -
求n 的因子个数
线性筛求n 的因子个数;#include<stdio.h>#define MAX_N 100int prime[MAX_N + 5];int fac[MAX_N + 5];//i 的因子个数;int cunt[MAX_N + 5];// i 的 最小素因子的幂次;void init() { for(int i = 2; i <= MAX_N; i++) { if(!prime[i]){ prime[++prime[0]] = i原创 2021-03-21 10:12:18 · 318 阅读 · 0 评论 -
99乘法表
#include<stdio.h>void multi(int n) { for(int i = 1; i <= n; i++) { for(int j = i; j <= n ; j++) { printf("%d*%d=%d", i, j, i * j); if(j == n) continue; printf("\t"); }原创 2021-03-02 22:05:23 · 50 阅读 · 0 评论 -
ip 地址转换为整数 及 大端机与小端机
用共用体实现ip 转整数#include<stdio.h>union ip { struct{ unsigned char a1; unsigned char a2; unsigned char a3; unsigned char a4;} ip; unsigned int num;};int main() { union ip p;//共用体类型定义p; char str[100] = {0}; int ar原创 2021-02-25 18:15:46 · 428 阅读 · 0 评论 -
log宏与条件式编译
debug 时可以使用log 宏来来查找;#include<stdio.h>#ifdef DEBUG#define log(frm, args...) {\ // frm 为格式, args 为变参列表; printf("[%s : %s : %d] ", __FILE__, __func__, __LINE__);\ printf(frm,##args);\ //## ,两个##表示连接; printf("\n");\}#else#define log(f原创 2021-02-25 00:38:54 · 161 阅读 · 0 评论 -
MAX宏
没有BUG 的MAX 宏#include<stdio.h>//#define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MAX(a, b) ({\ __typeof(a) _a = (a);\ __typeof(b) _b = (b);\ _a > _b ? _a : _b;\})#define P(func) {\ printf ("%s = %d\n", #func, func);\}int原创 2021-02-24 16:31:12 · 223 阅读 · 0 评论 -
x 天后的日期
给定一个合法的日期,求 X 天后的日期输入第一行输入一个整数 ??,表示天数。第二行输入三个整数 y,m,d,分别表示当前日期的年月日。(1≤x≤500,日期一定合法)输出输出为一行,共三个整数,分别表示 x 天后日期的年月日。#include<stdio.h>int mont(int n) { if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) return 0; else return 1;}i原创 2021-02-19 22:42:29 · 813 阅读 · 1 评论 -
欧几里德算法求最大公因子; 求最小公倍数
求最大公约数算法:(1)辗转相除法有两整数a和b:① a%b得余数c② 若c=0,则b即为两数的最大公约数③ 若c≠0,则a=b,b=c,再回去执行①例如求27和15的最大公约数过程为:27÷15 余12,15÷12余3,12÷3余0因此,3即为最求两个数的最小公倍数:最小公倍数=两数的乘积÷最大公约数#include<stdio.h>int gcd (int m, int n) { if (n) return gcd(n, m % n); else re原创 2021-02-05 22:38:50 · 438 阅读 · 0 评论 -
欧拉45题
函数指针其实是指针,是存储函数的变量。#include<stdio.h>long long tri(long long n) { return n * (n + 1) / 2;}long long pen(long long n) { return n * (3 * n - 1) / 2;}long long hex(long long n) { return n * (2 * n - 1);}long long binary_search(long lo原创 2021-02-05 21:38:29 · 75 阅读 · 0 评论 -
二分法
#include<stdio.h>#define MAX_N 100int binary_search(int *arr, int x, int n) { int head = 0, tail = n - 1, mid = 0; while (head <= tail) { mid = (head + tail) / 2; if (arr[mid] == x) return mid; else if (arr[mid] &原创 2021-02-04 17:03:57 · 37 阅读 · 0 评论 -
线性筛
用素数标记合数2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20线性筛标记:2——4;3——6,3——9;4——8;5——10,5——15;6——12;7——14;8——16;9——18;10——20;素数为:2,3,5,7,11,13,17,19确保N=M*P;P为最小因子,M则为最大因子;当M%P==0时结束当前M的标#include<stdio.h>#define MAX_N 100int prime[MAX_N + 5原创 2021-01-29 21:52:27 · 42 阅读 · 0 评论 -
求最小素因子,最大素因子
用素数筛框架求最小素因子,只需做一些改变在这#include<stdio.h>#define MAX_N 1000int prime[MAX_N + 5];void init() { for (int i = 2; i <= MAX_N; i++) { if (prime[i]) continue;//还是用素数标记,合数已被素数标记过 for (int j = i; j <= MAX_N; j += i){原创 2021-01-29 00:07:40 · 574 阅读 · 0 评论 -
素数筛
用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 301不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是:3 5 7 9 11 13 15 17 19 21 23 25 27 29剩下的数中3原创 2021-01-28 23:04:07 · 70 阅读 · 0 评论 -
丑数问题
题目描述 所谓丑数,就是素因子中只含有 2、3、5 的数字。给出一个数字 N,请输出 N 以内所有丑数。特别的规定,1 是第一个丑数。输入 输入一个整数 N(1≤N≤1000)。输出 从小到达输出 N 以内的所有丑数,包括 N,每行输出一个数字 。样例输入115样例输出112345689101215原创 2021-01-15 00:45:43 · 260 阅读 · 0 评论 -
吃桃问题
吃桃问题递归解决题目描述路飞买了一堆桃子不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到 n 天只剩下一个桃子了。路飞想知道一开始买了多少桃子。输入输入一个整数 n(2≤n≤30)。输出输出买的桃子的数量。#include<stdio.h>int peach(int p) {return (p + 1) * 2;}int main(){int n;scanf ("%d", &n);int p = 1;for原创 2021-01-07 20:38:25 · 385 阅读 · 0 评论 -
C语言---筛法求解15以内质数
对于n以内的筛选来说,如果n是合数,则有 1 ≤ c ≤ √n ,即 1 ≤ c2 ≤ n , c是n的最小正因数。只要找到了c就可以确定n是合数并将n标记。代码如下:#include <stdio.h>int main() {int n = 15;int mark[16] = {1, 1, 0, 0,0, 0, 0, 0,0, 0, 0, 0,0, 0, 0, 0};int c; //最小正因数int j;for (c = 2; c * c <= n; c++)原创 2020-10-15 08:43:20 · 298 阅读 · 0 评论 -
输入一个 倒序打印三角形
实现 输入1到9;打印乘法表11=1 12=222=411=1 12=2 13=322=4 23=63*3=9大概思路:逐行打印,第一行打印全部数子乘积;第一个乘数数不变,第二个乘数加一;之后每一列都进行递减;结果呈现的是递减三角形的乘法表代码:...原创 2020-10-11 23:06:21 · 541 阅读 · 0 评论 -
C语言 输入一个数打印乘法表
11=1 12=2 13=322=4 23=633=9输入一个数实现乘法表打印思路:第一行全部打印,之后逐次递减;第一行,第一行开头1,第二行开头为2,以此类推,第二个数第一列为1,第二列为2,逐次;即每一行都是都是行数*行数++;类型及输入输出:int ,如要输入需用scanf(),打印需要使用’\t’’;代码:#include <stdio.h>int main(){int number;scanf ("%d",&number);int lin原创 2020-10-11 22:45:57 · 1525 阅读 · 0 评论 -
C语言打印三角形
1 1 1 12 2 23 34实现如图的三角大概思路:首先可以看出补全它就是一个正方形,所以可以理解正方形为每一列减少一个,然后一一打印,直至最后一个。考虑数据类型为整形代码如下#include <stdio.h>int main(){int number;scanf ("%d",&number);int i;int j,num;num=number;for (i=1; i <= number; i++){ for (j=1; j &l原创 2020-10-10 23:25:02 · 3057 阅读 · 0 评论 -
质数判断并打印
打印质数:#include <stdio.h>int main(){int number;scanf ("%d",&number);int n,i;int a=0;for (i=2; i <= number; i++){for (n=2; n < i; n++){if (i % n 0)a++;}if (a0)printf ("%d\n",i);a=0;}return 0;}选用循环嵌套这里用了比较低效的一种,大概思路:就是整除原创 2020-10-10 00:38:50 · 139 阅读 · 0 评论