![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言
大一‘s work
我渊啊我渊啊
这个作者很懒,什么都没留下…
展开
-
c语言 qsort函数
qsort原创 2023-01-12 20:09:05 · 70 阅读 · 0 评论 -
c语言 汉诺塔
递归原创 2023-01-11 14:06:32 · 80 阅读 · 0 评论 -
c语言 指针函数与函数指针
指针原创 2023-01-12 19:34:54 · 81 阅读 · 0 评论 -
迷宫问题—dfs解决
#include<stdio.h>int p,q,min=9999;int startx=1,starty=1;int a[100][100] ;//1表示空地 2表示障碍物 int v[100][100] ;//0表示未访问 1表示访问 void dfs(int x,int y,int step){ if(x==p&&y==q) { if(step<min) min=step; return ; } //中点情况 //顺时针试探原创 2021-07-30 22:32:17 · 83 阅读 · 0 评论 -
全排列问题
#include <stdio.h>void swap(int a[], int x, int y){ int temp; temp = a[x]; a[x] = a[y]; a[y] = temp;}void printa(int a[], int x){ int i; for (i = 0; i < x; i++) printf("%d", a[i]); printf("\n");}void perm(int a[], int p, int q) /原创 2021-07-30 14:37:41 · 50 阅读 · 0 评论 -
大数据阶乘问题——数组解决
在做大数据阶乘的时候,所得结果甚至会超出long long 的范围,所以对于结果的处理可以用数组存放的办法。下面的表格说明了用数组来做6!的方法首先定义一个足够大的数组用来存放位数a[10001],并a[1]位置1(重要)数据的每一位都做相应的乘法运算对a[i]内的数据进行判断,因为数组内存放的都是个位数,若超过,则要进位根据数据结果的位数,用for循环输出最后结果核心代码——进位的操作 if(a[j]/10>=1) { a[j+1]=a[j+1]+a[j]/10;原创 2021-08-20 11:26:46 · 331 阅读 · 0 评论 -
链表
链表动态化创建一个链表:动态内存申请+模块化设计1创建链表(创建一个表头表示整个链表)#include<stdio.h>#include <stdlib.h> struct Node{ int data; //数据域 struct Node* next; //指针域 };struct Node* creatList(){ struct Node*headNode=(struct Node*)malloc( sizeof (struct N) );原创 2021-03-05 18:10:11 · 60 阅读 · 0 评论 -
数组的操作
1.函数fun()功能是计算x所指数组中N个数的平均值(规定所有数都是正数),平均值通过形参返回给主函数,小于平均值并且最接近平均值的数作为函数值返回#include <stdlib.h>#include <stdio.h>#define N 10double fun(double x[],double *av){ int i,j; double d,s; s=0; for(i=0; i<N; i++) s = s +x[i];/原创 2021-03-06 17:43:28 · 826 阅读 · 0 评论 -
结构体
1.已知学生的记录由学号和学习成绩构成,N名学生的数据已经存入a结构体数组中,请编写fun函数(),该函数功能是找出成绩最低的学生记录,通过形参返回主函数#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define N 10typedef struct ss{ char num[10]; int s;} STU;void fun(STU a[]原创 2021-03-06 17:15:26 · 234 阅读 · 0 评论 -
字符串的操作
1.函数fun的功能是统计一行字符串中单词的个数,并将其作为函数值返回int fun(char *s){ int i,time=0; for(i=0;s[i]!='\0';i++) { if(s[i]!=' '&&(s[i+1]==' '||s[i+1]=='\0') ) //如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束 time++; } return time;}...原创 2021-03-06 16:40:15 · 442 阅读 · 0 评论 -
文件操作
用fun函数重写最后一个数据#include <stdio.h>#define N 5typedef struct student { long sno; char name[10]; float score[3];} STU;void fun(char *filename, STU n){ FILE *fp;/**********found**********/ fp = fopen(__filename__, "rb+");/**原创 2021-03-05 16:20:25 · 110 阅读 · 0 评论 -
递归——分治法(输出十字架)
思路:以图形中点为中心点,分成4个area每个area里面进行fun函数操作,找到中心点,赋+#include<stdio.h>#include<string.h> int array[65][65];int n;void fun(int ksh,int ksl,int jsh,int jsl){ if(ksh>jsh||ksl>jsl) return; int midh=(ksh+jsh)/2; int midl=(ksl+jsl)/2; .原创 2021-02-28 21:23:11 · 744 阅读 · 0 评论 -
递归——十进制转二进制
#include<stdio.h>int main (){ int n; scanf("%d",&n); int fun (int x); fun(n); return 0; } int fun (int x) { if(x>0) { fun(x/2); printf("%d",x%2); } }原创 2021-02-23 21:25:39 · 174 阅读 · 0 评论 -
递归——最大公约数
#include<stdio.h>int main(){ int m,n; int fun (int x,int y); scanf("%d %d",&m,&n); printf("%d",fun(m,n)); return 0;}int fun (int x,int y){ int i,temp; if(x<y) { temp=x; x=y; y=temp; } if(y) { i=x%y; fun(y,i);原创 2021-02-23 20:13:10 · 68 阅读 · 0 评论 -
递归——汉诺塔
#include<stdio.h>void hanno(int n,char a,char b,char c) { if(n>0) { hanno(n-1,a,c,b); printf("%c-->%c\n",a,c); hanno(n-1,b,a,c); } }int main(){ int n; scanf("%d",&n); hanno(n,'A','B','C'); return 0; }原创 2021-02-27 10:09:01 · 56 阅读 · 0 评论 -
递归——分治法(数字加密)
思路:先用fun函数将一个单词的中点找到,先把一个单词分成前后两个部分,再在前后两个部分里面分别用fun函数找到字母,最后依次输出函数fun需要确定需要操作对象的开始位置,结束位置#include<iostream>#include<string.h>using namespace std;string array;void fun(int ks,int js){ int mid; if(ks<=js) { mid=(ks+js)/2; cout.原创 2021-02-28 21:56:29 · 108 阅读 · 0 评论 -
迷宫问题
解题步骤1:迷宫的读入过程void dr(int h,int l) //读入迷宫的行列memset(a,-1,sizeof(a));//清空数组for(int i=1;i<=h;i++) for(int j=1;j<l;j++) { cin>>ch; if(ch=='w') a[i][j]=0; else a[i][j]=-1; } //如果输入的是w,将数组对应的值赋-1 //否则赋0解题步骤2:迷宫问题的搜索规则.原创 2021-02-26 15:45:26 · 96 阅读 · 0 评论 -
递归——阶乘
#include<stdio.h>int main(){ int fun (int x); int n; scanf("%d",&n); printf("%d",fun(n)); return 0; } int fun (int x) { if(x==0) return 1; return x*fun(x-1); }原创 2021-02-23 20:11:01 · 54 阅读 · 0 评论 -
递归——累加
#include<stdio.h>int p(int n){ if(n>1) return p(n-1)+n; else return 1;}int main(){ int n; scanf("%d",&n); printf("%d",p(n)); return 0;}原创 2021-02-27 17:47:47 · 107 阅读 · 0 评论 -
递归
递归演示#include<stdio.h>void up_down(int n);int main(){ up_down(1); return 0; } void up_down(int n) { printf("%d location %u\n",n,&n); if(n<4) up_down(n+1); printf("RETURN %d location %u\n",n,&n); }每一级递归变量都属于本级递归私有,可以原创 2021-02-27 09:51:08 · 88 阅读 · 0 评论 -
四舍五入问题
要求:保留两位小数,并对第三位进行四舍五入例:输入:1234.567 输出:1234.570000分析:保留两位小数关键在于看第三位小数是否进位,>5则百分位+1,<5则百分位-1。所以可以将输入的数1000,再+5。如1234.5671000+5=1234572,这样就把千分位>5需要进位这一过程体现出来了float fun(float h){ int temp=(int)(h*1000+5)/10; return (float)temp/100.0;}*注:避免误区原创 2021-03-01 19:48:37 · 413 阅读 · 0 评论 -
4046 选班委(计数排序)
#include<stdio.h>int main(){ int m,n,i,x,max,k; scanf("%d %d",&n,&m); int a[n+1]; for(i=0;i<=n;i++) a[i]=0; for(i=1;i<=m;i++) { scanf("%d",&x); a[x]++; } k=1; max=1; //遍历数组,找出最大项 for(i=1;i<=n;i++) {原创 2021-02-23 20:19:36 · 145 阅读 · 0 评论 -
4045乐乐随机数
#include<stdio.h>int main(){ int n,i,x,time; time=0; int a[1000]; for(i=0;i<1000;i++) a[i]=0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&x); a[x]++; } for(i=0;i<1000;i++) { if(a[i]) time++; } printf("%d\原创 2021-02-20 23:21:44 · 118 阅读 · 0 评论 -
4025约分
#include<stdio.h>int main(){ int a, b, c, ys; int fun (int x,int y); scanf("%d %d",&a,&b); if(a%b==0) { printf("%d",a/b); return 0; } if(a>=b) { c=a/b; ys=fun(a-c*b,b); printf("%d+%d/%d",c,(a-c*b)/ys,b/ys); } i原创 2021-02-20 23:20:45 · 98 阅读 · 0 评论 -
最大公约数——辗转相除法
int fun (int x,int y) { int i,temp; if(x<y) { temp=x; x=y; y=temp; //保证在里面的x>y } i=x%y; while(i) { x=y; y=i; i=x/y; } return y; // 此时返回值为x,y最大公约数 }辗转相除法x=6 y=4,所得 2 为最大公约数...原创 2021-02-20 23:19:08 · 57 阅读 · 0 评论 -
回文数(4022)
int fun (int x){ int time,i,sum,bit,temp; time=0; bit=0; sum=0; temp=x; //方便让后面x回归原来的值 while(x) { x=x/10; bit++; } //这个循环为了知道这个数是几位数 x=temp;//x重新恢复原来的值 while(x) { i=x%10; x=x/10; time++; sum=sum+i*pow(10,bit-time); } if(sum==原创 2021-02-18 15:48:23 · 56 阅读 · 0 评论 -
4022回文素数
#include<stdio.h>int main(){int fun1(int x);int fun2(int x); //定义fun1 判断回文数,fun2 判断素数int i,time, temp;time=0;//time表示回文素数的个数,初始化time=0while(scanf("%d",&temp){if(temp==-1) break;else if(fun1(temp)==1&&fun2(temp)==1) time++;}原创 2021-02-18 15:42:18 · 58 阅读 · 0 评论 -
4039校门外的树
#include<stdio.h>int main(){ int i,l,m,s,t,count,j; scanf("%d %d",&l,&m); int a[l+1]; //共有l+1棵树 for(i=0;i<=1;i++) a[i]=1; //初始化数组,使整个数组一开始里面的值全部都是1,然后在输入里面给的范围区间里面的值赋值为0 for(i=1;i<=m;i++) { scanf("%d %d",&s,&t);原创 2021-02-18 15:25:34 · 33 阅读 · 0 评论 -
4050体重统计
#include<bits/stc++.h>using namespace std;int main(){ int n,j,i,temp,x,s,output,max; s=1; max=0; cin>>n; int a[n]; for(i=2;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); //快速排序 a[n+1]=0; //为了让后面的a[n]也能参与比较 for(i=1;i<=n原创 2021-02-18 15:11:11 · 94 阅读 · 0 评论