C学习
C语言学习
岁月蹉跎的一杯酒
ISP小粉丝一枚
展开
-
C语言面试总结(更新中)
1. “引用”与指针的区别是什么?指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。2、已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。char *strcpy(char *strDest, const char *strSr原创 2021-08-25 15:19:42 · 542 阅读 · 0 评论 -
Leetcode—图像旋转
代码#include<stdio.h>#define n 4int main() { int arr1[n][n] = {0}; int arr2[n][n]={0}; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf_s("%d", &arr1[i][j]); } } for (int i = 0; i < n; i++) { for..原创 2021-07-26 11:29:37 · 159 阅读 · 0 评论 -
Leetcode—整数反转
#include<stdio.h>#include<math.h>int main() { long int x; scanf_s("%d", &x); int num=0; while (x!=0) { num = num * 10 + x % 10; if (num>pow(2,31)||num<-pow(2, 31)) { num = 0; } x = x / 10; } printf("%d", n...原创 2021-07-22 16:05:44 · 96 阅读 · 0 评论 -
C语言中static和extern关键字的作用
一、static关键字的作用1、修饰局部变量延长局部变量的生命周期,程序结束才会销毁 局部变量只会生成一份内存,只会初始化一次 改变局部变量的作用域2、修饰全局变量只能在本文件中访问,修饰全局变量的作用域,生命周期不会改 避免重复定义全局变量二、extern关键字作用1、只是用来获取全局变量的值(包括静态变量),无法定义变量2、现在当前文件夹中查找全局变量,没有找到,才会去其他文件去查找...原创 2021-07-20 11:22:34 · 883 阅读 · 0 评论 -
3. 无重复字符的最长子串(leetcode)
代码#include<stdio.h>#include<string.h>int main() { char s[100] = { 0 }; gets_s(s); int size = 0; int num = 0; int i = 0, j = 0, k = 0; size = strlen(s); for (j = 0; j < size; j++) { for (k = i; k < j; k..原创 2021-07-19 16:23:58 · 73 阅读 · 0 评论 -
矩阵的转置(C语言)
代码#include<stdio.h>#include<stdlib.h>#define row 3#define col 4int main() { int arr1[row][col] = { 0 }; int arr2[col][row] = { 0 }; printf("输入第一个矩阵\n"); for (int i = 0; i < row; i++) { printf("输入第%d行:",i+1); for (int j = 0;原创 2021-07-13 10:57:23 · 837 阅读 · 0 评论 -
两个矩阵乘法与点乘(C语言)
图像中的计算往往是矩阵之间的运算,所以矩阵乘法具有重要的意义。C代码#include<stdio.h>#include<stdlib.h>int main() { int arr1[3][4] = { 0 }; int arr2[4][3] = { 0 }; int arr3[3][3] = { 0 }; printf("输入第一个矩阵\n"); for (int i = 0; i <3; i++) { printf("输入第%d行:",i+1原创 2021-07-13 10:28:21 · 2302 阅读 · 0 评论 -
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体(两个字符串比较是否相同)
问题代码:void main() { char* a = "abc"; char* b = "abd"; int c=strcmp(a, b); printf("%d", c);}解决办法:强制类型转换void main() { char* a =(char*) "abc"; char* b = (char*)"abd"; int c=strcmp(a, b); printf("%d", c);}两个字符串比较是否相同#include<stdio.h>原创 2021-07-02 12:11:48 · 170 阅读 · 0 评论 -
删除数组中重复数字—C语言
例子:arr[]={1 2 3 4 2 1 3 5}删除重复数字得到:arr[]={1,2,3,4,5}Code:#include<stdio.h>int main() { int len; int arr[] = { 1,2,3,4,2,1,3,5 }; len = sizeof(arr) / sizeof(int); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } for (int i原创 2021-06-28 11:13:48 · 4920 阅读 · 3 评论 -
三个数相加等于0(C语言)
#include<stdio.h>int main() { int n; scanf_s("%d", &n); char arr[100] = {}; for (int i = 0; i < n; i++) { scanf_s("%d", &arr[i]); } for (int i = 0; i <n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j+1; ...原创 2021-06-21 16:33:13 · 793 阅读 · 0 评论 -
两数相除(不用乘法、除法和mod运算符)—C语言
code:#include<stdio.h>using namespace std;int main() { //a是被除数,b是除数 int a, b; int c=0; scanf_s("%d%d", &a, &b); if (b==0) { printf("您的输入不合法,请重新输入:\n"); return 0; } if (a == 0) { c = 0; } if (b >0 && a >0 &a.原创 2021-06-21 10:35:01 · 1237 阅读 · 0 评论 -
冒泡排序(C语言)
冒泡排序主要有以下三点需要主要:1、数组的输入与输出2、数据交换3、需要进行排序的次数关于数组的输入与输出:原创 2021-06-15 16:15:38 · 126 阅读 · 0 评论 -
指针和一维数组
#include<stdio.h>void main() { char a[] = { '1','2','3','4' }; char* p = a; *p = a[0];//指针变量存放的是a[0]的地址,a[0]=1; printf("%c\n", *p); a[0] = '9';//a[0]变量的值进行了修改,a[0]=9; printf("%c", *p);}原创 2021-06-10 16:55:53 · 101 阅读 · 0 评论 -
C语言利用指针实现字符串的复制
#include<stdio.h>void main() { char str1[50] = "I Love China"; char str2[50] = "So do I"; char* p1=NULL, * p2=NULL; p1 = str1; p2 = str2; for ( p1; *p1!='\0'; p1++) { printf("%c", *p1); } printf("\n"); for (;*p2!='\0';p1++,p2++) { *p.原创 2021-06-10 15:05:25 · 8407 阅读 · 0 评论 -
函数指针介绍
int (*p)(int,int) = NULL;p与*结合,说明p是一个指针;*p与()结合说明指针p指向的是一个函数;()原创 2021-05-31 10:03:37 · 62 阅读 · 0 评论 -
一图解决指针基础
yi'r转载 2021-05-28 18:14:06 · 95 阅读 · 0 评论 -
菜鸟教程C语言-17
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。程序分析:利用while语句,条件为输入的字符不为'\n'。代码/*day 2021/5/14题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。*/#include<stdio.h>int main(){ char c; printf("请输入一串字符:"); int letters=0,spaces=0,digits=0,others=0; while((c=getch原创 2021-05-17 22:41:09 · 119 阅读 · 0 评论 -
菜鸟教程C语言-16
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。程序//题目:输入两个正整数m和n,求其最大公约数和最小公倍数。#include<stdio.h>int main() { int a,b; printf("输入两个正整数:"); scanf_s("%d%d",& a, &b); int i; if (a > b) { int t; t = a; a = b; b = t; } for (i = b; i>=2; i原创 2021-05-17 18:09:41 · 132 阅读 · 0 评论 -
菜鸟教程C语言-15
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。程序分析:(a>b)?a:b这是条件运算符的基本例子。代码/*day 2021/5/14题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。*/#include<stdio.h>int main(){ int score; char G; printf("请输入原创 2021-05-14 00:24:23 · 176 阅读 · 0 评论 -
菜鸟教程C语言-14
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。 (2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。代码/*day 2021/5/13题目:将一个正整数分解质因数。例如:输入原创 2021-05-13 20:46:33 · 110 阅读 · 0 评论 -
菜鸟教程C语言—13
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。代码/*day 2021/5/13题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。程序分析:利用for循环控制原创 2021-05-13 15:03:47 · 254 阅读 · 0 评论 -
菜鸟教程C语言-12
题目:判断101到200之间的素数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。/*day 2021/5/13题目:判断101到200之间的素数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 */#include<stdio.h>int main(){ int i,j; for(i=101;i<=200;i++){ for原创 2021-05-13 14:40:28 · 94 阅读 · 0 评论 -
菜鸟教程C语言-11
题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....,即下个月是上两个月之和(从第三个月开始)。代码/*day 2021/5/13题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出原创 2021-05-13 00:17:50 · 134 阅读 · 0 评论 -
菜鸟教程C语言—8
题目:输出9*9口诀。程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。/*day:2021/5/12题目:输出9*9口诀。程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。*/ #include<stdio.h>int main(){ int i,j; for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ if(i>=j){ int sum; sum=i*j;原创 2021-05-12 23:09:01 · 359 阅读 · 0 评论 -
菜鸟教程C语言-5
题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。/*day:2021/5/11题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能...原创 2021-05-11 23:19:13 · 185 阅读 · 0 评论 -
菜鸟教程C语言-4
题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。代码#include<stdio.h>int main(){ int year,month,day,sum; int temp; printf("请输入年月日:"); scanf("%d %d %d",&year,&month,&day); switch(month)原创 2021-05-11 19:11:19 · 110 阅读 · 0 评论 -
菜鸟教程C语言-3
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:假设该数为 x。1、则:x + 100 = n2, x + 100 + 168 = m22、计算等式:m2 - n2 = (m + n)(m - n) = 1683、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。原创 2021-05-11 19:11:47 · 152 阅读 · 0 评论 -
菜鸟教程C语言-2
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%; 高于100万元时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数?程序分析:请利用数轴来分界,定位。注意定义原创 2021-05-10 22:26:41 · 200 阅读 · 0 评论 -
菜鸟教程C语言-1
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。#include<stdio.h>int main(){ int i,j,k; printf("\n"); for(i=1;i<5;i++){ for(j=1;j<5;j++){ for(k=1;k<5;k++){ if(i!=k&&k!=j&am原创 2021-05-10 22:05:50 · 204 阅读 · 0 评论