学习内容
快速打字技巧
C和C++的区别
程序开发的过程
#include和main函数介绍
printf和scanf的运用
变量
运算符
问号表达式和逗号表达式
工资实战
年龄转换实战
一、快速打字技巧
手指的正确摆放位置
- 左手
小拇指:a q 1 z ctrl tab shift
无名指:s w 2
中指:d e x 3 4
食指:f g r t c v 5 6- 右手
小拇指:;p ‘【 】{ } - = enter / ?
无名指:l o . 0
中指:k i 8 9 ,
食指:j h m n b u y 7
二、C和C++的区别
之前没学过C语言,只学过C++,来到这里又学习了C语言了,在之前个人认为C与C++的区别很小,基本上就是printf与scanf这点输出和输入的区别了,如果还有什么区别的话那就是要包含的头文件是不同的。比如在C++中,是#include<iostream>,而在C中#include<stdio.h>。在这里又学到一个面向的区别:
- C是面向过程
- C++面向对象(移植 复用)
eg:上课
C:找过程 小王,走进教室,拿出电脑,开始听东哥的课
C++:找对象 谁上课 Teacher(姓名 身高 年龄 授课)->东哥
谁来听 Student(姓名 身高 年龄 学号 选修课)->小王
什么课 Subject (课程编号,课程名称)->Android开发
哪里上Classroom(编号 座位数)->5405
怎么上 Computer(。。。)->ASUS
三、程序开发的过程
1.写代码-文本编译器
#include<stdio.h> int mian(){ printf("Hello World!"); return 0; }
2.预编译->编译器(制定规则)
gcc -E test.c -o test.i
a.检查语法错误
b.展开3.编译->高级语言转化为汇编代码
gcc -S test.i -o teat.s
a.检查语法错误
b.转化为汇编语言4.汇编->把汇编代码转化为二进制数据
gcc -c test.s -o test.o
a.转化为目标文件5.链接->把所有的目标文件链接为可执行的程序
gcc -o tset.o test
四、#include和main函数的介绍
1.#include
- include -宏 用来导入头文件。如果系统已经提供某些功能的实现,只需要使用include将这些功能所在的头文件导入进来就可以了
- < > 用来导入系统提供的类库,如:stdio.h stdlib.h math.h string.h
" " 用来导入自己定义的头文件,如: calculate.h。- #include <stdio.h 编译器首先从系统的类库里面去查找这个头文件,如果没有,再到自己的文件中查找,否则报错。
- #include "stdio.h" 编译器首先从自己的文件里面去查找这个头文件,如果没有,再到系统的类库中查找,否则报错。
2.main函数- main(int argc, char** argv)函数 所有的程序的入口点都是main函数
- int 函数返回值, 记录当前程序的运行状态
0:正常结束 资源自由分配 ,非零:1 异常结束 没收资源。- int argc:参数个数, char*argv[ ]: 每个参数组成的字符串数组 。
- 注释的应用://用来注释单行 /* 注释内容
*/ 用来注释多行
五、printf和scanf的运用
在调用printf与scanf的时候一定要包含#include<stdio.h>。
- printf 的用法是:printf("格式控制字符串",输出参数一,输出参数二)。
格式控制字符串包含:格式控制说明,普通字符。
格式控制说明主要是按指定的格式输出数据,包含以%开头的格式控制字符,不同类型的数据采用不同的格式控制字符(int型用%d,float和double用%f)。
普通字符就是在输出数据的时候,按照原样输出的字符,如:"jrs=%d,siu=%d\n"中的jrs=,siu=这些。- scanf 的用法是:scanf("格式控制字符串",输入参数一,输入参数二)。
格式控制字符串包含:格式控制说明,普通字符。
格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)。
普通字符:和上面谈到的printf的用法是一样的。
输入的参数是变量的地址,所以要在变量前面加&,还有不要乱加东西到格式控制字符串中。
----------格式控制说明---------------------------------------------------------
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
---------一些特殊规定字符---------------------------------------------------------
\n 换行
\f 清屏并换页
\r 回车
\t Tab符
\xhh 表示一个ASCII码用16进表示,
其中hh是1到2个16进制数
六、变量
int 整型数据 1 2 3 4 5
long 长整型 容纳位数更多12344564646154
short 短整型
float 单精度浮点数 1.5 94.3
double 双精度浮点数 1.4
char 字符 'a' 'b'
string 字符串 "jack" "rose"
boul 布尔型 是、成立、真true 否、不成立、假false
输入符号的区别与运用:
1.int型的输入用%d;
2.long型的输入用%ld;
3.float型的输入用%f;
4.double型的输入用%lf;(输出时double型可用%f或%lf)
5.一个字符的输入用%c;
6.输入一个字符串用%s;
输出符号的区别与运用:
1.%d,以十进制输出一个整型值;
2.%o,以八进制输出一个整型值;
3.%x,以十六进制输出一个整型值;
4.%g,打印一个浮点值;
5.%c,打印一个字符;
6.%s,打印一个字符串;
七、运算符
+、-、*加减乘
/ 除 取整数部分 7/3=2
% 取余数部分 7%3=1
余数范围举例:x%5=范围0~4 x%51+50=范围50~100
&& 且 两个同时成立 1>2&&2>1 no
// 或 只要一个成立就可以 1>2&&2>1 yes
++ 自增 a++先判断后执行 ++a先执行后判断,--同理。
八、问号表达式和逗号表达式
- 问号表达式又称为三目表达式
char c; if(3>1){ c='y'; } else{ c='n'; }
可转化为c=3>1?'y';'n';
- 逗号表达式
参数类型 参数=(表达式一,表达式二,表达式三 );
只输出最右边的值int temp=20; int t2=(temp--,temp--,temp--); if(t2){ printf("temp=%d\n",temp);//t1=17 printf("t2=%d\n",t2);//t2=18 } return 0;}
九、工资实战
/*题目:
输入工资 计算税后工资
<5000
5k-8k 10%
8k-10k 15%
>10k 20%
例如 10000:salary=10000-(10000-8000)*0.15-(8000-5000)*0.1=9400
*/
#include <stdio.h>
int main()
{
float x;//税前工资
float salary;//税后工资
float tax; //税
printf("请输入你的工资:");
scanf("%f",&x);
if(x>=10000)
tax=(x-10000)*0.2+300+300;
else if(x>=8000&&x<10000)
tax=(x-8000)*0.15+300;
else if(x>=5000&&x<8000)
tax=(x-5000)*0.1;
else tax=0;
salary=x-tax;
printf("你的税后工资是:%f\n",salary);
return 0;
}
感悟:
- 不要将C和C++混着用,容易出错并且不美观。
- 方法有多种,但是总体思路是不变的。
- 要学会举一反三。
十、年龄转化实战
#include <stdio.h>
int main()
{
int age=0;
//保存个位数
char* gewei[]={"","one","two","three","four","five","six","seven","eight","eight","ten"};
//保存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;//个位
char* sString=shiwei[s-2];
int s=age/10;//十位
char* gString=gewei[g];
printf("you age is %s-%s\n",sString,gString);
return 0;//程序还没运行完提前结束,不出现下一个printf
}
printf("you age is %s\n",name);// %s输出格式为字符串
return 0;
}
感悟:
- 这个项目涉及到if语句、数组、指针的知识,其中,指针还不太熟练,需要再补补联系啊。
-存在一个bug,输出的时候20~90之间的整十位输出时会带个小尾巴20-,需要单独将他们挑出来输出。