- 博客(13)
- 收藏
- 关注
原创 C语言期末考试?轻而易举!C语言编程题库献给大家
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。代码实现:打印输出100—1000以内的水仙花数,每个数分解出个位,十位,百位。输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。例如:53 + 33 = 153,则153是一个水仙花数。水仙花数:它的每个位上的数字的n次幂之和等于它本身。用递归的方法实现n的k次幂。输入:3,3,输出 27。输入:abc,输出 3。
2024-07-17 15:02:40 721 1
原创 链表倒置-创建逆序链表
创建逆序链表有两种方法,一种是创建逆序链表,一种是用栈记录链表的值,然后将栈的值输出。创建逆序链表创建逆序链表是在一个链表的基础上,头插法创建新链表,这就是创建的新链表。来看看代码实现link* printreverse(link* L){ link* p, * q; p = L->next; L->next = NULL; while (p) { q = p; p = p->next; q->next = L->next; L->ne
2020-11-14 21:02:50 337
原创 c语言头插法尾插法创建链表
头插法尾插法创建链表头插法尾插法创建链表一直是大家初学算法时搞不明白的事情,现在我将其总结了一下,发个博客记录一下尾插法尾插法就是定义一个头结点之后,挨个往后创建链表。最关键的两步就是head->next=a;head=a;这两步搞懂了就搞懂尾插法了鄙人不才画了两幅图,大家根据这个图的原理一步步推自己再画一下就能搞懂了头插法头插法是定义了头结点之后,一直在头结点之后并且在创建的结点之前插入结点。最关键的两步就是a->next=head->next;head-&g
2020-11-13 23:55:02 1147
原创 c语言编程题-输出质因子
题目题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。代码#include <stdio.h>void function(i
2020-11-13 14:56:01 1899
原创 c语言编程题-输出素数
题目题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。代码#include <stdio.h>void judge(int n){ int i = 2; int count = 0; for (i; i < n; i++) { int d = n % i; if (d != 0) {//如果取余不为0,那么count+
2020-11-13 14:15:18 3971
原创 静态库和动态库的创建和使用
静态库:静态库是在程序执行之前就编译到目标程序去了;优点:运行快缺点:占用空间大静态库的创建:生成xx.a文件1.gcc cal.c -c (函数文件)生成xxx.o文件2.ar rcs libcalcul.a(需要生成的.a文件)cal.o//一般用lib开头,便于砍头去尾3.gcc calculate.c(主函数文件) -lcalcul -L./ -o runtest4. ./runtest动态库:在程序执行是临时去调用优点:小缺点:慢动态库的创建使用:生成xx.so文件1.g
2020-11-11 18:45:46 104
转载 atoi函数——将字符串转为整形
atoi()函数 atoi():int atoi(const char *str ); 功能:把字符串转换成整型数。 str:要进行转换的字符串 返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 .
2020-11-01 15:50:09 798
原创 进程间的通信——消息队列
消息队列的实现方式消息队列等于是创建一个队列,进程两端可以往里放数据,也可以从其中提出数据,识别方式是通过keyid来识别队列,队列间消息的收放通过massage type识别。api1 #include <sys/msg.h>22 // 创建或打开消息队列:成功返回队列ID,失败返回-1 int msgget(key_t key, int flag);3 // 添加消息:成功返回0,失败返回-1 int msgsnd(int msqid, const void *ptr, siz
2020-10-29 23:08:28 176
原创 管道初战-利用父子进程实现管道
利用父子进程实现管道管道实质是一方发送,一方接收利用fork父子进程,将父进程视为管道输入端,子进程视为管道接收端利用fork返回值的三个状态;当pid<0时,创建进程失败;当pid>0时,进入父进程;当pid=0时,进入子进程;当进入父进程时,关闭读,令fd[0];进入写fd[1];利用write函数向缓冲区写入"from father pid";然后在子进程,关闭写,令fd[1];进入读fd[0];利用read函数读出缓冲区的buf;然后打印出来运行结果:管道的输出
2020-10-26 00:00:23 342
原创 fork和exec,system和exec
fork和exec的结合使用fork函数是分父子进程执行代码,而exec函数是在函数中执行其他指令调用fork和exec来模拟用户输入,当用户输入某一key值时,中断当前指令去用exec指令执行其他指令当用户输入非1时,显示wait,do nothing,模拟系统待机等待用户的输入,当用户输入1时,调用execl执行目录下的change指令。system,exec族函数的应用system是用shell来调用程序=fork+exec+waitpid,而exec是直接让你的程序代替用来的程序运行。
2020-10-22 22:00:43 390
原创 进程中fork和vfork的区别
fork和vfork都是调用函数显示进程id,但是fork是父子进程同时顺序进行,不会中断影响,而vfork是先执行子进程,当子进程结束之后才会执行父进程vfork函数执行这个vfork函数中,利用for循环将子进程执行三次,然后中断子进程,转到父进程,同时打印循环数。运行结果:fork函数执行fork函数中父子进程顺序进行运行结果:...
2020-10-20 23:51:47 466
原创 获取进程号,判断父子进程
学习内容:getpid 和 fork获取进程id并判断父子进程获取进程id的两种方式:例如:1、 getpid()2、 fork()具体区别调用大佬的博文,写的很详细:https://blog.csdn.net/qq_20916555/article/details/51166103?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160311207919724835820964%2522%252C%2522scm%2522%25
2020-10-19 21:05:05 936
原创 c库实现读写操作
标准c库实现读写操作操作步骤fopen打开文件fwrite将目标内容写到缓冲区fread将缓冲区的内容读到目标文件//FILE *fopen(const char *path, const char *mode)FILE *fd;char *str="woshi zhen nmd nb";fd=fopen("./wu.txt","w+")//第一个是读入的路径,第二是fopen的操作权限//size_t fwrite(const void *ptr, size_t size, siz
2020-10-02 14:57:11 143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人