(C语言笔记精选)一篇代码带你快速复习c语言入门知识点

//#include "xxxx.h"或#include <xxxx.h>为引用头文件,头文件中存在系统定义好的函数,可以·方便操作者使用 
#include <stdio.h>

//字符串strcpy处理的函数的出处 
#include <string.h> 

//字符串atoi处理的函数的出处 
#include <stdlib.h> 

//使用assert函数检查文件是否为空 
#include <assert.h>

//注:请从void main()开始看起 






//宏定义 
//#define 定义名字(标识符) 需替代的内容(字符串)
//注:不需以";"结尾 
//使用undef 标识符  语句 终止该标识符的作用域 
#define YELLOW 4
//定义带参数的宏 
#define V(a,b,c) a*b*c    //可类似简单小函数 


//自动变量:在函数体或复合语句中定义的非静态变量
//c语言编译时部队自动变量赋初始值,只有当程序执行到自动变量的作用域时,程序才自动分配空间,复合语句或函数执行完后,
// 自动变量才被释放销毁:自动变量存储在程序的为动态存储空间 

//register声明:寄存器变量 

//static 修饰的为静态局部变量,编译时程序需对静态变量赋初始值 ,运行期间均占用程序的存储空闲,直到程序退出后才释放该空间 
//外部变量(全局变量) :为静态储存空间, 运行期间均占用程序的存储空闲,直到程序退出后才释放该空间。 


//在定义变量或输出语句 以及do-while()、continue,break等的末尾需要添加";"号 



//void为空,引用该定义赋的函数可以存在不反回值,int,double,char,再函数开头定义的函数必须具有该定义类型的返回值
//函数定义:修饰符 函数名(形参,形参,...){...... return 修饰符修饰的该类型变量} 
//调用:函数名(实参,实参,....);注:形参实参个数一一对应。例:以下面的函数为例,调用:  int a[]={1,2,3,4,5}         sort_bubble(a,9) 
//下面的函数的形参为int *array与int len;表名其中一个是数组类型或指针类型,另一个为int类型 
void sort_bubble(int *array,int len)
{
	int i,j,k;
		for(i=0;i<len;i++){
			for(j=0;j<len-i-1;j++){
				if(array[j]>array[j+1]){
					k=array[j];
					array[j]=array[j+1];
					array[j+1]=k;
				}
			
			}
		}
}



//打印int数组成员的函数 
void printf_arrays(int *array,int len)
{
	int i;
	printf("数组排序后:");
	for(i=0;i<len;i++){
		printf("%d ",array[i]);
	}
}


//冒泡排序的函数 
void sort_printf(char *array,int len){//形参代表可传数组或指针,与int 类型变量 
	int k;
	printf("\n");
	for(k=0;k<len;k++){
		printf("%c\t",*(array+k));//*(指针+k)等价于:数组[k] 其中数组和该指针的名字相同 
	}
}
//其他排序请自行查找 

//结构体 
struct student
{
	int num;
	float score;
	struct student *next;
};

//typedef定义了一个使用stu来声明这个studentT结构体
typedef struct studentT{
	char name[32];
	int num;
	char sex[16];
	int score;
	
}stu;

