标签:print 合并 getc break lse class 赋值 cmd ==
回顾:
1. continue; break;
跳出一次循环
break 跳出整循环
2. 多重循环
3. while do while
while(条件) //循环次数不确定
{
}
for 带次数的循环
do while(); 先执行一次循环体里面的语句 在判断条件
for或者 while 先判断条件再确定是否执行循环体语句
4. goto 在同一函数进行跳转
5. 数组
1.用于存储一组同一类型数的容器
2.定义数组 需要数据名 类型,还需要知道容纳元素的个数.
int arr[5];
3. 系统为数据分配连续的存储空间
5 * 4 = 20;
4.对数组元素的访问,可以通过数组名(数组首地址) + 偏移 来访问该数组其他元素的内容
arr[0] 第一个元素
arr[1]
arr[] 数据类型
[] 下标运算
跟循环一起使用,通过循环读写数组里面的内容
arr[0] = 10;
arr[1] = 10;
arr[2] = 10;
arr[3] = 10;
arr[4] = 10;
arr[0] 等价于 变量
int i;
&i
&arr[0] ??
----------------------
/*
* 彩票
* 去重复相同的数字
*/
#include //#include
#include
#include int main(){
int a[7];
srand(time(0));
int flag = 1;
while(flag)
{
flag = 0;
for(int i = 0;i7;i++)
{
a[i] = rand()%32+1; //1 - 32
}
for(int i = 0;i7;i++)
{
printf("a[%d] = %d\n",i,a[i]); //1 - 32
}
for(int j = 0;j7;j++)
{
for(int i =j+1;i7;i++)
{
if(a[j] == a [i])
{
printf("数字重复\n");
flag =1;
break;
}
}
if(flag ==1)
break;
}
}
getchar();
return 0;
}
数组的初始化
//int a[5] = {0}; //所有元素初始化0
// int a[5] = {2}; //所有元素初始化a[0]=2 其他0
// int a[5] = {0,1,2,3,4};//元素初始化0,1,2,3,4
// int a[5] = {0,1,2};//元素初始化前三个0,1,2
//C99
// int a[5] = {[1]=1,[4]=5};//元素初始化下标1=1,下标4=5
int a[] = {0,1,2,3,4};//初始化5个元素0,1,2,3,4
将a 内容 复制 到 b
输出 b
#include int main(){
char a[]={‘H‘,‘e‘,‘l‘,‘l‘,‘o‘,‘ ‘,‘W‘,‘o‘,‘r‘,‘l‘,‘d‘,‘!‘};
char b[12]={0};
for (int i=0;i12;i++)
{
b[i] = a[i];
printf("%c",b[i]);
}
getchar();
return 0;
}
将a 内容 复制 到 b (去掉空格)
输出 b
#include int main(){
char a[]={‘H‘,‘e‘,‘l‘,‘l‘,‘o‘,‘ ‘,‘W‘,‘o‘,‘r‘,‘l‘,‘d‘,‘!‘};
char b[12]={0};
for (int i=0;i12;i++)
{
if (a[i] != 32)
{
b[i] = a[i];
printf("%c",b[i]);
}
}
getchar();
return 0;
}
/*
* 查看数组的地址
*/
int a[5] = {0};
printf("a = %p\n",&a);
printf("a[0] = %p\n",&a[0]);
printf("a[1] = %p\n",&a[1]);
printf("a[2] = %p\n",&a[2]);
printf("a[3] = %p\n",&a[3]);
printf("a[4] = %p\n",&a[4]);
a = 0055F88C
a[0] = 0055F88C
a[1] = 0055F890
a[2] = 0055F894
a[3] = 0055F898
a[4] = 0055F89C
可变长数组 C99
int n = 3;
n = 5;
int a[n]; //在定义数组时 跟据变量 确定 数组长度
(Windows不支持)
/*
* C99 支持的可变长数组
* [练习] 使用可变数组
* 先输入 学员个数n
* 为这n学员 申请 n个数组元素 存放录入他们的成绩
*
* 录入完后 打印 他们的成绩 和平均 成绩(考虑是小数)
*/
linux系统下
/*
* C99 支持的可变长数组
* [练习] 使用可变数组
* 先输入 学员个数n
* 为这n学员 申请 n个数组元素 存放录入他们的成绩
*
* 录入完后 打印 他们的成绩 和平均 成绩(考虑是小数)
*/
#include int main(){
int n = 0;
//int a[n] = {0}; 不能初始化
//printf("数组元素个数:%d\n",sizeof(a)/sizeof(a[0]));
printf("输入新n值:");
scanf("%d",&n); //0 5
int a[n];// {0}; 一般是局部变量
printf("数组元素个数:%d\n",sizeof(a)/sizeof(a[0]));
for(int i = 0;i)
{
printf("输入一个学员的成绩:");
scanf("%d",&a[i]); //a[5]
//printf("a[%d] = %d\n",i,a[i]);
}
float sum = 0;
for(int i = 0;i)
{
sum = sum + a[i];
printf("a[%d] = %d\n",i,a[i]);
}
printf("平均成绩= %f\n",sum/n);
return 0;
}
多维数组
定义
int a[5][5] 二维数组
int a[5][5][3] 三维数组
/*
* 二维数组的定义
* 初始化
*/
int a[3][3]; //3*3 9个元素
int a[3][3] ={{3,3,3},{3,3,3},{3,3,3}}; //3*3 9个元素
/*
* 1 2 3
* 2 4 6
* 3 6 9
*/
#include int main(){
int a[3][3];
for (int j=0;j3;j++)//j 表示 第几排
{
for (int i=0;i3;i++)
{
a[j][i] = (j+1) * (i+1);
}
}
for (int j=0;j3;j++)//j 表示 第几排
{
for (int i=0;i3;i++)
{
printf("%d ",a[j][i]);
}
printf("\n");
}
getchar();
return 0;
}
1 1 1
2 2 2
3 3 3
//a[j][i] = (j+1) * (i+1);
a[j][i] = (j+1);
/*
* 练习
* 已知 数组 a[3][3] 所有元素赋初始值 3
* 已知 数组 b[3][3] 所有元素赋初始值 4
* a = a*b
* a[0][0] = b[0][0] * a[0][0];
* a[0][1] = b[0][1] * a[0][1];
*
* 打印a数组的值
*/
#include int main(){
int a[3][3] ={{3,3,3},{3,3,3},{3,3,3}}; //3*3 9个元素
int b[3][3] ={{4,4,4},{4,4,4},{4,4,4}}; //3*3 9个元素
for (int j =0;j3;j++)
{
for (int i=0;i3;i++)
{
a[j][i] = a[j][i] * b[j][i];//对应的数组下标相乘再放到对应的A数组下标
printf("a[%d][%d] = %d ",j,i,a[j][i]);
}
printf("\n");
}
getchar();
return 0;
}
a[0][0] = 12 a[0][1] = 12 a[0][2] = 12
a[1][0] = 12 a[1][1] = 12 a[1][2] = 12
a[2][0] = 12 a[2][1] = 12 a[2][2] = 12
/*
*
* [练习]
* 1.声明一个int 4*4 二维数组
* int a[4][4] = {0}; //初始化整个数组为0
*
* 2.在数组的随机一个位置赋值2
* y = rand()%4 -->0 - 3
* x = rand()%4 -->0 - 3
* a[y][x] = 2;
*
* 3. 打印出a 数组
*
* 4. 绘制输出内容
*
*/
#include
#include
#include int main(){
int a[4][4] ={0};
srand(time(0));
int x = rand()%4;
int y = rand()%4;
a[x][y] = 2;
printf("+----+----+----+----+\n");
for (int i=0;i4;i++)
{
for (int j=0;j4;j++)
{
printf("|%4d",a[i][j]);
}
printf("|\n");
printf("+----+----+----+----+\n");
}
getchar();
return 0;
}
+----+----+----+----+
| 0| 0| 0| 0|
+----+----+----+----+
| 0| 0| 0| 0|
+----+----+----+----+
| 0| 0| 0| 2|
+----+----+----+----+
| 0| 0| 0| 0|
+----+----+----+----+
添加移动游戏(向上)
#include
#include
#include int main(){
int a[4][4] ={0};
srand(time(0));
int x = rand()%4;
int y = rand()%4;
a[x][y] = 2;
while (1)
{
system("cls");
printf("+----+----+----+----+\n");
for (int i=0;i4;i++)
{
for (int j=0;j4;j++)
{
if(a[i][j] == 0) //0 用空格替换
{
printf("| ");
}else{
printf("|%4d",a[i][j]);
}
}
printf("|\n");
printf("+----+----+----+----+\n");
}
printf("| k |\n");
printf("|hl |\n");
printf("| j |\n");
printf("+----+----+----+----+\n");
char cmd = 0;
scanf("%c",&cmd);
scanf("%*[^\n]");
scanf("%*c");
switch (cmd)
{
case ‘k‘ :
for (int i=3;i>0;i--)//遍历第四排开始
{
for (int j=0;j4;j++)//遍历列数
{
if (a[i-1][j] == 0)//如果第三排的对应元素等于0
{
a[i-1][j] = a[i][j];//把第四排开始将对应的元素拿到上一排
a[i][j] = 0;//拿走之后赋值为0
}else{
if (a[i-1][j] == a[i][j])
{
a[i-1][j] = 2*a[i][j];//如果对应元素相等,合并
a[i][j] = 0;//拿走之后赋值为0
}
}
}
}
x = rand()%4;
y = rand()%4;
a[x][y] = 2;
break;
case ‘h‘ :
printf("左移动\n");
break;
case ‘j‘ :
printf("下移动\n");
break;
case ‘l‘ :
printf("右移动\n");
break;
default :
printf("输入错误\n");
break;
}
}
getchar();
getchar();
return 0;
}
添加移动游戏(向上2)如果随机的位置还没有值才赋值 do...while()
#include
#include
#include int main(){
int a[4][4] ={0};
srand(time(0));
int x = rand()%4;
int y = rand()%4;
a[x][y] = 2;
while (1)
{
system("cls");
printf("+----+----+----+----+\n");
for (int i=0;i4;i++)
{
for (int j=0;j4;j++)
{
if(a[i][j] == 0) //0 用空格替换
{
printf("| ");
}else{
printf("|%4d",a[i][j]);
}
}
printf("|\n");
printf("+----+----+----+----+\n");
}
printf("| k |\n");
printf("|hl |\n");
printf("| j |\n");
printf("+----+----+----+----+\n");
char cmd = 0;
scanf("%c",&cmd);
scanf("%*[^\n]");
scanf("%*c");
switch (cmd)
{
case ‘k‘ :
for (int i=3;i>0;i--)//遍历第四排开始
{
for (int j=0;j4;j++)//遍历列数
{
if (a[i-1][j] == 0)//如果第三排的对应元素等于0
{
a[i-1][j] = a[i][j];//把第四排开始将对应的元素拿到上一排
a[i][j] = 0;//拿走之后赋值为0
}else{
if (a[i-1][j] == a[i][j])
{
a[i-1][j] = 2*a[i][j];//如果对应元素相等,合并
a[i][j] = 0;//拿走之后赋值为0
}
}
}
}
do
{
x = rand()%4;
y = rand()%4;
} while (a[x][y] != 0);//如果得到的随机位置已经有值,继续循环得到随机坐标
a[x][y] = 2;//的到为空的值的随机坐标,赋值
break;
case ‘h‘ :
printf("左移动\n");
break;
case ‘j‘ :
printf("下移动\n");
break;
case ‘l‘ :
printf("右移动\n");
break;
default :
printf("输入错误\n");
break;
}
}
getchar();
getchar();
return 0;
}
007_stdc_C语言基础
标签:print 合并 getc break lse class 赋值 cmd ==
原文地址:https://www.cnblogs.com/tanzizheng/p/12903159.html