![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
sp_13230409636
这个作者很懒,什么都没留下…
展开
-
156-牛客网C语言刷题3
1.在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是?A.a=20000+20000;B.a=400010;C.a=30000+10000;D.a=4000L10L;答案:D长整数常量后面要加L,没有加L,则默认为int类型,在16位系统下,int是16位的,占2个字节,有效范围是-32768到+32767,A、B、C的选项都会超出这个范围2.C语言常量中,1.2e0.5是错误的,e后必须为整数3.具有很多C语言的功能,awk又称过滤器csh:调用 C she原创 2022-01-07 23:16:41 · 497 阅读 · 0 评论 -
155-牛客网C语言刷题2
1.C语言中函数调用的方式有函数调用作为语句或函数表达式或函数参数三种2.循环分为当型循环和直到型循环,当型循环就是常用的while,直到型循环是do while3.实参和与其对应的形参各占用独立的存储单元*4.int (p)[5]; p是一个数组的指针,该指针指向一个长度为5的整型数组5.算法一般用类C语言之类的伪码来描述,如果用C语言等高级语言来描述,则算法实际上就是程序了答案:错。程序 = 算法 + 数据结构6.语句scanf("%7.2f", &a);是一个合法的scanf函数。原创 2022-01-07 22:57:52 · 643 阅读 · 0 评论 -
153-牛客网C语言刷题1
1.数组名作为函数的实参,传递给形参的是数组的首地址2.结构化程序可以包含三种基本结构中的一种或几种,基本结构:选择结构、顺序结构、循环结构3.浮点数e表示法,e前必须要有数字,e后数字只能为整数4.函数的形式参数隐含的存储类型说明是auto5.只能在循环体内和switch语句体内使用break语句6.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是?int a;float b;scanf("a=%d,b=%f",&a,&b);答案:a=25,b=2.5原创 2022-01-06 16:33:04 · 195 阅读 · 0 评论 -
124-C语言自己实现atoi(字符串->数字)
题目1:(依靠库函数)实现int Myatoi(const char *str);要求:1.“123”->123//数字字符转数字:数字字符-‘0’2.“123x456”->123//遇到字母,就停止3." 123456 "->123456//可以处理空格4." -123456 "->-123456//可以处理正负值5.“123456478912345789”->如果超过了当前类型的最大值,就转成最大值#include <iostrea原创 2021-12-03 09:21:23 · 81 阅读 · 0 评论 -
122-C语言顺序输出n的每一位数字
题目:顺序输出n的每一位数字如:483->4 8 3利用递归顺序输出n的每一位数字void Show(int n){ if(n<10)//只有一位数 { printf("%d ",n); } else { Show(n/10); printf("%d ",n%10); }}int main(){ Show(4);//4 Show(48);//4 8 Show(483);//4 8 3 return 0;}...原创 2021-11-30 19:33:22 · 437 阅读 · 0 评论 -
121-C语言动态内存的创建和释放
1.筛选法求素数void Fun(int n){ }int main(){ }原创 2021-11-30 19:25:33 · 930 阅读 · 0 评论 -
120-C语言变量总结
1.静态全局变量、普通全局变量、静态局部变量都保存在数据段2.局部变量:在函数内部定义的变量全局变量:在函数外部定义的变量,尽量少用,不安全原创 2021-11-30 11:58:41 · 350 阅读 · 0 评论 -
119-C语言结构体——学生信息的读写及排序
题目:从键盘读取5个学生的信息(包括学号、姓名、成绩),然后要求按照成绩的高低顺序输出各学生的信息解题思路:用结构体数组存放5个学生的信息,采用选择法对各元素进行排序(进行比较的是各元素中的成绩)//学生结构体struct Student{ int id;//学号 char name[20];//姓名 int score;//成绩};//输入学生信息void Input(struct Student *arr,int len){ for(int i = 0;i<len;i++原创 2021-11-30 10:47:00 · 733 阅读 · 0 评论 -
118-C语言结构体——投票器的实现
题目:有3个候选人,每个选民只能投票选1人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果//计票系统struct Person{ char name[20];//候选人姓名 int count;//计数器};void Ticket(struct Person *arr,int len){ char name[20];//从键盘读票 for(int i = 0;i<5;i++)//模拟5个选民 { scanf("%s",name); for(int原创 2021-11-30 10:24:45 · 851 阅读 · 0 评论 -
117-C语言自定义数据类型(struct)
1.自定义数据类型的初始化注意:不能在定义的时候初始化,只有定义完成以后这个变量才算定义完成int age = 20;//errorstruct Student//定义Student数据类型{ char name[20]; int age; //int age = 20;//error};//执行完分号以后说明定义完成,其地位和内置类型一样int main(){ Student stu1 = {"caocao",23}; Student stu2 = {"liubei"};//只初原创 2021-11-29 22:09:39 · 504 阅读 · 0 评论 -
115-C语言结构体、共用体和typedef类型定义
1.结构体和共用体定义//结构体,占8个字节struct A{ int a; float b; }; //联合体(也叫共用体),占4个字节union B{ int a; float b;};2.结构体和共用体的区别:结构体:typedef:类型定义,是定义类型的应用:①起个简短的别名 ②根据数据特征起别名(如size_t,time_t等能见名知意的数据类型)使用方法:typedef 类型名 新类型名;typedef unsigned long long in原创 2021-11-29 17:43:39 · 498 阅读 · 0 评论 -
116-C语言如何判断电脑是大端还是小端
1.大小端小端:低地址保存小数据,例如short a = 0x0001;如果低地址保存的是0x01(01权重小一些,00权重大一些),则为小端大端:低地址保存大数据2.(面试考点)判断当前平台是否为小端//是否为小端,PC为小端bool IsLittle(){ union//共用体也可以不起名字,这样别人就用不了,只有自己可以用 { char a; short b; }ua; ua.b = 0x0001; return ua.a == 0x01;}int main(){原创 2021-11-29 17:43:58 · 1133 阅读 · 0 评论 -
64-C语言知识点
1.默认的小数是double类型 10.0(double类型)2.浮点数就是小数3.6/0 是错误的,无意义,除数不能为04.优先使用复合运算符:+= -= /= *= 等5. 0! = 16.有符号的char类型,-128~127无符号的char类型,0~2557.12.5用科学计数法表示为 1.25e1 0.125=1.25e-18.用单引号包括起来的一个符号,例如’a’,字符是一个常量,在系统中保存的是a的ASCII值91,不是字符’a’9.’\0’=0原创 2021-11-02 10:02:20 · 183 阅读 · 0 评论 -
50-只利用一维数组打印杨辉三角(从后往前的思想)
利用从后往前的思想解决问题算法思想:①从第三行开始,for循环控制行号(j) j<=N②下标(i)控制当前这行的位置 j-1就是这一行的最后一个元素 i初始化为i-1,也就是当前这一行的最后一个元素的下标,如果j == i-1 || j == 0 arr[j] = 1,这样就把所有的0下标和对角线都设为1了,然后从后往前加arr[j] = arr[j] + arr[j-1]③一定是从后往前遍历,从前往后遍历会导致数据被覆盖#include <stdio.h>#d原创 2021-10-25 16:55:35 · 133 阅读 · 0 评论 -
45-C语言通过实例详解如何编程
一:编程的步骤:1.1.需求分析:明确我们要处理什么问题(要完成什么功能)1.2确定我们处理问题(要完成的功能)所需要的资源2.1算法设计(就是如何做一件事):根据所需的功能和我们拥有的资源,理清思路2.2排列出完成此功能的具体步骤(这就是算法)2.3每一个步骤都应当是简单的、确定的,这一步也被称为“逻辑编程”3.1起一个函数名,要见名知义3.2确定函数的形参,就是调用此函数时传递的资源(实参)3.3确定函数的返回值二:编程题一:判断year是否为闰年(闰年有29天)需要满足两个条件:原创 2021-10-24 17:14:12 · 156 阅读 · 0 评论 -
26-BF算法(朴素查找算法)和KMP算法
一:BF算法(笔试面试重点题)朴素(简单)查找算法:失配时,i回退到刚才起始位置的下一个位置,j回退到0笔试面试重点题,时间复杂度为O(n*m),空间复杂度为O(1)源代码:int BF(const char* str, const char* sub, int pos)//笔试重点题 O(n*m),O(1){ int lenstr = strlen(str); int lensub = strlen(sub); if (pos < 0 || pos >= lenstr)原创 2021-06-04 15:39:25 · 223 阅读 · 0 评论 -
9-如何交换两个数的数值
错误写法一:void Swap_err1(int a,int b)//没有传指针,只是值传递{ int tmp = a; a = b; b = tmp;}int main(){ int a = 10; int b = 20; Swap_err1(a, b); printf("%d %d\n", a, b); return 0;}main函数里面的a,b和Swap函数里面的a,b不一样,虽然同名,但是他们不同,他们的地址也不一样,Swap函数里的a,b的值确实互换了,但是并不原创 2021-04-22 17:29:59 · 128 阅读 · 0 评论 -
24-简单结构体操作、一个数字超过数组长度一半、数组移动、找最长单词、冒泡排序、将十六进制数字转为十进制数字
项目:测试冒泡排序的优化是否有效,周三前交rand():产生一个随机数字共用体:也称为联合体,union.所有的成员共用同一段内存,共用低地址大小端:考试的重点,你的笔试一定会出现大端:低地址放大数据小端:低地址放小数据内存重叠1.判断是不是闰年的标准方式:year % 4 == 0 && year % 100 != 0 || year % 400 == 0二、代码:1.从主函数输入一个年月日,判断这天是当前这年的第多少天typedef struct Date{原创 2021-06-02 17:59:27 · 77 阅读 · 0 评论 -
23-C语言文件有关的知识点总结
一:文件的分类根据数据的组织形式,文件可以分为二进制文件和文本文件1.二进制文件:数据在内存中是以二进制形式存储的,如果不加转换直接保存到文件中,就是二进制文件常见的二进制文件有:图片文件,视频文件,音频文件,可执行程序文件等。这些文件都不能用记事本文件直接查看,必须依赖特定应用程序解析二进制文件不需要转换,读写时更节约时间,相比文本文件也更节约空间,所以二进制文件使用更广泛2.文本文件(也成为ASCII文件):存放每个字符的编码。常见的如".txt"文件文字,记事本,有一个转换过程,给一个数字原创 2021-06-02 17:54:19 · 245 阅读 · 0 评论 -
3-分析下面程序
分析下面的程序:int main(){char c1;char c2;c1=97;c2=98;printf(“c1= %c,c2=%c\n”,c1 ,c2);printf(“c1 =%d,c2=%d\n”, c1 ,c2);return 0;}(1) 运行时会输出什么信息?为什么?(2) 如果将程序第 3、4 行改为c1=197; c2= 198 ;运行时会输出什么信息?为什么?(3) 如果将程序第 1、2 行改为int c1, int c2;运行时会输出什么信息?为什么?原创 2021-04-09 10:27:56 · 2031 阅读 · 0 评论 -
21-常用的文件函数
有关文件的函数一:fopen():新建或者打开一个文件FILE *fopen(const char *filename,//文件名const char *mode//访问启用的类型);启用的类型有:1.“w” :打开要编写的空文件。 如果给定文件存在,销毁其内容。2.“r” :用于读取打开。 如果文件不存在或无法找到, fopen 调用失败。基本格式为:fopen(path,“w”);基本格式为:fopen(path,“r”);二:fclose():关闭文件int fclose(F原创 2021-06-01 14:42:12 · 529 阅读 · 2 评论 -
20-整型数组、double类型数组、字符数组快排
qsort()函数的基本格式:void qsort(void *base,//需要排序的数组指针(数组名本身就是指针)size_t num,(需要排序的数组的大小)size_t width,(数组每个元素的字节数)int (__cdecl *compare )(const void *, const void *));(需要排序的方法)一:整型数组代码:#include <stdio.h>#include <stdlib.h>int Cmp_int(const原创 2021-05-31 16:36:43 · 913 阅读 · 0 评论 -
5-用调试的方法改正下列代码(判断一个数是不是素数)
源代码(错误代码):bool IsPrimer(int n){ for(int i=0;i<sqrt(n*1.0);i++) { if(n%i == 0) return false; else return true; } return false;}int main(){ for(int i=0;i<100;i++) { if(IsPrimer(i)) printf("%d是素数\n",i); } return 0;}在最初的运原创 2021-04-09 12:02:09 · 276 阅读 · 0 评论 -
4-用调试的方法改正下列代码(折半查找)
源代码(错误代码)int main(){ int arr[] = {1,3,6,7,10,13,16,20,30,32}; int key = 16; //int key = 17;//bug //int key = 2;//bug //int key = 32;//bug int low = 0; int high = sizeof(arr)/sizeof(arr[0]) - 1; int mid; while(low < high) { mid = (low+high)原创 2021-04-09 11:09:25 · 104 阅读 · 0 评论 -
25-字符串处理函数库中的查找函数
一:函数strchr(string char)char *strchr(const char *s, int c) 确定字符c在字符串s中第一次出现的位置。若找到了c,则函数返回指向s中c的指针,否则函数返回NULL指针。1.函数strchr的功能是在一个字符串中查找某一字符第一次出现的位置。若找到该字符,则函数返回指向字符串中该字符的指针,否则函数返回NULL。二:函数strcspn(string complementary(互补的,余角的) span(跨度,范围))size_t strcspn(原创 2021-06-03 18:48:16 · 346 阅读 · 0 评论 -
10-字符串函数strcpy、strncpy和strcat、strncat和strcmp、strncmp
1.char *strcpy(char *s1,const *s2)将字符串s2复制到字符数组s1中,返回s1的值2.char *strncpy(char *s1,const *s2,size_t n)将字符串s2中的至多n个字符复制到字符数组s1中,返回s1的值对于函数strncpy,第二个实参中的字符串结束符不一定会被复制过去。仅当要复制的字符个数n大于要复制的字符串s2的长度时,才会将字符串结束符复制到数组s1中,如:如果"test"是第二个实参,则仅在strcpy的第三个实参至少是5("te原创 2021-04-26 20:38:12 · 277 阅读 · 0 评论 -
8-判断一个数是不是素数,重要思想for(int i = 2;i <= sqrt(1.0 * a);i++)
bool Prime(int a)//判断是不是素数{ for(int i = 2;i <= sqrt(1.0 * a);i++)//1.0 * a就很重要 //for(int i = 2;i < a;i++)//尽量不用 { if(a%i==0) { return false; } } return true;}int main(){ for(int i=2;i<=100;i++) { if(Prime(i)) { printf("原创 2021-04-15 19:32:34 · 659 阅读 · 1 评论 -
7-判断n是否为回文数字,12321->是,12345->不是
源代码:方法一(不太好):#include <stdio.h>int Count(int n)//12345{ int sum=0; while(n!=0) { sum++; n/=10; } return sum;}int main(){ int n; scanf("%d",&n); int c=Count(n);//求解出n有几位数 for(int i=1;i<(c/2);i++)//12321 { if(n/(int)pow原创 2021-04-10 14:27:04 · 174 阅读 · 0 评论 -
2-有三个数a,b,c,把他们按从大到小输出
题目:有三个数a,b,c,把他们按从大到小输出算法:将a于b、c作比较,如果b、c有小于a的,将他们交换,以确保a的值最大,再将b和c作比较,如果b小于c,将他们互换,确保b的值比c大,然后输出a、b、c源代码int main(){ int a=0; int b=0; int c=0; scanf("%d%d%d", &a,&b,&c); if(b>a)//交换 { int tmp;//用一个空瓶子进行交换 tmp=a; a=b; b=tmp原创 2021-04-07 18:00:19 · 268 阅读 · 0 评论 -
1-----随机给一个数字,求:数字有几位数、顺序输出和逆序输出
随机给一个整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字 ,例如原数为 321, 应输出 123.算法为:源代码int Count(int n)//计数函数{ int count=0;//计数器 if(n==0) { return 1; } while(n!=0) { n/=10;//丢弃最后一位 count++;//没丢弃一位,计数器加一 } return count;//最后返回计数器的值}void ReversePrint(i原创 2021-04-06 22:34:58 · 675 阅读 · 0 评论 -
38-运算符优先级
小括号 中括号 指向符 >逻辑非 按位取反 自增自减 负号 指针取地址 长度 >乘除取余 >加减 >左移右移 >关系运算符 >等于不等于 >按位与 按位异或 按位或 逻辑与 逻辑或 >条件运算符 >赋值运算符 >逗号运算符() [] -> .! ~ ++ – - * &* / %+ -<< >>< <= > >== !=&am原创 2021-10-21 15:04:39 · 59 阅读 · 0 评论 -
33-链式栈的有关函数
知识点:链式栈,用带头结点的单链表实现栈顶:入栈和出栈,栈顶在表头(入栈和出栈的时间复杂度都是O(1))链式栈的栈顶在头指针,顺序栈的栈顶在最后面(尾部)1.结构体typedef struct LSNode{ int data; struct LSNode *next;}LSNode,*PLStack;//PLStack自带* 所以PLStack ps 等同于 PLStack *ps;2.初始化void InitStack(PLStack ps){ assert(ps !=原创 2021-10-12 10:32:01 · 85 阅读 · 0 评论 -
32-除留余数法(链地址法)的有关函数
知识点:1.链地址法要优于开地址法2.最重要的是插入和查找3.链地址法和开地址法都属于除留余数法4.除留余数法作散列函数优于其他函数5.分布越均匀,哈希冲突越小,速度越快,开地址法和链地址法的时间复杂度为O(1)结构体:#define m 13//m个单链表,哈希表的长度#include <assert.h>#include <stdlib.h>#include <stdio.h>typedef struct DataType{ int ke原创 2021-10-11 17:04:26 · 259 阅读 · 0 评论 -
31-除留余数法(开地址法)的有关函数
结构体:#define m 16//哈希表的长度#define p 13//除留余数法的除数,一般是比m小的最大素数,H(key)=key%p p <= m#define NONE -1//当前哈希表为空#include <stdio.h>typedef struct Hash{ int key;//关键字 //InfoType otherinfo//其他数据项}Hash,HashTable[m];1.哈希函数//哈希函数:除留余数法static原创 2021-10-11 16:43:19 · 242 阅读 · 0 评论 -
30-顺序栈(stack)的一些函数
1.初始化:void InitStack(PStack ps){ assert(ps != NULL); if(ps == NULL) return ; ps->base = (int *)malloc(INIT_SIZE * sizeof(int));//指向动态内存的指针 assert(ps->base != NULL); ps->top = 0;//栈顶指针,栈的有效元素个数(当前可以存放数据的下标) ps->stacksize = INIT_SIZE;原创 2021-10-11 10:57:11 · 270 阅读 · 0 评论 -
19-srand()的位置问题
如果把srand()放到循环的里面代码:int main(){ //srand(time(NULL)); for(int i=0;i<10;i++) { srand(time(NULL));//error printf("%d\n",rand()); } return 0;}输出的结果为:放到循环的外面:int main(){ srand(time(NULL)); for(int i=0;i<10;i++) { //srand(time(NULL原创 2021-05-19 22:24:59 · 354 阅读 · 0 评论 -
18-比较快排和冒泡排序的效率
Q:比较快排和冒泡排序的效率结论:快排的效率比冒泡高的多的多代码:int Cmp_int(const void *vp1,const void *vp2)//定义排序的方式,标准写法{ return *(int *)vp1-*(int *)vp2;//强转再解引用}void BubbleSort(int *arr,int len){ int tmp; for(int i=0;i<len-1;i++) { for(int j=0;j+1<len-i;j++) {原创 2021-05-19 22:10:57 · 232 阅读 · 0 评论 -
17-冒泡优化前后效率分析
Q:测试优化后冒泡排序的效率结论:冒泡的优化基本上没有意义,优化后的效率有时候可能比不优化还要低,这是因为优化后的冒泡排序每次都要多执行好多语句代码:#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <time.h>#define NUM 100000//Q:测试优化后冒泡排序的效率//结论:冒泡的优化基本上没有意义,优化后的效率有时候可能比不优化还要低,这是原创 2021-05-19 21:44:17 · 107 阅读 · 0 评论 -
16-动态内存有关的相关函数
1.动态内存(在堆内存分配,堆很大,超过1G):①根据变量定义数组的长度②需要较大的内存③需要长时间(即突破函数的限制)的使用内存2.动态内存常用的四个函数:①malloc:申请动态内存标准形式:int *p = (int )malloc(nsizeof(int));②calloc: 默认所有的元素置0标准形式:int *p = (int *)calloc(n,sizeof(int));③realloc:扩容标准形式:int *p = (int *)realloc(p,sizeof(in原创 2021-05-13 15:28:06 · 62 阅读 · 0 评论 -
15-C语言结构体
1.todo:什么是空间复杂度:2.自定义数据类型:也称为结构体struct 类型名{结构体成员};//注意分号3.Tab键,自动补齐剩余单词4.结构体里面也可以用结构体,结构体定义完了以后可以随意使用,它的地位和基本类型一样5.如何访问结构体成员?①访问结构体普通变量通过"."访问其成员②访问结构体指针变量通过"->"访问其成员,指向符自带解引用6.有两个符号自带解引用:[] 和 ->7.结构体作为参数传递时,总是传递它的地址(更节约空间,传递实参也是需要时间的,实原创 2021-05-13 14:35:59 · 106 阅读 · 0 评论