C语言学习

C语言以函数为单位管理代码,一个函数就一段具有某项功能的代码
main是程序默认的入口函数,有且只能有一个。
int是一个数据类型,他表示函数执行结束后可以有一个执行结束返回给调用者int就是表示main函数的执行结果是int
main函数的调用者就是操作系统,main的执行结束会被操作系统获取到记录日志文件中
echo $?
正数:程序出现异常
负数:程序出现错误
0:一切正常
/
int main()
{
printf("hello,world\n");
/

printf/scanf是标准库中提供的用输入输出数据的函数,使用时要导入stdio.h
一般用来调试程序,实际做项目时不用。

C语言中以分号作为代码的结尾。
\n转义字符的一种,通过正常方式不能显示或表达的符号。
\r回到行首
\t制表符 相当按一下tab键
\a铃响
&&
\
*/ 1 #include<stdio.h>

return 0;

}
/*
1.把一个数据返回给函数的调用者
2.提前结束函数的执行,即使下面有代码也不再执行*/
//C语言中使用大括号来划分边界

/*
数据类型

整型:只能表示整数
signed有符号:二进制最高位用来表示正0负1
signed不加就代表
signed char 1 128~127 %hhd
signed short 2 -32768~32767 %hd
signed int 4 -2000000000~2000000000 %d
signed long 4/8 %ld
signed long long 8 %lld
unsigned无符号:所有的二进制位都用来表示数据,只能表示正数
unsigned char 1 0~255 %hhu
unsigned short 2 0~65535 % hu
unsigned int 4 0~4000000000 %u
unsigned long 4/8 %lu
unsigned long long 8 %llu

浮点型:小数点是浮动的
单精度 float 4 %f
双精度 double 8 %lf
高精度 long double 12/16 %llf

浮点型采用科学计数法:符号位+指数位+位数位
小数点后六位有效
char 字符就是符号或者图案,但在计算机中是以整数形式储存的。
需要显示时会根据ASCII表中的对应关系显示出对应的符号
‘0'48
‘a'65
’A‘97
’\0' 0

bool 布尔类型是1980年才流行在计算机界,而c产生在1970年,因此C语言中没有真正的布尔类类型,使用是需要导入stbdoo.h
false<=>0 turn<=>1

变量:
储存数据的容器或盒子
定义:数据类型 名字;
int num;
新定义的变量的默认值是不确定的,为了安全,一定要初始化
使用:
1.赋值 num=100;
2,参与运算 num*20-100;
变量的取名:
1.由数字,字母下划线组成
2.不能以数字开头
3.不能与关键字重名

4.不要超过30个字符
5.见名知意
变量的输出printf函数:

printf 类型 变量名
变量的输入scanf函数;
scanf 类型 地址=&变量名

***生成随机数:srand(time(MULL));{头文件:#includ<time.h>和#include<stdlib.h>}
i=rand();i随机;
如果:i=【a,b)则:i=rand()%(b-a)+a
例子:

生成一组彩票,以福彩双色球为例(33个红球,弹6个;16个蓝球,弹1个)
代码:

include<stdio.h>

include<time.h>

include<stdlib.h>

int main()
{
srand(time(NULL));
int x[34]={},y[17]={};
int j,k,a=0,p=0,i=0;
for(i=1;i<=33;i++){
x[i]=i;
}
for(j=1;j<=6+a;j++){
i=rand()%(35-1)+1;
if(x[i]!=0){
printf("%d ",x[i]);
x[i]=0;
}
else{
a++;
}
}
for(k=1;k<=17;k++){
y[k]=k;
}
k=rand()%(18-1)+1;
printf("%d ",y[k]);
}

例子:
走迷宫
数据分析:
迷宫:char [10][10]
墙:‘#’
老鼠:‘@’
出口:‘ ’
路:‘ ’
老鼠坐标:char mous_x,mous_y;
出口坐标:char o_x,o_y;
业务流程:
显示迷宫:先清理迷宫再显示迷宫。
stdlib.h
system("clear");
判断是否到达出口:判断老鼠的坐标是否与出口的坐标重合
获取方向键:
getch.h
getch();
183 up,184 down,185 right,186 left
先把原位置赋值为‘ ’,新位置赋值为‘ ’。
不能穿墙 不能越界
代码:

include<stdio.h>

include<getch.h>

include<stdlib.h>

include<stdbool.h>

int main()
{
char maze[10][10]=
{{'#','#','#','#','#','#','#','#','#'},
{'#','@','#','#','#','#','#','#','#'},
{'#',' ','#','#','#','#','#','#','#'},
{'#',' ',' ','#','#','#','#','#','#'},
{'#','#',' ','#','#','#','#','#','#'},
{'#','#',' ','#','#','#','#','#','#'},
{'#','#',' ',' ',' ',' ',' ','#','#'},
{'#','#','#','#','#','#',' ','#','#'},
{'#','#','#','#','#','#',' ','#','#'},
{'#','#','#','#','#','#',' ','#','#'}};
int m_x=1,m_y=1;
int o_x=9,o_y=6;
while(true)
{
system("clear");
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
printf("%c",maze[i][j]);

}
printf("\n");

}
if(m_xo_x&&m_yo_y)
{
printf("恭喜你走出迷宫");
break;
}

//移动老鼠
int key_val=getch();
maze[m_x][m_y]=' ';
switch(key_val)
{
case 183:' 'maze[m_x-1][m_y]&&m_x--;break;
case 184:' '
maze[m_x+1][m_y]&&m_x++;break;
case 185:' 'maze[m_x][m_y+1]&&m_y++;break;
case 186:' '
maze[m_x][m_y-1]&&m_y--;break;
}
maze[m_x][m_y]='@';

}
}

posted @ 2019-05-10 16:47  3293076610  阅读(157)  评论(0编辑  收藏  举报