目的:掌握用C语言编程的基本技能
内容: 1. 注释的使用
2. #include的作用
3. main函数的使用
4. printf函数格式化输出
5.scanf函数格式化输入
6.C语言基本数据类型
7.变量
8. 运算符
9.循环:if
10.工资计算实战
11.年龄转换实战
注释的使用
- //注释内容 单行注释:注释内容较简短且为一行的情况下使用
- /* 注释内容 */ 多行注释:注释内容较多且为多行的情况下使用
- / ** 注释内容 */ 文档注释(用于生成开发者文档):java语言特有的注释,其中的注释内容可以被JDK提供的工具javadoc所解析,生成一套能够以网页形式体现程序的说明文档
#include的作用
- include---宏 用来导入头文件。如果系统已经提供某些功能的实现,只需要使用include将这些功能所在的头文件导入进来
- < > 用来导入系统提供的类库,如:stdio.h stdlib.h math.h string.h
" " 用来导入自己定义的头文件,如:calculate.h- include<stdio.h> 编译器首先从系统的类库里面去查找这个头文件,如果没有,再到自己的文件中查找,否则报错
main函数的使用
- main函数=代码块=完成特定功能,所有程序的入口都是main函数
- int返回值,用来记录当前程序的运行状态,0:正常结束 资源自由分配,非0: 1 异常结束 没收资源
int argc:参数个数 argument count;char* argv[ ]:每个参数组成的字符串数组
printf函数格式化输出
- printf输出语句,用来让终端输出数据
- 打印常量字符串:printf("hello world");
转义字符:\n表示回车换行,从当前位置移到下一行的开头;\r表示回车,从当前位置移到本行的开头;\t表示水平制表符,从当前位置移到下一个tab位置
scanf函数格式化输入
- scanf输入语句,用来向终端输入数据
- 当用户在终端输入数据时,数据会被存放到缓冲流,scanf用于在缓冲流中找到数据并将其放入到给定的位置
- 放入到给定的位置就是保存输入的数据,保存数据需要用到变量,我们只需要把数据送到对应变量的地址就可以存储该数据,并通过该变量使用该数据。所以使用&获得变量pwd的地址
int pwd=0; scanf("%d",&pwd); printf("pwd=%d\n",pwd);
- 利用如下格式可一次性输入两条数据
int num1,num2; scanf("%d %d",&num1,&num2); printf("%d %d\n",num1,num2);
- 注意:不要在scanf里随便写内容,scanf函数中" "里的内容是用来控制用户输入格式的。如下,此时输入数据必须按rose+数据的格式,才可以将数据送入到变量中
int pwd=0; scanf("rose%d",&pwd); printf("pwd=%d\n",pwd);
C语言基本数据类型
1.首先明确, C语言并没有具体规定哪个基本类型应该有多少字节数,而且这个与OS、编译器有关
- 虽然16位、32位或者64位的机子各种类型并不一样,但有几条规则(ANSI / ISO制定):
- short 至少占用2个字节
- int 建议为一个机器字长,32位环境下为4个字节,64位环境下为8个字节
- short 的长度不能大于int,long 的长度不能小于int
- 基本数据类型参考:
- char 字符,如:'a','d'
- short 短整型
- int 整型,如:1,67
- long 长整型
- float 单精度浮点数,如:1.5,78.0
- double 双精度浮点数
可自己使用 printf("%d\n",sizeof(int)); 测试具体的数据
- 控制输出格式:
- %md:要求输出字段宽度为m,右对齐,不够左端补空格,大于m按实际输出,如%3d
- %0md:要求输出字段宽度为m,右对齐,不够左端补0,大于m按实际输出,如%02d
- %m.nd:要求输出字段宽度为m,右对齐,后面n个位置当作小数,没有的补0,最前面m-n个没有的补空格,如%3.2d
- 注意:
- C语言中printf输出float和double都可以用%f,而double型数据还可以用%lf
- scanf当中,若是对双精度的变量赋值,必须是%后跟lf;printf当中可以用%f也可以用%lf
- printf()只会看到双精度数,printf的%f格式总是得到double,所以在printf()中使用%f和%lf的输出显示效果是一样的
- 对于变量来说,double类型比float类型的精度要高。double精度更高是指它存储的小数位数更多,但是输出默认都是6位小数。如果你想输出更多小数,可以自己控制,比如%.10lf就输出10位小数
变量
- 变量是程序可操作的存储区的名称;变量的类型决定了变量存储的大小;变量的名称可以由下划线、字母、数字组成,它必须以字母或者下划线开头。简单来说,变量就是用来记录数据的。
- 变量的声明:没有分配内存空间,使用的时候才会分配,如 int a;
- 变量的定义:立刻为我们分配内存空间 赋初值,如 int a = 0;
- 变量的使用:
int num1,num2; scanf("%d %d",&num1,&num2); printf("%d %d\n",num1,num2);
- bool类型的变量(需要导入stdbool.h),其值:非零即真(1),零为假(0)
bool status=-3;//false printf("%d\n",status);//结果是1
运算符
- 算术运算符:
- + 加
- - 减
- * 乘
- / 除或取整
- % 取余
- ++ 自增运算符,整数值加1
- -- 自减运算符,整数值减1
注意:a++是先赋值后运算,++a是先运算后赋值
- 逻辑运算符:
- && 且,如果两个操作数都非零,则条件为真
- || 或,如果两个操作数有任意一个非零,则条件为真
- * 非,逆转操作数的逻辑状态
- 关系运算符
- == 检查两个操作数的值是否相等,如果相等则条件为真
- != 检查两个操作数的值是否相等,如果不相等则条件为真
- > 判断左操作数的值是否大于右操作数的值,如果是则条件为真
- < 判断左操作数的值是否小于右操作数的值,如果是则条件为真
- >= 判断左操作数的值是否大于或等于右操作数的值,如果是则条件为真
- <= 判断左操作数的值是否小于或等于右操作数的值,如果是则条件为真
- 赋值运算符
- = C=A+B表示将A+B的值赋给C
- += C += A相当于C = A + C
- -= C -= A相当于C = A - C
- *= C *= A相当于C = A * C
- /= C /= A相当于C = A / C
- %= C %= A相当于C = A % C
循环:if
if语句的形式:C语言把任何非0和非null的值假定为true,把0或null假定为false
问号表达式(也称之为三目运算符):
(表达式1)?(表达式2):(表达式3),如果表达式1成立则执行表达式2,否则执行表达式3
a > b ? s = a + b : s = a - b
这里的例子:如果a>b,那么s的值为a+b,否则s的值为a-b
- 逗号表达式:
将两个及以上的式子连接,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值
例如:(1+2,3+5)称为逗号表达式,其求解过程先1+2,后3+5,整个表达式的值为8int temp = 1; if(temp--,temp){ printf("temp是1"); }else{ printf("temp是0"); } //输出结果:temp是0
工资计算实战
#include <stdio.h> int main(){ int salary = 0;//记录工资 int tax = 0;//税 //接收输入 printf("请输入工资:"); scanf("%d",&salary); //开始计算 if(salary <= 5000){ } else if(salary > 5000 && salary <= 8000){ tax= (salary - 5000)*0.1; } else if(salary > 8000 && salary <=10000){ tax = (salary - 8000)*0.15 + 3000*0.1; } else{ tax = (salary - 10000)*0.2 + 2000*0.15 + 3000*0.1; } //输出工资 printf("到手工资:%d",salary -tax); return 0; }
年龄转换实战
#include <stdio.h> //输入年龄 20 //your age is twenty; int main(){ int age = 0; //保存个位数 21%10 = 1 char* gewei[] = {"","one","two","three","four","five","six","seven","eight","nine"}; //保存10-19 char* temp[] = >{"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","ninet>een"}; //保存十位 char* shiwei[] = {"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; printf("请输入年龄:"); scanf("%d", &age); char *name;//保存每次取出的字符串 if(age < 10){ //直接访问各位数数组 name = gewei[age]; }else if(age >= 10 && age <= 19){ //获取个位数 int index = age % 10; name = temp[index]; } else{ //获取个位数 int g = age % 10; //获取十位数 int s = age / 10; //取出对应的单词 int sString = shiwei[s-2]; int gString = gewei[g]; printf("your age is %s-%s\n" ,sString,gString); //程序还未运行完毕就提前结束 return 0; } printf("your age is %s\n",name); return 0; }
注:仅用于1~99岁的转换