Android_开发_Day2_C语言基础

Android_开发_Day2_C语言基础


一、简单C语言程序hello word的输出解读

<1>每个C程序都会有个头文件stdio.h的导入,其中包含了常用函数scanf,printf。导入时用分号与尖叫号的区别是,用分号编译器会先在该工程中去寻找,后到系统库去寻找,而尖角符号刚好相反。

<2>程序接入点main函数的解读,main函数作为一个程序的主函数它有数据类型,自然有返回值,而返回值就是该函数成功执行的标志,main函数的返回值0代表成功运行,1则表示失败。程序正常退出,程序资源自己分配,非正常退出,程序会没收运行过程中获取的资源。

<3>集成开发环境IDE。一个程序的诞生过程:

写代码:文本编辑器  文本文档  Sublime

编译:编译器(将高级语言如C,Java,C++,转化成低级语言机器代码)  javac  gcc  编译原理:1.预编译/预处理 将头文件进行展开->完整的程序                2.汇编  将高级语言转化为汇编语言   3.编译  二进制数据  4.链接  1.0  2.0  3.0 ->可执行程序.exe  5.运行。

显示结果:console。

二、从C数据类型到循环

<1>main函数的参数即运行时传入main函数的参数,用终端运行时可以向其传入参数,但一般集成开发环境不会让你传入参数。

<2>关键字:编译器定义的  char  不能用关键字命名

<3>注释,分单行注释和多行注释  单行://……   多行/*……*/。对函数注释的内容一般包括:函数功能,参数个数和类型,及其返回值

<4>printf的输出时的技巧:int %d  float(double) %f  long  %ld  char  %c  char * %s    格式控制符%02d可以输出02,05等日期,前面加0可以占位,如果是%5.6f就表示总共5位,小数点后面有6位,如果超了就不管了只管小数点后面的,并且还可以自动四舍五入,当然如果只想保留小数位那直接%.6f就行了。64位系统里面占4个字节,在32位系统里面占2个字节(1字节=八位)。int型能表示的最大数看系统和编译器,如果是64位的系统一个整形4字节,一个字节八位总共32位,即2^(32)。如果用%d的格式输出字符常量的话会输出其ascll码,反之亦然,因此可以用来轻松输出字母a~z,代码如下:

#include "stdafx.h"

#include "iostream"

int _tmain(int argc, _TCHAR* argv[])

{

for (int i = 97; i <123; i++)

{

printf("%c\n", i);

}

system("pause");

return 0;

}

<5>从终端输入用scanf函数,使用时注意要取址&。终端输入到数值接收有一个过程:

1.终端输入  20  a  b  

2.操作系统的io流来接收  缓存  20  a  b

3.将io流放到对应的内存空间  20->0x100

因此连续用scanf函数时要注意缓存的问题同时最后敲的回车键即换行符\n也会被计入缓存 。清除缓存可以用getchar()函数,也可以用fflush(stdin);命令行。

<6>if条件语句,若括号里面的内容非“0”即真。格式有if--else,if--else if--else,switch。

<7>循环语句while,for。for循环中的有3个参数分别是定义,条件,运算,如for(int i=0;i<10,i++){……},执行顺序是从左往右依次进行,若执行条件时满足,则转入执行大括号内的内容,执行完后继续往右执行,全部完成后又开始从条件执行,直到条件不满足为止。应用,如输出1-10中的奇数,代码如下:for(int i=1;i<=10,i+=2){

printf("%d",i);

}

break和continue的区别,break直接不干了,continue本次循环不干了。

三、选择语句、循环语句的实战运用

写一个ATM取款机的程序,界面要求:

UI:

******************************

                  欢迎

******************************

1.取款

2.存款

3.设置密码

4.退出

请选择:

程序要求:

1.进入前先输入密码,密码错误次数达到4次后退出程序

2.选择取款后进入取款操作,取款金额大于原有金额将会报错,取款后自动显示余额

3.选择存款后进入存款操作,存完后自动显示余额

4.选择设置密码后进入设置密码的操作,要求输入原密码与新密码,并确认新密码

5.选择退出后要退出程序

实现代码如下,仅供参考:

#include "stdafx.h"

#include "iostream"

#include "windows.h"

int _tmain(int argc, _TCHAR* argv[])

{

int choice = 0,password=1234,password1;

int toal = 10000, toal1,toal2;

printf("* **  ***  ****\n");

printf("    欢迎\n");

printf("* **  ***  ****\n");

while(1){

for (int i = 0; i < 4; i++){

printf("请输入密码:");

scanf("%d", &password1);

if (password1 == password)

{

break;

}

else

{

printf("密码错误!请重新输入!\n");

}

}

if (password1 == password)

{

break;

}

printf("抱歉!你已经累计输错了4次密码,此卡已冻结,请联系客服!\n");

for (int i = 5; i > 0; i--)

{

printf("\r%d秒后程序将自动退出!", i);

Sleep(1000);

}

exit(EXIT_SUCCESS);

}

//密码验证程序

while (1)

{

printf("    1.取款\n");

printf("    2.存款\n");

printf("    3.设置密码\n");

printf("    4.退出\n");

printf("请选择:");

scanf("%d", &choice);

switch (choice)

{

case 1:

while (1)

{

printf("请输入取款金额:");

scanf("%d", &toal1);

if (toal1>toal)

{

char juge;

printf("抱歉!你的余额不足!是否继续?(y/n)\n");

fflush(stdin);

juge = getchar();

if (juge == 'n')

{

exit(EXIT_SUCCESS);//退出程序

}

else

{

break;

}

}

else

{

toal -= toal1;

printf("取款成功!余额为:%d\n",toal);

break;

}

}

break;

case 2:

printf("请输入存款金额:");

scanf("%d", &toal2);

toal += toal2;

printf("存款成功!余额为:%d\n", toal);

break;

case 3:

int i;

for ( i = 0; i < 4;i++)

{

printf("请输入原密码:");

scanf("%d", &password1);

if (password1 == password)

{

while (1)

{

int password2;

printf("请输入新密码:");

scanf("%d", &password1);

printf("请确认新密码:");

scanf("%d", &password2);

if (password1 != password2)

{

printf("你两次输入的密码不一致,请重新输入!\n");

}

else

{

break;

}

}

password = password1;

printf("密码修改成功!\n");

break;

}

printf("密码错误!请在试一次!\n");

}

if (i==4)

{

for (int  j = 5; j >0; j--)

{

printf("\r你已经输错四次密码了,%d秒后程序将自动退出!", j);

Sleep(1000);

}

exit(EXIT_SUCCESS);

}

break;

case 4:

for (int i = 5; i > 0; i--)

{

printf("\r%d秒后程序将自动退出!", i);

Sleep(1000);

}

exit(EXIT_SUCCESS);

break;

default:

printf("无法识别的指令,请重新输入\n");

break;

}

}

system("pause");

return 0;

}

你可能感兴趣的:(Android_开发_Day2_C语言基础)