int main() 
{
		//常识 
			//编译器不同,数据类型也不同:
			//以int为例 
			//8bit=1个字节(byte)=(0000-0000)
			//int为4个字节:32位的win、linux操作系统 (VC和gcc的结果)
			//int为2个字节:DOS,16位操作系统程序TC,KEIL下51类单片机 
			//int为8byte:不少64位pc端软件 
			//(16位编译器:2个字节)
			//范围(2^16)-1=65535:-32768——32767 ::::此为计数范围公式 
				//int:4个字节 
				//long:4个字节
				//short:2个字节
				//float:4个字节
				//double:8个字节
				//char:1个字节
								/*	
									printf("\n");
									printf("char=%d",sizeof(char));	
									printf("\n");
									printf("long=%d",sizeof(long));	
									printf("\n");
									printf("int=%d",sizeof(int));	
									printf("\n");
									printf("short=%d",sizeof(short));	
									printf("\n");
									printf("float=%d",sizeof(float));	
									printf("\n");
									printf("double=%d",sizeof(double));	
									char ch='a';
									char ch2="a";
									char ch3="啊";
									printf("\n");
									printf("单引号=%d",sizeof(ch));	
									printf("\n");
									printf("双引号=%d",sizeof(ch2));	
									printf("\n");
									printf("中文=%d",sizeof(ch3));
									"\0"为结尾标记符 
								*/
								
								
								
	///////////注:当数据超出范围时可能编译失败 
	//数据类型		
			//整型 非小数
			
						//(32位编译器)
						//范围:-2147483648——2147483647 
					//int Inumber=2147483648; 
					//printf("Inumber=%d",Inumber);
						//输出:Inumber=-2147483648 当超过的时候倒着来数 如:2147483649时,输出:-2147483647 
						//圆圈形式 
					
					//printf("\n");//换行符 
						//printf("\t")横向跳格,跳到下一个输出区(一个输出区占8个字符) 
						//printf("\v")竖向跳格 
						//printf("\b")退格 
						//printf("\r")回车 
						//printf("\f")走纸换页
						//printf("\\")反斜杠\ 
						//printf("\'")单引号 
						//printf("\ddd") 1~3位八进制代表的字符(\101='A') 
						//printf("\xhh") 1~2位十六进制代表的字符(\x40='A') 
							//常用字符	ASCII8(16进制) 
							//‘A’		64(0x40) 
							//‘B’		65(0x41) 
							//‘a’		97(0x61) 
							//‘b’		98(0x42) 
							//‘0’		48(0x30) 
							//‘1’		49(0x31) 
					
					
					
						//短整型 
						//(32位编译器:但为2个字节)
						//范围:-2147483648——2147483647 
					//short Snumber=-2147483649; 
					//printf("Snumber=%d",Snumber);
						//输出:Snumber=0
						//输入:Snumber=+-2147483648 输出:0 当超过的时候重头来数 如:2147483649时,输出:1	如:-2147483649时,输出:-1:符号不变 
						//以0位中心的两个圆圈 
						
					//printf("\n");//换行符 
					
						//长整型 
						//(32位:4个字节)
						//范围:-2147483648——2147483647 
					//long Lnumber=-2147483648;
					//printf("Lnumber=%d",Lnumber); 
						//输出:Lnumber=-2147483648
						//输入:Lnumber=2147483648 输出:2147483647 当超过的时候记最大值 如:2147483649时,输出:2147483647
						//以0位中心的两条线段,范围不可超过编译器位数 
						
					//printf("\n");//换行符 	
					
						//unsigned可修饰long short int
						//表示无符号,即正数
						//(32位编译器:2个字节):注:unsigned long:4字节、short、int2:字节 
						//范围:0——2147483648
					//unsigned short USnumber=2147483648;
					//printf("USnumber=%d",USnumber);
						//输出为0,输入:2147483649,输出为1
					
					 
			//printf("\n");//换行符 
			
			
			//浮点型 
						//——>	注:取值范围看指数位,精度看位数位	
						
						//4个字节	
						//(1位符号位,8位指数位,23位尾数位)
						//由于2^8=(-128——127) 所以取值范围:-2^128——2^127 	约为-3.4E38——3.4E38 
						//小数精度:2^23=8.3E6可表示小数点后七、八位根据编译器而定
					float Fnumber=25.12345678910111213;	
					printf("Fnumber= %9.8f",Fnumber); 
						//输出:Fnumber= 25.12345695 注:可根据自己想要结果调%f,例%10.8f 
					
					printf("\n");//换行符 
					
						//8个字节 
						//(1位符号位,11位指数位,52位尾数位)	 		
						//由于2^11=(-1024——1023) 所以取值范围:-2^1024——2^1023 	
						//小数精度:2^52=4.5E15可表示小数点的十五、十六位
					double Dnumber=25.12345678910111213; 	
					printf("Dnumber= %9.8lf",Dnumber); 	 
						//输出:Dnumber= 25.12345679
						
						
			printf("\n");//换行符 
			
			
			//字符型
					char ch='a';
					char ch2='a'; 
					char ArrayCh[]="abcd";
					char ArrayCh2[]="1234abc";
					printf("\n");
					printf("ch=%d",sizeof(ch));//一个字节 
					printf("\n");
					printf("ch2=%d",sizeof(ch2));//一个字节 
					printf("\n");
					printf("字符串1=%d",sizeof(ArrayCh));//五个字节,最后一个属于结尾符号 
					printf("\n");
					printf("字符串2=%d",sizeof(ArrayCh2));//八个字节,最后一个....
			
			//printf("%f") float 
			//printf("%lf") double
					printf("\n");
					int i=1234567;
					int i2=1234;
					int i3=125;
					printf("7w=%6d",i);
					printf("\n");
					printf("6w=%6d",i2);
					printf("\n");
					printf("5w=%5d",i3);
					printf("\n");
			//printf("%6d") 输出6位十进制数,超出按实际位数输出 ,不足将空出空格 
			//printf("%06d") 输出6位十进制数,超出按实际位数输出 ,不足将空出00补充 
			//printf("%s") 字符串 
			//printf("%c") 字符
			
					float a=1234532.83456;
					printf("a=%8.7f",a); //总共可输出8位 ,当前面8位整数满了时,后面小数化为0,最靠近小数点的那位采取四舍五入 
					//输出:a=12345322.0000000
					//输入:a=1234532.83456,输出为:a=1234532.8750000:此时小数点不固定 ,未知的以0补充 
			//printf("%8.7f") 
			//printf("%18.16lf") 同上 
			//printf("s[]=%6.9s")输出最多9个字符 
			//printf("%p") 输出指针的值
			//printf("%x") 输出八进制ASCII码 
			
	//注:类型级别由低到高(char,short—int——unsigned—long—double;float—double)的顺序进行转换。
			
			
			
			
	// 算法 、方法 
	//while()、do-while()、break、if()-else、switch-case-break、return、goto、for()、continue、
	//++i与i++、&&、||、+=、scanf()、getchar() 、putchar()、printf()、gets()、puts()、获取数组长度sizeof(arrays)/sizeof(arrays[0]) 
	
			//数组:有序数据的集合,元素类型相同,顺序存储结构,占用相同存储空间,且必须先定义后使用。
			//静态数组变量编译时自动将数据初始化为0,动态数组在执行时才分配空间,且初始值为随机
			//c语言只能逐个引用数组元素,不能一次性引用整个数组 
			char c;//在循环外面进行创建,避免了反复创建变量导致浪费空间的缺点 
			int Arraysi[]={2,34,5,64,123,-31,0,23,44};//第一种定义数组的方法 
			int Arraysi2[10]={1,42,23,14,35,66,47,28,99,0};//第二种,先定义长度,然后在里面定义内容 
			int TArray[3][3]={
  
  {1,2,3},{4,5,6},{7,8,9}};//格式int TArray[i][j]={
  
  {1,2,3,...},{4,5,6,...},{7,8,9,...},{....}};
			
			int conditionNumber=0; 
			//公式:do{......循环类容}while(判断条件);
			//公式:while(判断条件){执行内容} 
			//两者区别:do-while()不管条件成不成立都需要先执行一次内容,在开始判断,而while直接判断,符合条件的才开始执行内容 
			do{
				int conditionNumber=0;
				while((++conditionNumber)!=25)//++i先进行++,即先给conditionNumber赋值, 在进行判断 
				{
					printf("\n"); 
					printf("输入a,b,c,d,e,f:"); 
					printf("\n\ta:调用冒泡排序");
					printf("\n\tb:调用冒泡排序");
					printf("\n\t
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值