-
快速排序在数据结构中具有很高的地位,个人认为主要是其平均空间复杂度O(nlogn)很是吸引人。所以想动手完成一次快排。通过查阅资料发现C语言本身有快排的相关函数qsort()。qsort(head,number,sizeof(head[0]),cmp);其中一次解释每一个参数head:即数组的首地址number:即元素的个数sizeof(head[0]):即其中一个元素的大小cmp:为一个函数名具
-
众所周知scanf()函数输入字符串时遇到空格或者回车就会停止录入字符即使用chararr[1000];scanf("%s",arr);printf("%s\n",arr);这种方法不可能输出一组带空格的字符串这时我考虑使用getchar()函数getchar()函数无论遇到回车时停止录入(可以录入空格)但getchar()只能返回输入字符串的第一个字符,所
-
今天写代码的时候发现一个奇怪的现象,网上查了好久也没有一个具体的说法,最后问题解决了,但是仍然不明白原理。运行时0-3应该是4个输入数字就可以但是这样我必须输入5个数字然后显示前四个找了好久自己尝试好久发现将scanf("%d",&a[i]);%d后面的空格去掉就会实现预期的效果输入4个输出4个如果有大神明白其中的原理希望可以评论帮帮忙。
-
函数的声明与定义规范:函数的声明放在头文件中函数的定义放在源文件中即拆开模块若想要实现一个加和的函数名为:fadd()(一)在头文件中声明fadd.hfadd.h的代码如下(二)在源文件fadd.c中定义fadd()函数(三)在xzc.c的源文件中使用fadd()函数注意:使用前要导入头文件fadd.h此时的输出结果为30即函数实现声明与定义
-
练习1.计算n的阶乘#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){while(1){inta,i;intsum=1;scanf("%d",&a);for(i=a;i>=1;--i){sum*=i;}printf("阶乘结果为:%d\n",sum);}return0
-
getchar()函数深化getchar();一次只读一个字符并且缓冲区中有字符getchar()就会获取所以有时需要在getchar();加入一个循环:while((ch=getchar())!='......')//即ch!='......'{;//空语句}此代码的意思为清空缓冲区的无意义的字符直到'......'停止for循环很稳定很常用功能最
-
C语言的三种结构1.顺序结构从头到尾按顺序执行(简单易懂)2.选择结构(一)分支语句语句:C语言中有一个;就是一个语句inta=10;//一条语句只有一个;也是语句(空语句)if语句语法结构:if(表达式1)语句1;elseif(表达式2)语句2;else语句3;具体代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain()
-
结构体例如要定义一个人需要复杂的各种变量结合在一起就需要结构体是我们自己创造出来的类型struct关键字为结构体关键字即结构体中需要用到struct用法:structBook{charname[20];intprice;};//;不可缺少注意:结构体中不能直接赋值在主函数中使用structBookb1={"C语言程序设计",55};输出:printf("书名:%s\n
-
指针计算机位数基本知识:32位:32根地址线/数据线正电(0)和负电(1)32个二进制作为可能性一共2^32种比如:00000000000000000000000000000001=1所对应的是为1的地址每个小区域(小分区)为1字节查看变量地址用%p输出&a的地址具体代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intma
-
数组基本常识chararr[]={0};//正确chararr[]="";//正确chararr[10]="";chararr[10];//正确chararr[];//错误总结:数组若想表达无误1.初始化数组给不给大小都可以2.若没有初始化则一定要给出数组大小~:~号是对一个数值按位取反~0(int型4个字节32个bit位)=~000000000000000
-
例题:1.不使用额外变量的前提下将a,b两个变量的值互换.(一)加减法:#include<stdio.h>intmain()inta=3;intb=5;a=a+b;b=a-b;//原来的a赋给现在的ba=a-b;//原来的b赋给现在的areturn0;}问题:整型溢出即a+b得到的值可能超过整型的最大限度(二)异或法:#include<stdio.h>intmain()in
-
注释1.单行//2.整段/....../函数自定义的函数不能放在主函数内要放在主函数外再通过主函数调用数组表现形式:intarr[5]={1,2,3,4,5};intarr[5]={0};intarr[5];......数组起始默认下标为0即第一个数组为arr[0]=1arr[1]=2......全部打印出需要循环打印各种运算符/:/号为取商(5/2)=2%:%号为取余(5%2)=1<<
-
一些常见错误1.scanf()函数因为不安全所以现在通常替换为scanf_s()。(因为scanf不管所定义的数组的长度只要是输入都会容纳所以不安全)2.若输入字符超过定义范围需要适当调整。3.若出现:错误1errorC4996:'scanf':Thisfunctionorvariablemaybeunsafe.Considerusingscanf_sinstead.Todisab
-
C代码形式#include<stdio.h>intmain(){return0;}//不用voidmain因为已经过时。数据类型char//字符类型单引号charch='A';%c输出short//短整型shorts=50;int//整型%d输出long//长整型longnum=100;longlong//更长整型float//浮点型%f(小数)double//双精度浮点型%lf打印(