
acm C语言算法
st紫月
这个人很懒,只想把你留下
展开
-
C语言函数、数组、字符串,C语言内置函数qsort的介绍
一、函数的作用:可以把公共的代码封装起来,可以进行多次调用,优化代码的可读性函数的定义方法:返回值类型 函数名(形式参数) /*函数头*/{ /*函数体*/ 变量声明 函数实现过程}1.返回值类型:返回函数的运算结果的数据类型,void不返回任何数据2.函数名:可以随机取名,但是最好见名知意3.形式参数:函数被调用时应该接收到的参数,每个参数用逗号隔开示例代码:#include<stdio.h>int add(int a,int b){ ret原创 2021-11-25 21:06:04 · 1125 阅读 · 1 评论 -
C语言 位运算操作符及应用
C语言长盛不衰霸榜长久的一部分原因,在于它对于计算机底层的操作。位运算,作为实现底层操作的一部分功能值得我们关注。当然从功利的角度而言,位运算在以后的面试、笔试过程中对我们有着极大的便利。前言:首先需要了解整数储存的机制;原码、反码、补码;三种码都是32位的二进制数输出靠原码,内存存补码;1、正整数原码、反码、补码相同,直接进行二进制转换就可;(2^32-1个正整数)2、负整数32位的首位为符号位(1代表负数);(2^31-1个符数)原码将剩余的31位通过负整数的绝对值进行二进制转化反码转载 2021-05-17 20:27:18 · 469 阅读 · 0 评论 -
C语言itoa()函数和atoi()函数详解(整数转字符C实现)
原文:https://www.cnblogs.com/bluestorm/p/3168719.html转载 2021-05-17 16:36:48 · 221 阅读 · 0 评论 -
C语言中缀表达式的计算
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 100 typedef float Num;//为防止以后变换操作数类型需要 typedef struct{ Num data[MAX]; int top;}StackNum;//运算数栈 typedef struct{ char data[MAX]; int top;}StackChar;//运算符栈 //--转载 2021-05-16 16:27:26 · 2083 阅读 · 2 评论 -
C语言进制转换全套
#include <stdio.h>#define MAXCHAR 101 /*最大允许字符串长度*/int char_to_num(char ch); /*返回字符对应的数字*/ char num_to_char(int num); /*返回数字对应的字符*/long source_to_decimal(char temp[], int source); /*返回由原数转换成的10进制数*/int decimal_to_object(char temp[], long dec转载 2021-05-16 15:43:29 · 241 阅读 · 0 评论 -
C语言中缀表达式转为前缀表达式
思想:(1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2;(2) 从右至左扫描中缀表达式;(3) 遇到操作数时,将其压入S2;(4) 遇到运算符时,比较其与S1栈顶运算符的优先级:(4-1) 如果S1为空,或栈顶运算符为右括号“)”,则直接将此运算符入栈;(4-2) 否则,若优先级比栈顶运算符的较高或相等,也将运算符压入S1;(4-3) 否则,将S1栈顶的运算符弹出并压入到S2中,再次转到(4-1)与S1中新的栈顶运算符相比较;(5) 遇到括号时:(5-1) 如果是右括号“)”,则直转载 2021-05-16 15:33:45 · 2112 阅读 · 3 评论 -
acmC语言中缀表达式转为后缀表达式
Sample InputX+A*(Y-B)-Z/FA+BC+(DM-N)+(S-T)YA-BC+(D-E*F)/GSample OutputXAYB-+ZF/-ABC+DMN-+ST-Y+ABC*-DEF*-G/+#include<stdio.h>#include<string.h>#include<malloc.h>typedef struct node{ char ch;//元素 int level;//优先级 }ElemType;//数原创 2021-05-16 15:29:40 · 234 阅读 · 0 评论 -
C语言高精度减法
#include <stdio.h>#include <string.h>char s[10100],ss[10100];int a[10100],b[10100];int len; void jian(){ int l1 = strlen(s); int l2 = strlen(ss); int flag = 0; memset(a,0,sizeof(a)); memset(b,0,size转载 2021-05-16 15:21:55 · 295 阅读 · 0 评论 -
C语言高精度加法运算
#include<stdio.h>#include<string.h>char s[10100],ss[10100];int a[10100],b[10100];int len;void jia() { int l1 = strlen(s); int l2 = strlen(ss); if (l1 > l2) len = l1; //将len赋值为l1,l2中大的那个 else len = l2; mems原创 2021-05-16 15:18:29 · 218 阅读 · 0 评论 -
C语言数论代码
题目大意:将一个数拆分成多个数的和,然后使这多个数的乘积最大1~4 最大分法所得的值 就是自己本身5 236 337 2238 2339 33310 133*3#include<stdio.h>#include<string.h>int a[1005];int t;void mul(int n){ int up=0,t; for(int i=0; i<1000; i++) { t原创 2021-05-16 15:03:44 · 286 阅读 · 0 评论 -
C语言高精度乘法运算
#include<stdio.h>#include<string.h>int c[3000];//两个数相乘,结果保存在数组c中void chengfa(char numberN[150000],char numberM[150000]){ int n = strlen(numberN), m = strlen(numberM); int a[n], b[m]; int i, j; for (i = 0, j = n - 1; i < n原创 2021-05-16 14:55:46 · 353 阅读 · 0 评论 -
C语言内置函数memset用法
头文件:#include<string.h>作用:给字符串数组赋值为一个数#include<stdio.h>#include<string.h>int main(){char a[10];memset(a,‘5’,sizeof(a));}sizeof(a)为字符数组a的下标,这里可以填具体的数字注意:memset只能操作字符类型,对int类型无效...原创 2021-05-16 13:25:42 · 129 阅读 · 0 评论 -
C语言快速求范围内的素数
#include<stdio.h>#include<string.h>int main(){ //输入一个t表示求t之内的素数 int t; scanf("%d",&t); char a[t]; int i=0,j=0; int count = 0; memset(a,'y',t); //初始化,数组中所有的元素赋值为真 for(i=3;i<t;i+=2) { a[i-1] = 'n'; //数组下标为偶数的2 4 6 8原创 2021-05-15 21:28:00 · 2549 阅读 · 0 评论 -
C语言快速幂取余算法
#include<stdio.h>#include<math.h>//a为底数,b为次数,p为余数long long fun(long long a, long long b,long long p){long long ans = 1;while (a&&b){ if (b & 1) ans = ((ans*a) % p) % p; a = (a*a) % p; b >>= 1; //移位运算,右移一位}return原创 2021-05-15 20:46:01 · 783 阅读 · 0 评论 -
acm《滑动窗口》
Description你有n个正整数,从中选择连续的k个,它们的和即为你得到的分数,试求最大得分。Input第一行两个正整数n,k。第二行n个正整数a[]。Output一个正整数,你能取得的最大的分数。Sample Input5 32 3 7 4 1Sample Output14HINTn不超过2000000,k不超过n,Σa[]不超过maxint。#include<stdio.h>int main(){ int n,k; scanf("%d%d",&n原创 2021-05-02 11:25:02 · 325 阅读 · 0 评论 -
acm《小鸡吃米》
Description冰茶几需要喂养两只小鸡。每只小鸡第一天吃1单位米,接下来的两天每天吃2单位米,之后的三天每天吃3单位米……即第一天吃1单位米,第二天和第三天吃2单位米,第四天、第五天和第六天吃3单位米……请计算为了喂养小鸡n天冰茶几需要准备多少单位米。Input一个正整数n。Output一个正整数ans。Sample Input1000Sample Output59640HINTn不超过1000#include<stdio.h>int main(){ int n原创 2021-05-01 12:09:56 · 249 阅读 · 0 评论 -
acm《质因数分解》
题目描述已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。输入格式一个正整数nn。输出格式一个正整数pp,即较大的那个质数。输入输出样例输入 #1复制21输出 #1复制7说明/提示n≤2×10^9#include<stdio.h>int main(){ long long int n; scanf("%lld",&n); for(int i=2;i<n;i++){ if(n%i==0){ if(n/i>i){原创 2021-05-01 10:32:43 · 588 阅读 · 0 评论 -
母牛生小牛
Description设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?Input输入一个整数N。(1≤N≤50)Output第N年时母牛的数量Sample Input5Sample Output3#include<stdio.h>#include<string.h>#include<math.h>int niu(int N);int main(){ int n; scanf("%d", &n); p原创 2021-04-29 23:12:38 · 185 阅读 · 0 评论 -
C语言acm小技巧
1.可以用一个变量是否等于1来判断是否该执行接来下的代码2.对于一次性使用的数组,用过里面的数据之后可以让它变为0,遍历时遇到0就跳过3.原创 2021-04-29 22:58:49 · 581 阅读 · 0 评论 -
C语言《头插法、尾插法建立链表》
#include<stdio.h>#include<malloc.h>#define zheng inttypedef struct LNode{ zheng data; struct LNode *next;}LNode,*Linklist;//头插法建立链表 Linklist toucha(int n){ Linklist l; l=(LNode*)malloc(sizeof(LNode));//对他分配空间 l->next =NULL;//最后一个原创 2021-04-28 23:48:04 · 206 阅读 · 0 评论 -
C语言《数组的递归快速排序》
#include<stdio.h>#include<stdlib.h>int partition(int [],int ,int);void quickSort(int [],int,int);void display(int [],int); int main(){ int num[10]={7,5,8,1,4,2,6,4,7,5}; int i,temp; printf("排序前:"); //打印数组内容 display(num,10)原创 2021-04-28 22:58:41 · 508 阅读 · 0 评论 -
acm《土豪婷婷请吃饭》
样例输入 Copy107 94 97 82 53 45 61 62 83 53 453 65 61 80 67 854 129 186 70 25 7样例输出 Copy743#include<stdio.h>int main(){ //n表示有多少人 a用来记录进场的时间 b记录出场的时间 int n; int a[5050]; int b[5050]; //用数组c记录每个时间段的人数 int c[5050]; w.原创 2021-04-14 16:00:15 · 249 阅读 · 0 评论 -
acm《斐波那契数列》
#include<stdio.h>int main(){ int t,n,i,sum; int a[1100]; scanf("%d",&t); while(t--) { scanf("%d",&n); a[0]=0; a[1]=1; sum=1; if(n==0) { printf("0\n"); } else { for(i=2;i<=n;i++) { a[i]=a[i-1]+a[i-2];.原创 2021-04-13 19:59:22 · 275 阅读 · 0 评论 -
acm《班委竞选》
题目描述某班级中有 n 位学生,学号为 1,2,…,n。现在班级中正在举行 m 个班干部职位的竞选,职位用 1,2,…,m 编号。学号为 i 的同学竞选的职位为 ci,获得 ti 票。最终每个职位选择票数最高的同学上任,若存在多个同学票数一致,则选择学号最小的同学上任。现在给你唱票结果,请你告诉班主任最终的班干部名单。输入第一行包含两个整数 n, m (1≤n≤51, 1≤m≤12, m≤n),含义见题目描述。接下来 n 行,第 i 行包含两个整数 ci, ti (1≤ci≤m, 1≤ti≤n),原创 2021-04-13 19:49:23 · 426 阅读 · 0 评论 -
C语言《字符串函数》
在 C 语言中,字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。C 中有大量操作字符串的函数:头文件必须引入#include<string.h>1 strcpy(s1, s2);复制字符串 s2 到字符串 s1。2 strcat(s1, s2);连接字符串 s2 到字符串 s1 的末尾。3 strlen(s1);返回字符串 s1 的长度。4 strcmp(s1, s2);如果 s1 和 s2 是相同的原创 2021-04-13 19:30:12 · 156 阅读 · 0 评论 -
C语言《内存动态分配》
先输入一个正整数n,再输入任意n个整数,然后逆序输出这n个整数。要求使用动态内存分配方法为这n个整数分配空间。Input输入包含两行第一行,一个整数n(0<n<=1000)第二行,n个整数Outputn个整数逆序后的结果Sample Input31 2 3Sample Output3 2 1#include<stdio.h>#include<malloc.h>#define zheng inttypedef struct LNode{ zh原创 2020-11-21 11:06:07 · 765 阅读 · 0 评论 -
C语言《素数问题》
编写一个程序判断一个数是否为素数,注意1不是素数,2是素数。Input整数Output1或0(其中1表示此数为素数,0为表示为不是素数)Sample Input5Sample Output1#include<stdio.h>#include<math.h>int main(void){ int a,b,i; a=0; scanf("%d",&b); for (i=2;i<b;i++) { if(b%i==0) { a++;原创 2020-11-21 10:58:40 · 518 阅读 · 0 评论 -
C语言《敲7》
输出7和7的倍数,还有包含7的数字例如(17,27,37…70,71,72,73…)的个数。Input一个整数N。(1<=N<=30000)Output统计出从1开始不大于N的与7有关的数字的个数。如20以内与7有关的数为7、14、17共3个。Sample Input20Sample Output3#include<stdio.h>#include<math.h>int main(){ int i,n,m; m=0; scanf("%d原创 2020-11-21 10:54:50 · 9414 阅读 · 1 评论 -
C语言《计算整数位数》
Description输入一个正整数,计算该整数的位数。Input一个整数Output该整数的位数Sample Input12325Sample Output5#include<stdio.h>#include<math.h>int main(void){ int n,l; scanf("%d",&n); l=(int)log10(n)+1; printf("%d\n",l); return 0;}...原创 2020-11-21 10:49:26 · 2628 阅读 · 0 评论 -
C语言《计算两点间距离》
输入4个实数x1,y1,x2,y2,数据之间用空格隔开。表示两点坐标A(x1,y1), B(x2,y2),计算并输出两点间的距离。结果保留两位小数。Input4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。Output两点之间的距离,结果保留2位小数Sample Input0 0 0 1Sample Output1.00#include<stdio.h>#include<math.h>int main(void){ float x1,x2原创 2020-11-21 10:44:16 · 27014 阅读 · 0 评论 -
C语言结构体基础练习题
现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个函数input,用来输入一个学生的数据记录。 编写一个函数print,打印一个学生的数据记录。 在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100Input学生数量N占一行 每个学生的学号、姓名、三科成绩占一行,空格分开。Output每个学生的学号、姓名、三科成绩占一行,逗号分开。Sample Input2a100 zhblue 70 80 90b200 newsclan 90 85 75Samp原创 2020-11-21 10:33:07 · 3974 阅读 · 1 评论 -
C语言求任意数的阶层
在c语音中普通int型只能保存12位的数据,如果使用普通int型求阶层等问题会出现数据溢出问题,使用long long int类型定义的数据可以存储19位,输出必须是lld类型#include <stdio.h>int main(){long long int sn=1,i,n;scanf("%d",&n);if(n<=20){for(i=1;i<=n;i++){sn=sn*i;printf("%-4lld%-20lld\n",i,sn);}}re原创 2020-11-19 16:12:28 · 2542 阅读 · 0 评论