
c语言学习
努力奋斗的小青年
这个作者很懒,什么都没留下…
展开
-
进程调度之优先级算法分析(C++实现)
1. 优先权调度算法 为了照顾紧迫型进程获得优先处理,引入了优先权调度算法。它从就绪队列中选择一个优先权最高的进程,让其获得处理器并执行。这时,又进一步把该算法分为两种方式:1)非抢占式优先权调度算法 在这种方式下,系统一旦把处理器分配给就绪队列中优先权最高的进程后,该进程就占有处理器一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。系统这时才能将处理器分配给另一个优先权高的进程。这种方式实际上是每次将处理器分配给当前就绪队列中优先权最高的进程。它常用于批处理系统中,也可用于某些对时间要求不原创 2020-10-28 22:22:42 · 8192 阅读 · 6 评论 -
建立一个NXN的矩阵,矩阵元素构成规律:最外层元素全为1,从外向内第二层为2,依次类推(C语言实现)
#include <stdio.h>#define N 5int main(){ int a[N][N],i,j,k,m; if(N%2==0) m=N/2; else m=N/2+1; for(i=0;i<m;i++) { for(j=i;j<N-i;j++) a[i][j]=a[N-i-1][j]=i+1; for(k=i+1;k<N-.原创 2020-07-07 11:43:20 · 4059 阅读 · 0 评论 -
直接插入排序算法(C语言实现)
#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){ int a[10],i,j,t; srand((unsigned int)time(NULL)); for(i=0;i<10;i++) a[i]=rand()%100; ...原创 2020-04-20 17:57:03 · 8259 阅读 · 0 评论 -
C数据输出printf("%+-6d%+-6d",a,b);
若有定义:int a=1234, b=-5678;用语句 printf("%+-6d%+-6d",a,b); 输出,以下正确的输出结果是( C)+-1234+-5678(最前面和后面均无空格)+1234 -5678(最前面有一个空格,中间有一个空格)+1234 -5678 (中间有一个空格,最后有一个空格)1234 -5678 (中间有两个空格,最后有一个空格)解析:...原创 2020-03-19 10:07:43 · 5485 阅读 · 3 评论 -
C语言实现中英文混合字符串截取
#include <stdio.h>#include <stdlib.h>#include <string.h>void fun(int m){ char a[100]="china中国verygood"; int len=strlen(a); int i; int n=0,j=0; int num[10...原创 2020-01-19 14:33:43 · 2205 阅读 · 2 评论 -
海滩上有一堆桃子,五只猴子来分。(C语言实现)
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?分析:设海滩上原来有x个桃子,则第一只猴子分完桃子之后剩下的桃子x1=x-1-(x-1)/5=(4*(x-1))/5...原创 2020-01-06 19:01:30 · 10956 阅读 · 3 评论 -
一个正整数加上100之后是完全平方数,再加上100之后还是完全平方数, 编程求出这样的数并输出(在10000以内C语言实现)
#include <stdio.h>#include <math.h>int main(){ int i,j,k; for(i=1;i<10000;i++) { j=sqrt(i+100); k=sqrt(i+268); if(j*j==i+100 && k*k==i+...原创 2019-12-18 18:27:03 · 4307 阅读 · 1 评论 -
快速排序 (C语言实现)
#include <stdio.h>#define N 10#include <time.h>void QuickSort(int a[],int left,int right){ if(left < right) { int low =left; int high = right; in...原创 2019-12-15 20:38:08 · 230 阅读 · 0 评论 -
自定义字符串复制函数
#include <stdio.h>void mystrcpy(char *str1,char *str2){ int i=0; for(i=0;str2[i];i++) { str1[i]=str2[i]; } str1[i]='\0';}int main(){ char a[100],b[20]; ...原创 2019-12-03 10:42:30 · 2020 阅读 · 0 评论 -
自定义字符串连接函数(mystrcat(char *str1,char *str2))
#include <stdio.h>void mystrcat(char *str1,char *str2){ char *t; while(*str1!='\0') { str1++; } t=str1; while(*str2!='\0') { *t++=*str2++; }...原创 2019-12-03 10:21:06 · 9702 阅读 · 3 评论 -
自定义函数比较两个字符串的大小
#include <stdio.h>int mystrcmp(char *str1,char *str2){ /*c=0;相等 c>0即第一个字符串大于第二个字符串 c<0即第一个字符串小于第二个字符串 */ int i,c; for(i=0;str1[i]||str2[i];i++) { if(...原创 2019-12-03 10:02:29 · 8870 阅读 · 1 评论 -
求子串在主串中的位置
#include <stdio.h>int main(){ char s[20],a[10],i,k,j=0; gets(s); gets(a); for(i=0;s[i];i++) { k=i; for(;s[k];k++)//从i位置开始,遍历主串 { if(s[k]!=a[j++...原创 2019-12-03 09:35:54 · 3775 阅读 · 0 评论 -
将一个整数逆序输出
#include <stdio.h>int main(){ int num; scanf("%d",&num); while(num)//非零值即为真值,即num不为0是一直循环 { printf("%d",num%10); num/=10; } return 0;}...原创 2019-11-25 18:27:37 · 10331 阅读 · 3 评论 -
//求a+aa+aa+...+aaa..a n项和
第一种方法原理:在前一项的基础上扩大十倍加a 即 可以表示为temp=temp*10+a; 注:temp必须赋初值为0#include <stdio.h>int main(){ int a,n,i,sum=0,temp=0; scanf("%d%d",&a,&n); for(i=1;i<=n;i++) { ...原创 2019-11-25 18:21:49 · 1657 阅读 · 0 评论 -
求一个数是几位数
#include <stdio.h>int main(){ int num,count=0; scanf("%d",&num); while(num!=0) { num/=10; count++; } printf("%d",count);}原创 2019-11-25 18:05:36 · 1985 阅读 · 0 评论 -
求出所有的水仙花数
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)#include <stdio.h>int main(){ int i,a,b,c; for(i=100;i<1000;i++) { a=i/100;//百位 b=i%100/10;//十位 也可以写成b...原创 2019-11-25 17:32:03 · 20102 阅读 · 0 评论 -
删除指定下标的元素
#include <stdio.h>#define N 10int main(){ int a[N],i,k,j=0; for(i=0;i<N;i++) scanf("%d",&a[i]); scanf("%d",&k);//输入要删除元素的下标 if(k>=0&&k<N) ...原创 2019-11-25 17:20:00 · 2859 阅读 · 0 评论 -
删除指定的元素
#include <stdio.h>#define N 10int main(){ int a[N],i,num,temp; for(i=0;i<N;i++) scanf("%d",&a[i]); scanf("%d",&num); for(i=0;i<N;i++) if(a[i]=...原创 2019-11-25 17:10:00 · 200 阅读 · 0 评论 -
顺序查找法
#include <stdio.h>#define N 5int main(){ int a[N],i,num; for(i=0;i<N;i++) scanf("%d",&a[i]); scanf("%d",&num); for(i=0;i<N;i++) { if(a[i]=...原创 2019-11-25 16:46:48 · 211 阅读 · 0 评论 -
折半查找法(C语言实现)递归
二分查找(又称为折半查找)是在有序序列中查找比较多的查找算法,基本思路:设有一个从小到大的序列,取中间的元素m进行比较,如果等于需要查找的元素x则返回元素m的下标,若x大于m则再从右边的区间查找,若x小于m则再从左边的区间查找,这样每次减少一半的查找范围。时间复杂度为O(lgn),查找速度相对顺序查找要快很多,但是查找的数据序列必须是有序序列(即数据是从小到大或从大到小排序的).第一种方法...原创 2019-11-25 16:31:10 · 10978 阅读 · 1 评论 -
矩阵的转置
#include <stdio.h>#define N 3int main(){ int a[N][N],i,j,temp; printf("原始矩阵为:\n"); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(...原创 2019-11-23 21:27:52 · 723 阅读 · 0 评论 -
方阵副对角线元素之和
#include <stdio.h>#define N 3int main(){ int a[N][N],i,j,sum=0; for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0;i<N;i++) ...原创 2019-11-23 21:05:23 · 1793 阅读 · 1 评论 -
方阵主对角线元素之和
第一种方式#include <stdio.h>#define N 3int main(){ int a[N][N],i,j,sum=0; for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0,j=0;i<N&a...原创 2019-11-23 20:58:55 · 5315 阅读 · 0 评论 -
二维数组的最大值和最小值
#include <stdio.h>#define N 3#define M 4int main(){ int a[N][M],i,j,max,min; for(i=0;i<N;i++) for(j=0;j<M;j++) scanf("%d",&a[i][j]); max=a[0][0];...原创 2019-11-23 20:45:41 · 7990 阅读 · 3 评论 -
矩阵的周边元素之和
#include <stdio.h>#define M 3#define N 4/*1 2 3 45 6 7 89 10 11 12*/int main(){ int a[M][N],i,j,sum=0; for(i=0;i<M;i++) { for(j=0;j<N;j++) { ...原创 2019-11-23 20:10:52 · 6251 阅读 · 0 评论 -
杨辉三角
#include <stdio.h>#define N 10int main(){ int a[N][N],i,j; for(i=0;i<N;i++) a[i][0]=1; for(i=1;i<N;i++) a[i][i]=1; for(i=2;i<N;i++) for(j=1;j...原创 2019-11-23 19:48:04 · 269 阅读 · 0 评论 -
鞍点c语言实现
//鞍点为矩阵元素所在行的最大值,以及所在列的最小值。#include <stdio.h>#define N 5int main(){ int a[N][N],i,k,j,t,max; for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); for(i=0;i...原创 2019-11-23 19:24:21 · 1603 阅读 · 1 评论 -
求输入字符串的单词的个数
第一种方式#include <stdio.h>#define N 100main(){ char s[N]; int i,tag=0,num=0;//0统计单词个数,1不统计单词个数 gets(s); for(i=0;s[i]!='\0';i++) { if(s[i]==' ') tag=0; if(s[...原创 2019-11-23 19:10:14 · 1060 阅读 · 0 评论 -
输出前10项的斐波那契数列
第一种方式#include <stdio.h>#include <math.h>int main(){ int a=1,b=1,c,i; for(i=0;i<10;i++) { if(i==0||i==1) c=1; else { c...原创 2019-11-16 21:32:42 · 13931 阅读 · 0 评论 -
用公式π/4=1-1/3+1/5-1/7...求π的近似值,直到发现某一项的绝对值小于10^-6(1e-6)为止(该项不累加)
#include <stdio.h>#include <math.h>int main(){ int tag=1,n=1;//tag表示项数的正负号 double sum=0.0,t=1.0; while(fabs(t)>1e-6)//fabs(t)求t的绝对值 { sum=sum+t; tag...原创 2019-11-16 21:09:53 · 30367 阅读 · 2 评论 -
现有1角,2角,5角,要组成1元有多少种方法?
#include <stdio.h>int main(){ int i,j,k,count=0; for(i=0;i<=10;i++) for(j=0;j<=5;j++) for(k=0;k<=2;k++) if(1*i+2*j+5*k==10)//此处不能写成if(0.1...原创 2019-11-16 20:52:36 · 3751 阅读 · 0 评论 -
将5个数逆序存放后输出
#include <stdio.h>#define N 5int main(){ int a[N],i,t; printf("请输入5个数:\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N/2;i++) { t=a[i];...原创 2019-11-16 20:42:22 · 4090 阅读 · 0 评论 -
选择排序法
#include <stdio.h>#define N 10#include <time.h>int main(){ int i,j,a[N],t,min; srand((unsigned)time(NULL));//置随机数种子 for(i=0;i<N;i++) { a[i]=rand()%100;//...原创 2019-11-16 20:29:53 · 159 阅读 · 0 评论 -
冒泡排序法
#include <stdio.h>#define N 10#include <time.h>int main(){ int i,j,a[N],t; srand((unsigned)time(NULL));//置随机数种子 for(i=0;i<N;i++) { a[i]=rand()%100;//0-99...原创 2019-11-16 20:17:19 · 207 阅读 · 0 评论 -
计算1到10之间奇数之和及偶数之和
#include <stdio.h>int main(){ int a,b,c,i; a=c=0; for(i=0;i<=10;i+=2) { a+=i; b=i+1; c+=b; } printf("偶数之和=%d\n",a); printf("奇数之和=%d\n",...原创 2019-11-15 11:43:07 · 20566 阅读 · 1 评论 -
根据所给的年、月、日、计算出该日是这一年的第几天
#include <stdio.h>int isLeap(int year){ if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0;}int main(){ int year,month,day,days=0; scan...原创 2019-11-12 19:46:22 · 767 阅读 · 0 评论 -
编程序找出1000之内的所有完数,并输出其因子
#include <stdio.h>int main(){ for(int i=2;i<=1000;i++) { int sum=0; for(int j=1;j<i;j++) { if(i%j==0) sum+=j; } if(sum==i) ...原创 2019-11-12 18:36:01 · 15163 阅读 · 4 评论 -
判断一个数是否是完数
#include <stdio.h>int main(){ int n,sum=0; printf("请输入一个数:\n"); scanf("%d",&n); for(int i=1;i<n;i++) { if(n%i==0) sum+=i; } if(sum==n)...原创 2019-11-12 18:23:28 · 8415 阅读 · 1 评论 -
求一个分数序列:2/1,3/2,5/3,8/5,13/8,......求出这个数列的前20项之和
#include <stdio.h>int main(){ int x=2,y=1,t; double sum=0; for(int i=0;i<20;i++) { sum+=(double)x/y; t=x; x=x+y; y=t; } printf("%.2...原创 2019-11-12 18:03:47 · 1353 阅读 · 0 评论 -
将大于整数m且紧靠m的k个质数输出。例如:若m为17,k为5,则应输出19、23、29、31、37
#include <stdio.h>int isPrime(int n){ int flag=1;//1为质数,0不是质数 for(int i=2;i<n;i++) { if(n%i==0) { flag=0; break; } } re...原创 2019-11-12 17:37:56 · 6648 阅读 · 0 评论