总览:
1. 头文件
2. Main函数
3. 返回值
4. 集成开发环境IDE
5. 关键字
6. 注释
7. printf和scanf
8. 数据类型
9. ATM模拟(2种)
10. ATM模拟(有密码)
目的:学习c语言
技术:
头文件:
“ ”表示编译器会首先从自己的工程里去查找这个头文件,如果没有那么会从系统库里查找。
< >表示编译器会首先从系统库里查找这个头文件,如果没有那么会从自己工程里去查找。
Main函数:任何一个程序必须有一个入口点
返回值:int标识这个程序的运行结果 0正常 1失败
0:程序正常退出,程序的资源自己分配
1:非正常退出,程序会没收运行过程中获取的资源
集成开发环境IDE
写代码:文本编辑器文本文档Sublime
编译:编译器:将高级语言转化为低级语言—预编译/预处理(将头文件展开)—汇编(将高级语言转化为汇编语言)—编译(得到二进制数据)—链接->可执行程序.exe—运行 javac gcc 编译原理
关键字:编译器定义的char char *String(ps:不能用关键字给变量命名)
单行注释://
多行注释:/* */不能嵌套 对一个方法函数注释
Printf(“a = %02\n”,a);
int %d %02d不足的补齐
64位系统中占4个字节 32位占2个字节
定义一个整形:Int a =1;立刻为我们分配内存空间 赋初值1
声明一个整型变量int b; b = 2 ;没有分配内存空间 使用的时候才分配
float %f %.1f小数点后6位
double %f打印时和float一样保存6位数字 计算时不会
long长整形 %ld 20字节
char %c
char *%s
size_t len = sizeof(int);判断所占字节
从终端输入数据scanf(“%d”,& );中介是操作系统
1. 终端输入20 a b
2. 操作系统的io流来接收 缓存 20 a b
3. 将io流放到对应的内存空间 20-> 01x100;
getchar会将换行符也读取进来
应用实例:银行ATM界面内* * *****欢迎光临* * *****1.取款2.存款3.更改密码4.退出0输入不合法请重新输入6输入不合法请重新输入1
If的使用:
判断是否合法
条件:非0即真 0即假
If( ); if( ); else if( ); if( );else;
switch (i){
case 1:
print(“ ”);
braek;
default:
;
技术的实现:
代码1:
```
#include "stdafx.h"
#include "iostream"
int _tmain(int argc, _TCHAR* argv[])
{ int choice=0;
//欢迎界面
printf("**************************\n");
printf("欢迎使用 \n");
printf("**************************\n");
printf("1.取款\n2.存款\n3.设置密码\n4.退出\n");
//显示操作
printf("请选择操作");
while(1)
{ scanf("%d",&choice);
switch(choice)
{
case 1:
printf("请取款\n");
break;
case 2:
printf("请存款\n");
break;
case 3:
printf("设置密码\n");
break;
case 4:
printf("退出\n");
break;
default:
printf("输入错误,请重新输入:");
break;
}
}
system("pause");
return 0;
}
```
代码2:
#include "stdafx.h"
#include "iostream"
int _tmain(int argc, _TCHAR* argv[])
{ //欢迎界面
printf("**************************\n");
printf("欢迎使用 \n");
printf("**************************\n");
printf("1.取款\n2.存款\n3.设置密码\n4.退出\n");
//显示操作
printf("请选择操作");
int i;
scanf("%d",&i);
for(int j=0;j<999;j++)
{
if(i==1||i==2||i==3||i==4)
/*
用if(0
*/
{
printf("请继续操作\n");
break;
}
else{
printf("输入不合法,请重新输入\n");
scanf("%d",&i);
}
}//判断选择是否合法
system("pause");
return 0;
}
变量的作用域:从定义到结束的作用范围
局部变量
循环:
for( ) //和数组相关,并且需要知道第几次
执行流程
i=0
I<10
i++
//i++是在一次循环结束之后才执行
continue结束当前循环,继续下次循环
break跳出当前循环
while( ) //不关心第几次
应用实例2:
* * *****欢迎光临* * *****请输入密码:123错误-> 密码错误请重新输入: 最多输入4 -> 此卡已冻结 请联系客服 -> 退出正确->1.取款请输入取款金额:200-> 取款成功 当前余额为20->余额不足 是否继续Y/N 2.存款请输入金额:2000 -> 存款成功 当前余额:3000!3.更改密码请输入原始密码->请设置密码->请确认密码4.退出请选择操作:用函数实现
代码:
#include "stdafx.h"
#include "iostream"
int _tmain(int argc, _TCHAR* argv[])
{ int choice=0;
int pass=123;
int money=100000;
//欢迎界面
printf("**************************\n");
printf(" 欢迎使用 \n");
printf("**************************\n");
printf("请输入密码:");
int p;
scanf("%d",&p);
if(p==pass)
{
int y=1;
while(y==1)
{
printf("1.取款\n2.存款\n3.设置密码\n4.退出\n");
printf("请选择操作");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("请输入取款金额:");
int m;
scanf("%d",&m);
if(m<=money)
{
money=money-m;
printf("取款成功,您的余额为:%d元,是否继续1/0(1继续,0结束)\n",money);
int c1;
scanf("%d",&c1);
if(c1==y)
break;
else
y=0;
}
else
{
printf("您的余额不足!请重新选择操作\n");
}
break;
case 2:
printf("请输入存款金额\n");
int m2;
if( m2 >0)
{
money=money+m2;
printf("存款成功,您的余额为:%d元是否继续1/0(1继续,0结束)\n",money);
int c2;
scanf("%d",&c2);
if(c2==y)
break;
else
y=0;
}
case 3:
printf("请输入原始密码\n");
int p;
scanf("%d",&p);
if(p==pass)
{ int p1;
printf("请输入新密码:");
scanf("%d",&p1);
int p2;
printf("请确认密码:");
scanf("%d",&p2);
if(p1=p2)
{
pass=p1;
printf("密码修改成功,是否继续1/0(1继续,0结束");
int c1;
scanf("%d",&c1);
if(c1==y)
break;
else
y=0;
}
else
{
printf("密码输入不一致,请重新输入:");
scanf("%d",&p2);
if(p1=p2)
{
pass=p1;
printf("密码修改成功,是否继续1/0(1继续,0结束");
int c1;
scanf("%d",&c1);
if(c1==y)
break;
else
y=0;
}
}
}
else
{
for(int i=3;i>=0;i--)
{
if(i>0)
{
printf("输入错误,您还有%d次机会\n",i);
printf("请输入密码:");
scanf("%d",&p);
}
else
{
printf("密码多次错误,卡已冻结,请练习客服!\n");
y=0;
}
}
break;
}
case 4:
printf("退出\n");
y=0;
break;
default:
printf("输入错误,请重新输入\n");
break;
}
}
}
else
{
for(int i=3;i>=0;i--)
{ if(p==pass)
{
int y=1;
while(y==1)
{
printf("1.取款\n2.存款\n3.设置密码\n4.退出\n");
printf("请选择操作");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("请输入取款金额:");
int m;
scanf("%d",&m);
if(m<=money)
{
money=money-m;
printf("取款成功,您的余额为:%d元,是否继续1/0(1继续,0结束)\n",money);
int c1;
scanf("%d",&c1);
if(c1==y)
break;
else
y=0;
}
else
{
printf("您的余额不足!请重新选择操作\n");
}
break;
case 2:
printf("请输入存款金额\n");
int m2;
if( m2 >0)
{
money=money+m2;
printf("存款成功,您的余额为:%d元是否继续1/0(1继续,0结束)\n",money);
int c2;
scanf("%d",&c2);
if(c2==y)
break;
else
y=0;
}
case 3:
printf("请输入原始密码\n");
int p;
scanf("%d",&p);
if(p==pass)
{ int p1;
printf("请输入新密码:");
scanf("%d",&p1);
int p2;
printf("请确认密码:");
scanf("%d",&p2);
if(p1=p2)
{
pass=p1;
printf("密码修改成功,是否继续1/0(1继续,0结束");
int c1;
scanf("%d",&c1);
if(c1==y)
break;
else
y=0;
}
else
{
printf("密码输入不一致,请重新输入:");
scanf("%d",&p2);
if(p1=p2)
{
pass=p1;
printf("密码修改成功,是否继续1/0(1继续,0结束");
int c1;
scanf("%d",&c1);
if(c1==y)
break;
else
y=0;
}
}
}
else
{
for(int i=3;i>=0;i--)
{
if(i>0)
{
printf("输入错误,您还有%d次机会\n",i);
printf("请输入密码:");
scanf("%d",&p);
}
else
{
printf("密码多次错误,卡已冻结,请练习客服!\n");
y=0;
}
}
break;
}
case 4:
printf("退出\n");
y=0;
break;
default:
printf("输入错误,请重新输入\n");
break;
}
}
}
if(i>0)
{
printf("输入错误,您还有%d次机会\n",i);
printf("请输入密码:");
scanf("%d",&p);
}
else printf("密码多次错误,卡已冻结,请练习客服!\n");
}
}
system("pause");
return 0;
}
———————————————————————————————————————
总结:
进一步了解了C语言里数据类型,及它们在32位和64位系统中所占的字节。同时回忆了循环语句和条件语句的用法等。对编程的逻辑思维有了更进一步的认识,一切都在往好的方向发展。