学习内容
一 、注释的作用
- // 单行注释 但 不能换行
- /...../ 多行注释 但 可换行
二 、 #include的作用
- include 宏 导入头文件。如果系统已经提供某些功能的实现,只需要使用include将这些功能所在文件导入进来就可以了。
- < > 用来导入系统提供的类库。 例 : stdio.h stdlib.h math.h string.h
- " " 用来导入自己定义的文件。例 : calculate.h
- #include <stdio.h> 编译器首先从系统的类库里面去查找这个头文件,如果没有,再到自己的文件中查找,否则报错。
- #include "stdio.h" 编译器首先在自己的文件中去查找这个头文件,如果没有再到系统的类库里面查找,否则报错。
三 、 main函数介绍
- main函数 = 代码块 = 完成特定功能, 所有程序的入口点都是main函数。
- int 返回值,用来记录当前程序的运行状态,0: 正常结束 资源自由分配, 非0:异常结束 没收资源。
- int argc : 参数个数 argument count ,char* argv[ ] : 每个参数组成的字符串数组。
int main(int argc,char *argv[ ] ){
printf("%d\n",argc);
printf("%s\n",argv[ ]);
return 0;
}
输出:
1
四 、printf函数格式类型
- printf输出语句,用来让终端输出数据。
- 打印常量字符串 : printf("hello world");
- 转义字符: \n 的意识是回车换行,讲当前位置移到下一行的开头。 \r 的意思是回车,将当前位置移到本行的开头。\t 的意思是水平制表符,将当前位置移到下一个tab位置。
int main(int argc,char *argv[ ]) {
printf("hello world\t");
printf("%d\n",argc);
printf("%s\r",argv[0]);
getchar();
return 0;
}
输出结果 : hello world 1
五 、 C语言的基本数据类型
#include <stdio.h>
#include <stdbool.h>
int main(){
int count = 0;
count = 3;
//%d
//%02d 不足两位的用0补齐
printf("i have %02d dogs\n",count);
long size = 230;
printf("%ld\n",size);
float score = 3.1415926;
printf("%.2f\n",score);
//中文占据2个字符
//%c 字符
//%d 字符对应ASCII码值
char choose = 'c';
printf("%c\n",choose);
printf("%d\n",choose);
六 、scanf函数的格式化输入
- scanf输入语句,用来向终端你输入数据。
int a = 0;
scanf("%d",&a);
printf("%d",a);
- 当用户在终端输入数据时,数据会被存放到缓冲流,scanf用于在缓冲流中找到数据将其放到指定位置。
- 放入到给定位置就是保存输入的数据,保存数据需要用到变量,我们只需要把数据送到对应变量的地址
,就存储好了该数据,就可以通过该变量使用数据,所以使用&获得变量a的地址。
int a = 0;
scanf("jack%d",&a);
printf("%d %d",a , b);
- 此时输入的数据必须按照 jack+数据 的格式,才可以将数据送入到变量中。所以,scanf函数中" "里面的内容用来控制输出格式。
int a = 0;
scanf("%d %d", &a,&b);
printf("%d %d",a,b);
- 利用上面的输入格式一次性输入两条数据
七 、变量
- 变量是程序可操作的存储区名称;变量的类型决定了变量的大小;变量的名称可以有下划线,字母,数字组成,它必须以字母或者下划线开头。简单地说变量就是用来记录数据的。
- 变量的声明 : 没有分配内存空间,使用的时候才会分配, 如 :int a;
- 变量的定义 :立刻为我们分配内存空间 赋初值 ,如 :int a = 0;
- 变量的使用 :
int num1,num2;
scanf("%d %d",&num1,num2);
printf("%d\n",num1,num2);
- bool类型的变量(需要导入stdbool.h),其值非零即真 ,零为假。
bool status = -3;
printf("%d\n",status);
八、 运算符
+ - * 加减乘
/ 除 取整数部分 7 / 3 = 2
% 取余数部分 7 % 3 = 1
x % 16 + 1 = 1 ... 16;
x % 51 + 50 = 50 ...100
&& 且 两个同时成立 1>2 && 2>1;
|| 或 只要一个成立就可以1>2 || 2>1
++ 自增 a++,++a;
-- 自减
+= a += 2;
!= 1 != 2
== 判断 a==2
= 赋值
float r = 3 / 2;
printf("%f\n",r);
int a = 20;
if(++a ==20){
printf("a = 20\n");
printf("a = %d\n",a);
}else{
printf("a != 20\n");
printf("a = %d\n",a);
}
printf("a = %d\n",a);
if(a==2){
printf("a = 2\n");
}
return 0;
九、 循环 : if
- if语句的形式:C语言吧任何非0和非null的值假定为ture,把0和null假定为false。
if(){
}
if(){
}else{
}
if(){
}else if(){
}else if(){
}else{
}
*/
/*当某种条件成立 才做事情
if(条件-true非0 -false=0){
成立要做的事情
}
十、工资实战
优化前
#include <stdio.h>
int main(){
int salary = 0;//记录工资
int pay = 0; //税后工资
//接收输入
printf("请输入工资:");
scanf("%d",&salary);
//开始计算
if(salary < 5000){
pay = salary;
}else if(salary > 5000 && salary < 8000){
int tax = (salary - 5000)*0.1;
pay = salary - tax;
}else if(salary > 8000 && salary < 10000){
int tax = (salary-8000)*0.15 + 3000*0.1;
pay = salary - tax;
}else{
int tax = (salary - 10000)*0.2 + 2000*0.15 + 3000*0.1;
pay = salary - tax;
}
printf("到手工资: %d",pay);
return 0;
}
优化后
#include <stdio.h>
int main(){
int salary = 0;//记录工资
int tax = 0; //税
//接收输入
printf("请输入工资:");
scanf("%d",&salary);
//开始计算
if(salary < 5000){
pay = salary;
}else if(salary > 5000 && salary < 8000){
int tax = (salary - 5000)*0.1;
}else if(salary > 8000 && salary < 10000){
int tax = (salary-8000)*0.15 + 3000*0.1;
}else{
int 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","nineteen"};
//保存十位
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;
}