(http://www.cnblogs.com/kenshincui/p/3840294.html C语言基础知识)
C语言编程
{}:大段的内容
<>:三段论:什么条件下使用; 达到什么的效果; 发生变化的条件
第一讲 c基础
一.简单程序的一般形式
main.c
main.m
{主函数”(主功能的地方:一段实现某种功能的代码,可以供其他代码调用)<比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。>:每个程序都需要,程序体; 整个程序的运行; 大多数是必须存在的,也有例外DLL模块和机器人芯片,<比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。再比如,用于专业环境的程序——如机器人中的控制芯片--可能不需要main函数。>}
<每个程序都需要,程序体; 整个程序的运行; 大多数是必须存在的,也有例外DLL模块和机器人芯片>
int main ()
{
}
<在不需要运算,即需要标记的时候,用; 实现绿字标识; 可以多于两个,两个以上效果相同>
//注释:提示代码是做什么的,提示写代码人的思路。
//注释不是代码,不参与执行
//单行注释(没有回车就是一行)
<需要注释的地方.不必每行//; 多行注释一个/**/就行; 不能/*/* */*/>
/*
多行注释
可以任意多行
*/
{对于哲学,或者逻辑学,数学乃至由此而产生的现代电子技术来说,0就是表示“没有,不存在”,1就是表示“存在”。这个意义是非常深远的。
(多进制的作用:二进制最符合计算机基本运算原理和实现,即通过电路开关的二态来实现运算。
八进制和十六进制和三十二进制和二进制非常易于互转,所以用来表示字节,指令等,可以包含更多信息而不必使用二进制那么长的形式,尽管最终都要转为二进制来交给cpu处理。
十进制是人类生活通用的,在应用层面必然使用十进制,否则大家就要经常性的玩10~2或者10~8 10~16互转游戏了。)
}
<大数据,少硬件;简短,快捷,轻便,小;不同的不同>
1.进制
进制:进位机制
基数:也叫底数,基数为几代表几进制
进制位权
一个通用的描述方式,最低为0位,最后依次加一;
进制为几,权就为几;
进制转换
十进制到n进制,连除倒取余;
n进制转十进制,按权求合;
(http://baike.baidu.com/link?url=wkyy9iynlCDLeJl7WI8SI6oBPJFD0KqCdc6ax_SxKmRsB4nHHWz288zlWBWwog2kfdug5vrIeLH0FSVPSypIJa 进制的转换:原码,反码.补码:四种存在的意义:数制,尽可能的减少硬件,更简短,加0意义不变)
进制修饰
十进制什么都不加
八进制加0
十六进制加0x
二进制0b(binary system)
{库函数(Library function)是把函数放到库里,供别人使用的一种方式。.方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。}
stdio标准输入输出
库 函数库 别人写好的一对代码提供给我们使用
return 返回
(http://www.cnblogs.com/onedime/archive/2012/11/21/2780149.html数据类型)
例子:数据类型:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。
现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在内存上咔咔咔,不同大小的内存就分配好了,当然别忘了给它们取个好听的名字。
二.基本数据类型
<定义一个数据的类型,有助于确定占的字节数,有利于分类型的数据特点归纳运用; 定义变量,打印,占位; >
关键字 说明 字节大小 printf 转化符 scanf占位符
char 字符类型 1 %c
short 短整型类型 2 %sd
int 整型类型 4 %d
float 单精度浮点类型 4 带小数的 %f %lf
long 长整形类型 4或8 %ld
double 双精度浮点类型 8 %f %lf
最高位是符号位,0正1负
1~127 -128~ -1
三.常量(程序运行中不可改变的量)和变量(相当于一个容器或位置),运算符
<需要一个定值; 调用的时候需要; 不可变>
整型常量:23 , 5 , -1
浮点型常量:4.6 , -1.23
字符型常量:’A’,’9’
数字做符号来用的话,必须加单引号
<一个容器和位置; 赋值的时候; 可变的>
变量代表一个存储区域.
存储区域内存储的内容就是变量的值,变量的值可以在程序运行期间改变
变量由三部分组成: 类型修饰符 变量名 = 初始值;(初始值决定底数吗)
例如: int age = 23;
注意:在使用变量之前必须对变量进行定义.
变量命名规定
只能由数字/字母/下划线组成.并且数字不能开头.
不可能与系统保留字同名
不能使用重复的变量名
见名知意(规范)
<赋值; 有值; 添加改变>
赋值运算符
用于给变量赋值,将右边的值赋给左边的变量.
age = 24;
赋值运算符优先级较低.
算术运算符
算术运算符 说明 注意事项
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算 整型相除取整;除数不为0
% 取余运算 两边均为整数
++ 递增运算 运算符在前,先执⾏;运算符在
后,后执⾏。
复合运算符
算术运算符 语法 含义
+= a += b; a = a + b;
-= a -= b; a = a - b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;
(http://www.cnblogs.com/-ljj/p/3711317.html基本运算符)
4.优先级
* 逻辑运算符的优先级别顺利为:小括号() > 负号 - >!> 算术运算符 > 关系运算符 >&&>||
* 表达式!(3>5) || (2<4) && (6<1) :先计算 !(3>5)、(2<4)、(6<1),结果为1,式子变为1 || 1 && 0,再计算1 && 0,式子变为1 || 0,最后的结果为1
* 表达式3+2<5||6>3 等价于 ((3+2) < 5) || (6>3),结果为1
* 表达式4>3 && !-5>2 等价于 (4>3) && ((!(-5)) > 2) ,结果为0
四.表达式
表达式:常量/变量与运算符的组合.
3+5
a+=b
注:表达式都会返回值.
语句
语句是程序执行的最小单位,以分号结尾.
五.基本输入输出函数
1.格式化输出函数printf
语法形式: printf(格式串,表达式1,表达式2,…);
格式串:由普通字符和转换符构成;
转换格式控制
最少占四位:
printf(“%04d”,12); //不足位补0
printf(“%4.2f”,1.2345); //保留小数点后两位
printf(“%-4d”,112); //左对齐
转义序列
转义字符 说明
\n 回车符
\\ 打印\
%% 打印%
2.格式化输入函数
语法形式scanf(格式串,表达式1,表达式2,…);
如果读出的数据项类型与格式符匹配,继续读入;
否则不再查看剩余的部分,立即返回.
scanf注意事项
以回车确定输入结束.切记:只有大回车才会结束输入.
scanf(“%d%d”,&num1,&num2); //限制输入格式
不要在格式串后面假’\n’字符,否则会抵消人工输入回车.
//百分号中间的数字,表示预留位置,如果预留位置小于实际,则按照实际位置来,如果预留位置大于实际位置,补空格,如果数字前加零则补零.
printf("%05d",12);
//.x表示保留小数点后几位;小数点也占位
printf("%4.2f",1.23456);
//整数表示右对齐,负数表示左对齐
printf("%-4d",123);
printf("%-4dabc",123);
printf("123\n456");
printf("\\");
printf("%%");
//输入时需要一个变量,用来保持输入的值
int n4 = 0;
printf("请输入一个数字:");
scanf("%d",&n4);
printf("n1=%d",n4);
double d1=0;
scanf("%lf",&d1);
*/
//scanf中,比能加\n,不推荐写占位符以外的东西
int num1=0;
*/
//main函数
// 一个程序的开始(入口)
int main()
{
/*
//代码
printf("带你们装B,带你们飞...");
//定义一个变量
//整型
int num1=10;
//短整型
short s1=1;
//长整形
long l1=11110;
//浮点型(单精度)
float f1=1.2;
//双精度浮点型
double d1=65.87;
//字符型
char c1='A';
//赋值运算符=:可以给一个变量赋值
int number1=10;
int number2=20;
//准备另外一个变量,用于临时存放
int temp=0;
temp=number1;
number1=number2;
number2=temp;
//课后思考题
//交换两个值不使用第三个变量
//有两种方式
*/
/*
//算术运算符
//+
// int n1=10+20;
// int n2=n1+10;
// int n3=n1+n2;
// int n4=n1+n2+n3;
//-
// int n1=30-20;
// int n2=n1-10;
// int n3=n2-n1;
// int n4=n3-n2-n1;
//*
// // 除法;使用/0不能做除数
// int n1=10/0;
// //除号两边都是整数,结果也是整数.小数点后的数全部舍去
// int n2=3/2;
// //如果除号两边的数都是浮点型,结果也是浮点型.
// float n3=3.0/2.0;
//%取余运算符两边必须都为整型,取余之后一定小于除数
// int n1=3%2;n1=1;
//++在后
// //n1=0
// int n1=0;
// //n1++;//n
// //如果++在后面,只要这条语句没有执行完,n1++表示的都是原来的值'
// int n3=n1++;
// //n1=1
// int n2=n1;
// //++在前
// int n1=0;
// //++在前先加1,再赋值
// int n2=++n1;
//
int n1=10;
int n2=30;
int n3=n2+n1;
(n3 += n2;) 这个有问题,原来的应该是怎么
*/
/*
//基本输入输出函数
//
printf("蓝欧class20150305");//打印
//格式输出
int n1 = 10;
int n2 = 20;
//占位符
printf("n1 = %d,n2 = %d",n1,n2);
//输出printf的占位符
// 对应类型 转化符
//int %d
//char %c
//long %ld
//short %sd
//float double %f
//练习
int n3 = 20;
// n3*0.5-9;
printf(“%f",n3*0.5-9);
//百分号中间的数字,表示预留位置,如果预留位置小于实际,则按照实际位置来,
如果预留位置大于实际位置,补空格,如果数字前加零则补零.
printf("%05d",12);
//.x表示保留小数点后几位;小数点也占位
printf("%4.2f",1.23456);
//整数表示右对齐,负数表示左对齐
printf("%-4d",123);
printf("%-4dabc",123);
printf("123\n456");
printf("\\");
printf("%%");
//输入时需要一个变量,用来保持输入的值
int n4 = 0;
printf("请输入一个数字:");
scanf("%d",&n4);
printf("n1=%d",n4);
double d1=0;
scanf("%lf",&d1);
*/
//scanf中,不能加\n,不推荐写占位符以外的东西
//%lf
int num1=0;
int num2=0;
scanf("%d",&num1);
scanf("%d",&num2);
printf("num1=%d,num2=%d",num1,num2);
//
//注释:提示代码是做什么的,提示写代码人的思路。
//注释不是代码,不参与执行
//单行注释(没有回车就是一行)
/*
多行注释
可以任意多行
*/
//进制
/*
进制:进位机制
基数:也叫底数,基数为几代表几进制
进制位权
一个通用的描述方式,最低为0位,最后依次加一;
进制为几,权就为几;
进制转换
十进制到n进制,连除倒取余;
n进制转十进制,按权求合;
进制修饰
十进制什么都不加
八进制加0
十六进制加0x
二进制0b(binary system)
*/
/*
stdio标准输入输出
库 函数库 别人写好的一对代码提供给我们使用
return 返回
*/
//main函数
// 一个程序的开始(入口)
int main()
{
/*
//代码
printf("带你们装B,带你们飞...");
//定义一个变量
//整型
int num1=10;
//短整型
short s1=1;
//长整形
long l1=11110;
//浮点型(单精度)
float f1=1.2;
//双精度浮点型
double d1=65.87;
//字符型
char c1='A';
//赋值运算符=:可以给一个变量赋值
int number1=10;
int number2=20;
//准备另外一个变量,用于临时存放
int temp=0;
temp=number1;
number1=number2;
number2=temp;
//课后思考题
//交换两个值不使用第三个变量
//有两种方式
*/
/*
//算术运算符
//+
// int n1=10+20;
// int n2=n1+10;
// int n3=n1+n2;
// int n4=n1+n2+n3;
//-
// int n1=30-20;
// int n2=n1-10;
// int n3=n2-n1;
// int n4=n3-n2-n1;
//*
// // 除法;使用/0不能做除数
// int n1=10/0;
// //除号两边都是整数,结果也是整数.小数点后的数全部舍去
// int n2=3/2;
// //如果除号两边的数都是浮点型,结果也是浮点型.
// float n3=3.0/2.0;
//%取余运算符两边必须都为整型,取余之后一定小于除数
// int n1=3%2;n1=1;
//++在后
// //n1=0
// int n1=0;
// //n1++;//n
// //如果++在后面,只要这条语句没有执行完,n1++表示的都是原来的值'
// int n3=n1++;
// //n1=1
// int n2=n1;
// //++在前
// int n1=0;
// //++在前先加1,再赋值
// int n2=++n1;
//
int n1=10;
int n2=30;
int n3=n2+n1;
(n3 += n2;) 这个有问题,原来的应该是怎么
*/
/*
//基本输入输出函数
//
printf("蓝欧class20150305");//打印
//格式输出
int n1 = 10;
int n2 = 20;
//占位符
printf("n1 = %d,n2 = %d",n1,n2);
//输出printf的占位符
// 对应类型 转化符
//int %d
//char %c
//long %ld
//short %sd
//float double %f
//练习
int n3 = 20;
// n3*0.5-9;
printf("%f",n3*0.5-9);
//百分号中间的数字,表示预留位置,如果预留位置小于实际,则按照实际位置来,如果预留位置大于实际位置,补空格,如果数字前加零则补零.
printf("%05d",12);
//.x表示保留小数点后几位;小数点也占位
printf("%4.2f",1.23456);
//整数表示右对齐,负数表示左对齐
printf("%-4d",123);
printf("%-4dabc",123);
printf("123\n456");
printf("\\");
printf("%%");
//输入时需要一个变量,用来保持输入的值
int n4 = 0;
printf("请输入一个数字:");
scanf("%d",&n4);
printf("n1=%d",n4);
double d1=0;
scanf("%lf",&d1);
*/
//scanf中,比能加\n,不推荐写占位符以外的东西
int num1=0;
int num2=0;
scanf("%d",&num1);
scanf("%d",&num2);
printf("num1=%d,num2=%d",num1,num2);
//
//
//返回,我OK了,
return 0;
//
}
#include <stdio.h>
int main1(int argc, const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
/*
2.基本数据类型
关键字 说明 字节大小
char 字符类型 1
short 短整型类型 2
int 整型类型 4
float 单精度浮点类型 4 带小数的
long 长整形类型 4或8
double 双精度浮点类型 8
*/
//最高位是符号位,0正1负
//1~127 -128~ -1
/*
3.常量(程序运行中不可改变的量)和变量(相当于一个容器或位置)
数字做符号来用的话,必须加单引号
定义一个变量,整型
变量命名规定
只能由数字/字母/下划线组成.并且数字不能开头.
不可能与系统保留字同名
不能使用重复的变量名
见名知意(规范)
5.复合运算符
a=a+b
a+=b
6.表达式
表达式:常量/变量与运算符的组合.
7.语句
语句是程序执行的最小单位,以分号结尾.
8.基本输入输出函数
*/
//返回,我OK了,
return 0;
//
}
#include <stdio.h>
int main1(int argc, const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
(库函数:http://baike.baidu.com/link?url=evBXQk2wgRMM5L4GrlhIdV0qSadNHl0HmJWSFezYH1FmPfOCwWJ5qGDzE2SX2Kr_3j401u5UIiKbwqeZtFAVQ_)
int getchar()//从标准输入设备读入一个字符
int putchar()//向标准输出设备写出一个字符
int scanf(char*format[,argument…])//从标准输入设备读入格式化后的数据
int printf(char*format[,argument…])//向标准输出设备输出格式化字符串
char gets(char*string)//从标准输入设备读入一个字符串
int puts(char*string)//向标准输出设备输出一个字符串
int sprintf(char*string,char*format[,…])//把格式化的数据写入某个字符串缓冲区