C语言学习笔记
文章平均质量分 92
C语言学习笔记,由浅入深
明教张公子
这个作者很懒,什么都没留下…
展开
-
C语言一文复习重点难点
文章目录一、指针和数组1.什么是指针:2.什么是指针数组?什么是数组指针?什么是函数指针?练习1.程序的结果是什么?2.程序的结果是什么?3.程序的结果是什么?4.程序的结果是什么?5.程序的结果是什么?6.程序的结果是什么?7.程序的结果是什么?二、结构体1.结构体、联合、枚举体他们之间区别2.内存对齐内存对齐的规则+如何计算为什么要对齐:二、使用步骤1.引入库2.读入数据总结一、指针和数组1.什么是指针:指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(3原创 2021-08-21 11:20:09 · 414 阅读 · 1 评论 -
C语言程序设计第五版谭浩强课后答案 第五章习题答案
C语言程序设计第五版谭浩强答案 第五章习题答案scanf出问题请看:超简单的scanf错误修改2.请补充例5. 7程序,分别统计当“fabs(t)>= le- 6”和“fabs(t)> = le- 8”时执行循环体的次数。fabs(t)>= le- 6 :# include <stdio.h># include <math.h>int main(){ int sign = 1; double pi = 0.0, term = 1.0; int原创 2021-01-31 20:04:46 · 3793 阅读 · 0 评论 -
C程序设计谭浩强第五版答案 第四章习题答案
C程序设计谭浩强第五版课后答案 第四章习题答案scanf出问题请看:超简单的scanf错误修改4. 有3个整数a, b, c,由键盘输入,输出其中最大的数。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main(){ int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a == b && a == c) {原创 2021-01-31 19:22:40 · 3145 阅读 · 2 评论 -
C程序设计谭浩强第五版课后答案 第三章习题答案
C程序设计谭浩强第五版答案 第三章习题答案scanf出问题请看:1、假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为p = ( 1 + r ) n p = (1+r)^np=(1+r) n ,其中r为年增长率,n为年数,p为与现在相比的倍数。#include<stdio.h>#include <math.h>int main(){ float p, r, n; r = 0.07; n = 10; p = po原创 2021-01-31 19:01:37 · 3275 阅读 · 1 评论 -
错误 C4996 ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead. To disabl
严重性 代码 说明 项目 文件 行 禁止显示状态错误 C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.解决方案:1.scanf改为scanf_s,按VS的规定来。2.代码最上面增加一行:define _CRT_S原创 2021-01-31 18:56:17 · 744 阅读 · 0 评论 -
数据结构——二叉树
1.定义二叉树#include<stdio.h>#include<stdlib.h>//定义二叉树//定义节点存放的值typedef char BTDataType;//定义树的结构体//存放左右子树、根节点typedef struct BinaryTreeNode{ BTDataType _data; struct BinaryTreeNode* _left; struct BinaryTreeNode* _right;}BTNode;2.二叉树遍历原创 2021-01-23 23:33:42 · 111 阅读 · 0 评论 -
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。时间复杂度O(n)
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。时间复杂度O(n)由于时间复杂度要求为O(n),采取异或的做法。举例说明:数组{1,0,3},缺失数字是2.用二级制的方法表示出这几个数字,这里只看后4位置即可:1:00010:00003:0011定义0-n的数字组成一个数组num两个相同的数字异或为0(不需要考虑顺序),那么nums数组所有的数和num数组所有数异或之后,相同的约掉,剩下的数字就是我们要找的数。代码如下:#include<stdi原创 2020-12-29 22:30:06 · 2547 阅读 · 0 评论 -
两变量交换,不用临时变量
两变量交换,不用临时变量#include<stdio.h>int main(){ int a = 3; int b = 5; printf("a=%d b=%d\n", a, b); //加减法 可能会溢出 //a = a + b;//8 //b = a - b;//3 //a = a - b;//5 //printf("a=%d b=%d\n", a, b); //异或 a = a ^ b; b = a ^ b; a = a ^ b; printf("a=%d原创 2020-08-10 22:25:18 · 108 阅读 · 1 评论 -
求一个整数存储在内存中的二进制中1的个数
求一个整数存储在内存中的二进制中1的个数#include<stdio.h>int main(){ int num = 0; int count = 0; scanf_s("%d",&num); int i = 0; for (i = 0; i < 32; i++) { if (1 == ((num >> i) & 1)) count++; } printf("%d\n", count); return 0;}结果:.原创 2020-08-10 22:23:32 · 123 阅读 · 1 评论 -
数组名C和C++
数组名所有数组名都表示首元素的地址特殊:sizeof(数组名),计算整个数组的大小,sizeof内部单独放一个数组名,数组名表示整个数组。&数组名,取出的是数组的地址,数组名表示整个数组。...原创 2020-08-07 20:13:29 · 198 阅读 · 1 评论 -
C程序设计 函数实现冒泡排序(升序)
函数实现冒泡排序(升序)#include<stdio.h>void bubble_sort(int arr[],int sz){ //趟数 int i = 0; for (i = 0; i < sz - 1; i++) { //每趟排序 int j = 0; for (j = 0; j <sz-1-i ; j++) { int tmp = 0; if (arr[j] > arr[j + 1]) { tmp = arr[j原创 2020-08-04 21:54:11 · 1186 阅读 · 1 评论 -
C程序设计 汉诺塔问题
C程序设计 汉诺塔问题#include<stdio.h>void move(char x, char y){ printf("%c----------------%c\n", x, y);}void move_all(int n, char a, char b, char c)//a到c,b是工具柱{ if (n == 1) { move(a, c); } else { move_all(n - 1, a, c, b); move(a, c); move_原创 2020-08-03 20:48:56 · 598 阅读 · 1 评论 -
C程序设计 求斐波那契数列第N个数
求斐波那契数列第N个数#include<stdio.h>//法1 递归int Fib(int n){ if (n <= 2) { return 1; } else { return Fib(n - 1) + Fib(n - 2); }}//法2int Fib(int n){ int a = 1; int b = 1; int c = 1; while (n > 2) { c = a + b; a = b; b = c;原创 2020-07-31 11:20:47 · 610 阅读 · 1 评论 -
C程序设计 递归与迭代求n的阶乘
递归与迭代求n的阶乘#include<stdio.h>int factorial(int p){ if (p <= 1) { return p; } else { return p * factorial(p - 1); }}int main(){ int n = 0; printf("请输入n: "); scanf_s("%d", &n); int num = factorial(n); printf("阶乘为%d\n", num);原创 2020-07-30 21:23:46 · 971 阅读 · 1 评论 -
C程序设计 模拟实现一个strlen函数 递归
模拟实现一个strlen函数#include<stdio.h>#include<string.h>int my_length(char* str){ int count = 0; while ('\0'!= *str) { count++; str++; } return count;}int main(){ char arr[] = "dhaskfhalhf"; int len = my_length(arr);//arr是数组,数组传参,传的不原创 2020-07-30 17:54:46 · 137 阅读 · 1 评论 -
接受一个整型值(无符号),按照顺序打印他的每一位
接受一个整型值(无符号),按照顺序打印他的每一位递归:#include<stdio.h>void print(int x)//123{ if (x > 10) { int i = (x / 10); int p = (x % 10); print(i); printf("%d ", p); } else { printf("%d ", x); }}int main(){ unsigned int num = 0; scanf_s("%d",原创 2020-07-30 16:44:43 · 207 阅读 · 1 评论 -
函数的嵌套调用和链式访问
函数的嵌套调用和链式访问嵌套调用#include<stdio.h>void Line(){ printf("-----------\n");}void three_line(){ for (int i = 0; i <= 3; i++) { Line(); }}int main(){ three_line(); return 0;}链式访问#include<stdio.h>int main(){ printf("%d",原创 2020-07-29 22:41:29 · 459 阅读 · 1 评论 -
写一个函数,每调用一次,num增加1
写一个函数,每调用一次,num增加1#include<stdio.h>void add(int* p){ (*p)++;}int main(){ int num = 0; add(&num); printf("%d\n", num); add(&num); printf("%d\n", num); add(&num); printf("%d\n", num);}结果:...原创 2020-07-29 22:04:58 · 444 阅读 · 1 评论 -
二分查找//在一个有序数组中查找具体的某个数 //如果找到了返回这个数的下标,找不到返回-1
二分查找,在一个有序数组中查找具体的某个数 如果找到了返回这个数的下标,找不到返回-1#include<stdio.h>int search(int arr[], int k, int sz){ int left = 0; int right = sz - 1; while(left<=right) { int mid = (left + right) / 2; if (k < arr[mid]) { right = mid - 1; }原创 2020-07-29 21:41:54 · 1370 阅读 · 1 评论 -
C 语言 写一个函数判断是不是闰年
写一个函数判断是不是闰年本网所有内容文字、图片和音视频资料,版权均属个人所有,仅供个人呢学习参考,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。#include<stdio.h>int year_run(int x){ if (x % 4 == 0 && x % 100 !=0) return 1; else if (x % 400 == 0) return 1; else return 0;}int main(原创 2020-07-24 18:01:44 · 1338 阅读 · 1 评论 -
C语言 写一个函数 判断一个数是不是素数
写一个函数判断一个数是不是素数本网所有内容文字、图片和音视频资料,版权均属个人所有,仅供个人呢学习参考,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。#include<stdio.h>#include<math.h>//素数返回1,不是素数返回0int s_num(int n){ for (int i = 2; i <=sqrt(n); i++) { if (0 == n % i) { return 0;原创 2020-07-24 10:28:49 · 1709 阅读 · 1 评论 -
C语言 C程序设计 写一个函数交换整型变量内容(指针)
写一个函数交换整型变量内容本网所有内容文字、图片和音视频资料,版权均属个人所有,仅供个人呢学习参考,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。#include<stdio.h>void swap(int* pa,int* pb)//存放a,b的地址{ int c = 0; c = *pa; *pa = *pb; *pb = c;}int main(){ int a = 10; int b = 20; printf("a=%d,原创 2020-07-23 20:50:44 · 166 阅读 · 1 评论 -
C语言 C程序设计 猜数字游戏 猜数字游戏
猜数字游戏本网所有内容文字、图片和音视频资料,版权均属个人所有,仅供个人呢学习参考,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。1.电脑生成随机数2.猜数字#include<stdio.h>#include<time.h>#include<stdlib.h>void menu(){ printf("*************************\n"); printf("*********欢迎进入******原创 2020-07-23 11:01:49 · 466 阅读 · 1 评论 -
C语言 C程序设计 在屏幕输出9*9乘法口诀表
在屏幕输出9*9乘法口诀表#include<stdio.h>#include<math.h>int main(){ int i = 0; int j = 0; int sum = 0; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) { sum = i * j; printf("%d*%d=%-2d ", j, i, sum);//%-2d 2位对齐 } printf("原创 2020-07-22 16:39:31 · 2189 阅读 · 1 评论 -
C语言 C程序设计 求十个数的最大值 求十个数的最大值
//求十个数的最大值#include<stdio.h>#include<math.h>int main(){ int arr[] = { -1, -2, -3, -1, -11, -6, -7, -17, -9, -10 }; int max = arr[0]; int n = sizeof(arr) / sizeof(arr[0]); for (int i = 1; i <= n; i++) { if (arr[i] > max) { m原创 2020-07-22 16:27:49 · 619 阅读 · 1 评论 -
C语言 C程序设计 计算1/1-1/2+1/3...+1/99-1/100的值,打印出结果 分数求和 计算1/1-1/2+1/3...+1
计算1/1-1/2+1/3…+1/99-1/100的值,打印出结果 分数求和方法1:#include<stdio.h>#include<math.h>int main(){ int i = 1; int n = 1; double sum = 0; for (n = 1; n <= 100; n++) { if (n % 2 == 0) sum = sum - 1.0 / n; else sum = 1.0 / n + sum; }原创 2020-07-22 16:15:19 · 3631 阅读 · 3 评论 -
输入年份,判断从该年至今有多少个闰年,并输出。判断闰年并打印
#include<stdio.h>#include<math.h>int main(){ int year = 0; scanf_s("%d", &year); //能被4整除不能被100整除 //能被400整除 for (year; year <= 2020; year++) { if (year % 4 == 0 && year % 100 != 0) { printf("%d是闰年\n", year); }原创 2020-07-21 22:17:03 · 2412 阅读 · 1 评论 -
求最大公约数(辗转相除法)最大公约数
//辗转相除法算最大公约数#include<stdio.h>#include<math.h>int main() { int m = 0; int n = 0; scanf_s("%d%d", &m, &n); while (m % n) { int r = m % n; m = n; n = r; } printf("%d\n", n);//跳出循环 return 0;}结果如图所示:...原创 2020-07-21 21:01:27 · 86 阅读 · 1 评论 -
计算1!+2!......+n!,即n个数的阶乘之和
求1!+2!…+n!#include<stdio.h>#include<math.h>int main(){ int sum = 0; int ret =1; int n = 0; scanf("%d",&n); for (int i = 1; i <= n ; i++) { ret = ret * i; sum = sum + ret; } printf("%d\n",sum); return 0;}结果如下:输入n..原创 2020-07-20 22:03:50 · 1782 阅读 · 1 评论 -
计算n的阶乘 计算n的阶乘
#include<stdio.h>#include<math.h>int main(){ int n; int ret = 1; scanf_s("%d", &n); for (int i = 1; i <= n; i++) { ret = ret * i; } printf("n的阶乘是%d\n", ret); return 0;}结果原创 2020-07-20 17:13:16 · 2139 阅读 · 1 评论 -
输出1-100之间的奇数 输出1-100之间的奇数
#include<stdio.h>#include<math.h>int main(){ int a = 1; while (a <= 100) { if (a % 2 == 1) { printf("%d ", a); } a++; } return 0;}或#include<stdio.h>#include<math.h>int main(){ int a = 1; while (a <原创 2020-07-14 21:42:18 · 1006 阅读 · 1 评论 -
输入一个数,判断奇数还是偶数
C语言的学习曲线较陡峭,需要更多的时间和精力去理解和掌握。请注意,虽然C++在功能和安全性方面相对于C语言有所改进,但由于C++的复杂性,它也可能导致一些新的问题,如编译时间增加、代码难以维护等。总的来说,C语言由于其高效性、可移植性和广泛的支持,在计算机科学和软件工程领域中一直是一种重要的编程语言。C语言的发展经历了多个阶段,从最初的版本到最新的C23标准,C语言不断得到完善和发展。C语言和C++是两种不同的编程语言,尽管C++在设计和实现上受到了C语言的强烈影响,但两者之间存在一些显著的区别。原创 2020-07-14 21:32:55 · 2276 阅读 · 1 评论 -
购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理。
#include<stdio.h>#include<math.h>int main() { float d, p, r, m; d = 300000; p = 6000; r = 0.01; m = log10(p / (p - d * r)) / log10(1 + r); printf("还清的月数为%3.1f\n", m); return 0;}结果如下:原创 2020-07-14 15:21:03 · 3801 阅读 · 1 评论 -
存款利息的计算。有1000元,想存5年,可按以下5种办法存:(1)一次存5年期 (2)先存2年期,到期后将本息再存3年期 (3)先存3年期,到期后将本息再存2年期 (4)存1年期,到期后将本息再
(1)一次存5年期(2)先存2年期,到期后将本息再存3年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,到期后将本息再存1年期,连续存5次(5)存活期存款,活期利息每一季度结算一次2017年银行存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为2.75%;5年期定期存款利息为3%;活期存款利息为0.35%(活期存款每一季度结算一次利息)#include<stdio.h>#include<math.h>i原创 2020-07-12 12:30:55 · 8593 阅读 · 1 评论 -
编写一个C程序,运行时输入a,b,c三个值,输出其中最大者
运行环境VS 2019#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int a, b, c; int max; scanf("%d,%d,%d", &a, &b, &c); if (a > b) { max = a; } else { max = b; } if (max > c) { printf("%d", max); } else {原创 2020-07-07 20:32:54 · 10286 阅读 · 1 评论