
蓝桥杯
抬头前行吧请你
这个作者很懒,什么都没留下…
展开
-
高效求a的n次幂
#include<stdio.h>#include<math.h>int fun(int a,int n){ int k=1; int res=a; if(n==0) return 1; while((k=k*2)<n) { res=res*res; } return res*pow(a,n-k/2);}main(){ int a,n; printf("输入底数和指数:"); scanf("%d %d",&a,&n); p原创 2021-02-14 22:38:56 · 262 阅读 · 0 评论 -
在有空字符串的有序字符串数组里查找
#include<stdio.h>int fun(char a[8][5],char b[5]){ int begin=0; int end=7; int mid=(begin+end)/2; while(begin<=end) { while(a[mid][5]=="") mid++; if(strcmp(b,a[mid][5])>0) begin=mid+1; else if(strcmp(b,a[mid][5])<0) end=mid原创 2021-02-14 22:38:26 · 117 阅读 · 0 评论 -
旋转数组的最大数和最小数
#include<stdio.h>void fun(int a[],int len){ int begin=0,end=len-1; int mid=(begin+end)/2; while((begin+1)<end) { if(a[begin]<a[mid]) { begin=mid; mid=(begin+end)/2; } else if(a[begin]>a[mid]) { end=mid; mid=(begin原创 2021-02-14 15:37:19 · 266 阅读 · 0 评论 -
小白上楼梯
#include<stdio.h>int fun(int n){ if(n==1) return 1; if(n==2) return 2; if(n==3) return 4; return fun(n-1)+fun(n-2)+fun(n-3);}main(){ int n; printf("输入台阶数:"); scanf("%d",&n); printf("有%d种方法",fun(n));}原创 2021-02-14 15:15:43 · 100 阅读 · 0 评论 -
希尔排序
#include<stdio.h>void fun(int a[],int len){ int i,j,interval,tmp; for(interval=len/2;interval>0;interval/=2) { for(i=interval;i<len;i++) { tmp=a[i]; j=i-interval; while(tmp<a[j]&&j>=0) {原创 2021-02-14 12:16:01 · 78 阅读 · 0 评论 -
递归汉诺塔
#include<stdio.h>void move(char x,char y){ printf("move from %c to %c\n",x,y);}void hano(int n,char A,char B,char C){ if(n==1) move(A,C); else { hanoi(n-1,A,C,B); move(A,C); hanoi(n-1,B,A,C); }}main(){ hanoi(5,'A','B','C');原创 2021-02-14 12:15:31 · 76 阅读 · 0 评论 -
递归二分查找
#include<stdio.h>int fun(int a[],int begin,int end,int x){ int mid=(begin+end)/2; if(begin>end)//表示没有找到 return -1; if(x<a[mid]) return fun(a,begin,mid-1,x); else if(x>a[mid]) return fun(a,mid+1,end,x); else return mid;}main()原创 2021-02-14 10:47:24 · 89 阅读 · 0 评论 -
递归插入排序
#include<stdio.h>void fun(int a[],int k){ if(k==1) return; fun(a,k-1); int tmp=a[k-1]; int index=k-2; while(tmp<a[index]&&index>=0) { a[index+1]=a[index]; index--; } a[index+1]=tmp;}main(){ int a[5]={8,6,2,1,6}; int原创 2021-02-12 10:12:14 · 95 阅读 · 0 评论 -
递归求最大公约数
#include<stdio.h>int fun(int m,int n){ if(m%n==0) return n; return fun(n,m%n);}main(){ int m,n; printf("输入m和n:"); scanf("%d %d",&m,&n); printf("最大公因数是:%d",fun(m,n)); }或者#include<stdio.h>int fun(int m,int n){ if(n==0)原创 2021-02-10 19:34:37 · 128 阅读 · 0 评论 -
递归求斐波那契数列第n项
#include<stdio.h>int sum(int n){ if(n==1||n==2) return 1; return sum(n-1)+sum(n-2);}main(){ int n; printf("输入项数:"); scanf("%d",&n); printf("数列第n项和为:%d",sum(n));}原创 2021-02-10 17:55:26 · 691 阅读 · 0 评论 -
出现k次与出现1次
#include<stdio.h>#include<math.h>main(){ int arr[]={2,2,2,5,7,7,7,3,3,3,6,6,6,0,0,0}; int i,j,a[16][4]; //将数组arr中的每一个元素转成4bit三进制,用数组存储 for(i=0;i<16;i++) { for(j=3;j>=0;j--) { a[i][j]=arr[i]%3; arr[i]/=原创 2021-02-10 17:15:55 · 142 阅读 · 0 评论 -
递归数组求和
#include<stdio.h>int sum(int a[],int len){ if(len==1) return a[len-1]; return a[len-1]+sum(a,len-1);}main(){ int a[5]={8,9,6,5,5}; printf("%d",sum(a,5));}原创 2021-02-10 13:31:09 · 175 阅读 · 0 评论 -
递归输出从i到j
#include<stdio.h>void fun(int i,int j){ if(i>j) return; printf("%d ",i); return fun(i+1,j);}main(){ int i,j; printf("输入起始值和终止值:"); scanf("%d %d",&i,&j); fun(i,j);}原创 2021-02-08 19:30:07 · 124 阅读 · 0 评论 -
递归求阶乘
#include<stdio.h>int fun(int n){ if(n==1) return 1; else return n*fun(n-1);}main(){ int n; printf("输入一个整数:"); scanf("%d",&n); printf("%d",fun(n));}原创 2021-02-08 19:25:43 · 82 阅读 · 0 评论 -
0-1间的浮点实数二进制表示
#include<stdio.h>main(){ double x; printf("输入0-1之间的一个小数:"); scanf("%lf",&x); printf("0."); x*=2; while(x!=1) { if(x>=1) { x-=1; printf("1"); x*=2; } else { printf("0"); x*=2; } } printf("1"); }...原创 2021-02-08 15:24:02 · 226 阅读 · 0 评论 -
将整数的奇偶位互换
#include<stdio.h>main(){ int n,m,x,y; printf("输入一个整数:"); scanf("%d",&n); x=n&0X55555555; y=n&0Xaaaaaaaa; m=(x<<1)^(y>>1); printf("奇偶交换后的数:%d",m);}原创 2021-02-08 14:39:23 · 125 阅读 · 0 评论 -
判断一个整数是不是2的整数次方
#include<stdio.h>main(){ int x; printf("输入一个整数:"); scanf("%d",&x); if(((x-1)&x)==0) printf("是2的整数次方"); else printf("不是2的整数次方");}原创 2021-02-08 14:01:11 · 133 阅读 · 0 评论 -
二进制中1的个数
#include<stdio.h>main(){ int x,count=0; printf("输入一个数:"); scanf("%d",&x); while(x!=0) { x=(x-1)&x; count++; } printf("%d",count);}原创 2021-02-06 14:12:04 · 74 阅读 · 0 评论 -
找出落单的数
#include<stdio.h>main(){ int a[9]={1,1,5,5,3,3,6,6,9}; int s=0,i; for(i=0;i<9;i++) { s=s^a[i]; } printf("%d",s);}原创 2021-02-06 13:50:22 · 410 阅读 · 0 评论 -
找出数组中唯一成对的数(开辅助空间)
#include<stdio.h>#include<time.h>#include<stdlib.h>main(){ int a[1001]; int i; for(i=0;i<1000;i++) { a[i]=i+1; } srand(time(NULL)); a[1000]=rand()%1000+1; int b[1002]={0}; for(i=0;i<1001;i++) { b[a[i]]++; } for(i原创 2021-02-06 13:17:03 · 99 阅读 · 0 评论 -
找出数组中唯一成对的数(位运算法)
#include<stdio.h>#include<time.h>#include<stdlib.h>main(){int a[1001];int i;for(i=0;i<1000;i++){a[i]=i+1;}srand(time(NULL));a[1000]=rand()%1000+1;int s=0;for(i=1;i<=1000;i++){s=s^i;}for(i=0;i<1000;i++){s=s^a[i原创 2021-02-06 13:07:45 · 172 阅读 · 0 评论