C语言学习—代码之路
本专栏记录C语言学习过程中的典型代码与问题,方便自己复习与共互联网的广大朋友们查看,希望有所成效!!!
lihongli000
疯
展开
-
leetcode138.复制带随即指针的链表
【代码】leetcode138.复制带随即指针的链表。原创 2023-07-19 11:59:17 · 70 阅读 · 0 评论 -
142. 环形链表 II
2、一个从头节点出发,一个指针从交点出发,二者必定相遇且相遇点即为入圆点。1、设置快慢二倍速指针找到交点。原创 2023-07-10 20:10:00 · 57 阅读 · 0 评论 -
141.环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/linked-list-cycle。原创 2023-06-08 11:07:40 · 82 阅读 · 0 评论 -
160.相交链表
【代码】160.相交链表。原创 2023-06-07 18:23:46 · 76 阅读 · 0 评论 -
牛客:链表的回文结构
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。思路:将链表中间之后的部分逆置,然后比较前后两段是否相同。原创 2023-06-07 15:43:48 · 84 阅读 · 0 评论 -
牛客:链表分割
现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。原创 2023-06-06 15:47:14 · 63 阅读 · 0 评论 -
21.合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2023-06-06 13:54:10 · 71 阅读 · 0 评论 -
牛客:链表中倒数最后k个结点
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。原创 2023-06-05 19:26:25 · 78 阅读 · 0 评论 -
876.链表的中间节点
给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。原创 2023-06-05 10:44:32 · 57 阅读 · 0 评论 -
5.9 完数 等于自身因子之和 6=1+2+3
//5.9 完数 等于自身因子之和 6=1+2+3#include <stdio.h>#include <math.h>int main(){ int n, i, s=0; for (n = 1; n < 1000; n++) { s = 0; for (i = 1; i < n; i++) { if (n%i == 0) s = s + i; } if (n == s) { printf("%d its fa原创 2021-12-22 23:03:27 · 768 阅读 · 0 评论 -
2014.2 输入一元二次方程的三个系数a,b,c,输出该方程的根。需要考虑b*b-4*a*c<0的情况。(20分)
//2014.2 输入一元二次方程的三个系数a,b,c,输出该方程的根。需要考虑b*b-4*a*c<0的情况。(20分)#include <stdio.h>#include <math.h>int main(){ double a, b, c, drt,x1,x2; printf("input a,b,c:\n"); scanf("%lf%lf%lf", &a, &b, &c); //注意double为lf drt = b*b -原创 2021-12-21 18:13:12 · 1222 阅读 · 0 评论 -
2014.1 利用递归算法求两个整数的最小公倍数。(20分)
//2014.1 利用递归算法求两个整数的最小公倍数。#include <stdio.h>#include <math.h>int main(){ int yueshu(int a, int b); int a, b,y,m,temp; printf("input 2 number:\n"); scanf("%d%d", &a, &b); if (a < b) { temp = a; a = b; b = temp; } y原创 2021-12-21 17:43:09 · 422 阅读 · 0 评论 -
例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。
//例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。#include <stdio.h>#define SIZE 3struct Student_type{ char name[10]; int num; int age; char addr[15];}stud[SIZE];void save(){ FILE *fp; int i; if ((fp = fopen("stu.dat", "wb")) == NULL) { printf(原创 2021-12-20 22:52:17 · 1761 阅读 · 0 评论 -
10.3 从键盘读入若干字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件存。
//从键盘读入若干字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件存。#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ FILE * fp; char str[3][10], temp[10]; int i, j, k, n = 3; printf("Enter string:\n"); for (i = 0; i < n; i++) g原创 2021-12-20 20:48:29 · 1385 阅读 · 1 评论 -
10.2 将一个磁盘中的信息复制到另一个磁盘文件中。
//10.2 将一个磁盘中的信息复制到另一个磁盘文件中。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ FILE * in, *out; char ch, infile[10], outfile[10]; printf("输入读入文件名字:\n"); scanf("%s", infile); printf("输入输出文件名字:\n"); scan原创 2021-12-20 20:23:58 · 201 阅读 · 0 评论 -
/例10.1 从键盘输入一些字符,逐个把他们送到磁盘上去,直到用户输入一个“#”为止。
1.无法判定是否正确打开文件!!2.无法输入!!!//例10.1 从键盘输入一些字符,逐个把他们送到磁盘上去,直到用户输入一个“#”为止。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ FILE * fp; char ch, filename[10]; printf("请输入所用的文件名:\n"); scanf("%s", filename);原创 2021-12-20 15:38:28 · 927 阅读 · 0 评论 -
C语言:快速排序
//快速排序#include <stdio.h>int main(){ void quick_sort(int a[], int left, int right); int key(int a[], int left, int right); int i,len,a[] = { 5, 7, 4, 6, 3, 8, 2, 9 }; len = sizeof(a)/sizeof(int); printf("数据数:%d \n", len); quick_sort(a, 0, len原创 2021-12-20 10:12:46 · 115 阅读 · 0 评论 -
银行利率计算
//银行利率计算#include <stdio.h>int main(){ float in, p, out; printf("输入本金(<100000000)与利率(<100):\n"); scanf("%f%f", &in, &p); if (in >= 100000000||in<=0 ||p<=0||p >= 100) { printf("请输入正确金额与利率:\n"); scanf("%f%f", &i原创 2021-12-19 23:02:25 · 164 阅读 · 0 评论 -
直接插入排序。由小到大排序。
//直接插入排序。由小到大排序。#include <stdio.h>#define N 10int main(){ int a[N] = {5,7,3,4,8,4,9,3,8,4}; int temp,i,j; for (i = 1; i < N; i++) { if (a[i] < a[i - 1]) { temp = a[i]; a[i] = a[i - 1]; for (j = i - 1; temp<a[j]; j--)原创 2021-12-19 22:29:50 · 267 阅读 · 0 评论 -
C语言:输入4位整数,满足该数是完全平方数,该数减去1111后仍是完全平方数。
//输入4位整数,满足该数是完全平方数,该数减去1111后仍是完全平方数。#include <stdio.h>#include <math.h>int main(){ int jud(int n); int i,flag1,flag2; for (i = 1112; i <= 9999; i++) { flag1 = jud(i); flag2 = jud(i - 1111); //printf("%d %d ", flag1, flag2);原创 2021-12-19 21:53:38 · 1017 阅读 · 0 评论 -
已有a,b两个链表,
失败案例 链表创立输入零无反应,未知原因!!//已有a,b两个链表,#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct student)struct student{ long num; int score; struct student *next;};struct student lista, listb;int n, sum = 0;int main(){ struct s原创 2021-12-19 21:53:00 · 246 阅读 · 0 评论 -
9.9+课后9.9 写一函数建立一个有3名学生数据的单向动态链表。
输出错乱问题未解决!!!!!//9.9 写一函数建立一个有3名学生数据的单向动态链表。#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct Student)struct Student{ long num; float score; struct Student *next;};int n;struct Student * creat(void) //定义建立链表函数。返回一个指向链表原创 2021-12-19 11:15:38 · 708 阅读 · 0 评论 -
C语言:9.6 3个人围成一圈, 从第1个人开始顺序报号1, 2, 3。凡报到3者退出圈子。 找出最后留在圈子中的人原来的序号。要求用链表实现。
/* 9.6 3个人围成一圈, 从第1个人开始顺序报号1, 2, 3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。***解题思路:创建一个环形链表,给链表中的每一个节点从1~13编号,然后开始淘汰过程,对于淘汰的节点,序号置为0,淘汰完成之后,找到序号不为0的即为最后留下的。*/#include <stdio.h>#define NUM 13typedef struct people{ int num; struct people *next;原创 2021-12-19 11:13:58 · 663 阅读 · 0 评论 -
C语言:9.5 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均分成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
//9.5 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,//要求输出3门课程总平均分成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。#include <stdio.h>#define N 4struct Stu{ long num; char name[20]; float score[3]; float aver;}stu[N];int main(){ void input(struct Stu stu原创 2021-12-18 00:45:27 · 4349 阅读 · 1 评论 -
C语言:9.4 编写输入input函数与输出print函数,输入输出5个学生的数据记录, //包括num,name,score[3]。
//9.4 编写输入input函数与输出print函数,输入输出5个学生的数据记录,//包括num,name,score[3]。#include <stdio.h>#define N 5struct Stu{ long num; char name[20]; float score[3];}stu[N];int main(){ void input(struct Stu stu[]); void print(struct Stu stu[]); //input(st原创 2021-12-18 00:43:51 · 1457 阅读 · 0 评论 -
C语言:9.2 写一函数days实现9.1中输入年月日计算第几天。(未使用结构体)
//9.2 写一函数days实现9.1#include <stdio.h>int main(){ int days(int year, int month, int day); int y, m, d,th; printf("input year month day:\n"); scanf("%d%d%d", &y, &m, &d); th=days(y, m, d); printf("%d\n", th);}int days(int year, i原创 2021-12-18 00:04:27 · 325 阅读 · 0 评论 -
C语言 9.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
方法一 switch 语句。//9.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。#include <stdio.h>struct{ int year; int month; int day;}date;int main(){ int days; printf("input year,month,day:\n"); scanf("%d%d%d", &date.year, &date.month, &dat.原创 2021-12-17 23:21:27 · 1350 阅读 · 1 评论 -
C语言:用指针处理链表代码示例
9.8 建立一个简单的链表,由三个学生数据的节点组成,要求输出个节点中的数据。//9.8 建立一个简单的链表,由三个学生数据的节点组成,要求输出个节点中的数据。#include <stdio.h>struct Stu{ int num; float score; struct Stu *next;};int main(){ struct Stu a, b, c, *head, *p; a.num = 1111; a.score = 45; b.num = 2222;原创 2021-12-17 22:14:21 · 1313 阅读 · 0 评论 -
结构体定义等示例。
结构体变量初始化。注意字母输入时用单引号’’ 如下M#include <stdio.h>int main(){ struct Student { long int num; char name[20]; char sex; //注意字母输入时用单引号'' 如下M。 char addr[20]; }a = {100010,"Li Ming",'M',"Beijing 123 road"}; printf(" NO:%d\n Name:%s\n sex:%c\原创 2021-12-17 20:03:52 · 328 阅读 · 0 评论 -
8.21 用指向指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。 n个整数在主函数中输入,最后在主函数中输出
//8.21 用指向指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。//n个整数在主函数中输入,最后在主函数中输出。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ void sort(int **p, int n); int n, i, **p, *pstr[20], date[20]; printf("input n:\n"); scanf("%d", &n); for (i原创 2021-12-17 00:26:42 · 452 阅读 · 0 评论 -
8.20 用指向指针的指针的方法对5个字符串排序并输出。
//8.20 用指向指针的指针的方法对5个字符串排序并输出。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>#define LM 20 //定义字符串最大长度。int main(){ void sort(char **p); int i; char **p, *pstr[5], str[5][LM]; //*pstr[5]为 指针数组 是数组,数组里存放5个指针(原创 2021-12-17 00:04:15 · 287 阅读 · 0 评论 -
19.(2)写一函数free将前面用new函数占用的空间释放。free(p)表示将p(地址)指向的单元以后的内存段释放。
//19.(2)写一函数free将前面用new函数占用的空间释放。free(p)表示将p(地址)指向的单元以后的内存段释放。#include <stdio.h>#define N 1000char newbuf[N];char *newp = newbuf;void free(char *p){ if (p >= newbuf&&p < newbuf + N) { newp = p; }}int main(){ char *p; fr原创 2021-12-16 23:30:47 · 447 阅读 · 0 评论 -
8.19 (1)编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址), //指向字符串开始的空间。new(n)表示分配n个字节的内存空间。
//8.19 (1)编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),//指向字符串开始的空间。new(n)表示分配n个字节的内存空间。#include <stdio.h>#define N 1000 //指定开辟储存区的最大容量。char newbuf[N]; //定义字符数组。char *newp = newbuf; //指针指向区域开始处。char *new(int n){ if (newp + n < newbuf原创 2021-12-16 23:22:47 · 705 阅读 · 0 评论 -
C语言输出指针变量地址(十六进制)
#include <stdio.h>#include <stdlib.h>int main(){ int a = 100; int *ap ;//定义一个int类型的指针 ap=&a;//ap是一个地址,*ap是一个值 printf("%p\n",&a);//输出的是a变量的地址 printf("%p\n",ap);//通过指针变量ap输出a变量的地址 printf("%p\n",&ap);//指针变量a转载 2021-12-16 23:21:12 · 5469 阅读 · 0 评论 -
8.18 编一程序,输入月份号,输出该月的英文名。要用指针数组处理。
//8.18 编一程序,输入月份号,输出该月的英文名。要用指针数组处理。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ char *(p[12]),* month_name[12] = { "january", "februry", "march", "april", "may", "june", "july", "august", "september", "october", "novenber", "d原创 2021-12-16 22:54:27 · 405 阅读 · 0 评论 -
8.17 写一函数,实现两字符串的比较。即自己写一个strcmp函数 //原型为 int strcmp (char *p1,char *p2) //返回两字符串第一个不同的字符的ASC码差值。
//8.17 写一函数,实现两字符串的比较。即自己写一个strcmp函数//原型为 int strcmp (char *p1,char *p2)//返回两字符串第一个不同的字符的ASC码差值。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int strcmp(char *p1, char *p2); int m; //返回值。 char str1[20], str2[20],*p1,*p2; p原创 2021-12-16 21:11:17 · 341 阅读 · 0 评论 -
8.16 输入一个字符串,内有数字和非数字字符,例如: //A123x34sfdf 33 fdf?f34 将其中连续的数字作为一个整数,依次依次存放到一数组a中。 //例如,123存放在a[0],3
//8.16 输入一个字符串,内有数字和非数字字符,例如://A123x34sfdf 33 fdf?f34 将其中连续的数字作为一个整数,依次依次存放到一数组a中。//例如,123存放在a[0],34存放在a[1]中.... 统计共有多少个整数,并输出这些数。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ return 0;}...原创 2021-12-16 20:43:14 · 267 阅读 · 0 评论 -
8.15有一个班4个学生,5门课程。 //1.求第一门课程的平均分; //2.找出有两门课程以上2不及格的学生,输出他们的学号和全部课程成绩及平均成绩; //3.找出平均成绩在90分以上或全部课程成绩
//8.15有一个班4个学生,5门课程。//1.求第一门课程的平均分;//2.找出有两门课程以上2不及格的学生,输出他们的学号和全部课程成绩及平均成绩;//3.找出平均成绩在90分以上或全部课程成绩在85分以上的学生。//分别编3个函数实现以上要求。//#include <stdio.h>int main(){ void avsco(float *, float *); return 0;}...原创 2021-12-16 20:20:19 · 478 阅读 · 0 评论 -
8.11 在主函数中输入十个等长的字符串。用另一函数对它们进行排序 //然后在主函数输出这10个已排好序的字符串。
//8.11 在主函数中输入十个等长的字符串。用另一函数对它们进行排序//然后在主函数输出这10个已排好序的字符串。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>int main(){ void sort(char *s[]); int i; char str[10][20], *p[10]; for (i = 0; i < 10; i++) //将 { p[原创 2021-12-16 18:51:34 · 1681 阅读 · 3 评论 -
8.10 将一个5X5的矩阵中最大的元素放在中心,四个角分别放4个最小的元素(顺序为 //从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。
8.10 将一个5X5的矩阵中最大的元素放在中心,四个角分别放4个最小的元素(顺序为//从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。//8.10 将一个5X5的矩阵中最大的元素放在中心,四个角分别放4个最小的元素(顺序为//从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ void change(int原创 2021-12-15 21:54:33 · 1285 阅读 · 0 评论