1、跳转语句
break、continue与goto语句
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0101()
{
//break跳出语句
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
{
break;
}
printf("%d %d\n", i, j);
}
}
return EXIT_SUCCESS;
}
int main0102()
{
//continue跳出语句,终止本次循环,并执行下一次循环
for (int i = 0; i < 100; i++)
{
if (i % 2 == 1)
{
continue;
}
printf("%d\n",i);
}
return 0;
}
int main0103()
{
//goto跳出语句 无条件跳转
printf("hello worle1\n");
printf("hello worle2\n");
goto FLAG1;
printf("hello worle3\n");
printf("hello worle4\n");
FLAG1:
printf("hello worle5\n");
printf("hello worle6\n");
return 0;
}
int main0104()
{
int i = 0, j = 0;
for (i; i < 10; i++)
{
if (i == 5)
{
goto FLGA2;
}
printf("i=%d\n", i);
}
for (j; j < 10; j++)
{
FLGA2:
printf("j=%d\n", j);
}
}
int main0105()
{
FLGA:
printf("hello world\n");
goto FLGA;
return 0;
}
2、数组的定义与使用
数组的定义:
数据类型 数组名[元素个数]={值1,值2,…值n};
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0201()
{
//变量定义:
//数据类型 变量=值
//数组定义:
//数据类型 数组[元素个数]={值1,值2,值3}
int array[10] = { 8,4,5,6,2,3,9,7,1,0, };
//数组下标 数组名[下标]
//数组下标是从0开始计数,数到下标个数最大值-1为止
//printf("%d\n", array[2]);
for (int i = 0; i < 10; i++)
{
printf("%d\n", array[i]);
}
return 0;
}
int main0202()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
arr[4] = arr[7];
arr[2] = arr[4] * 2;
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
}
int main0203()
{
//数组在内存中的存储方式和大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//下标为0的元素地址
//printf("%p\n", &arr[0]);
/*printf("%p\n", &arr[1]);
printf("%p\n", &arr[2]);
printf("%p\n", &arr[3]);
printf("%p\n", &arr[4]);*/
//printf("%p\n", arr);//与arr[0]地址相同
//数组名是一个地址常量,指向数组首地址的常量
printf("数组在内存中占的大小为:%d\n", sizeof(arr));
printf("数组元素大小:%d\n", sizeof(arr[1]));
printf("数组元素个数:%d\n", sizeof(arr)/sizeof(arr[0]));
//数组在内存中占的大小 = 数据类型 * 元素个数
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 10
int main0301()
{
//int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
//int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//int arr[10] = { 1,2,3,4 };
//int arr[10] = { 0};
//int arr[10] = {1};
int arr[10];
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
int main0302()
{
int i = 10;
//数组元素必须是常量,常量表达式
//数组必须预先知道大小 动态数组-》 开辟堆空间
int arr[SIZE];
for (int i = 0; i < SIZE; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < SIZE; i++)
{
printf("%d\n", arr[i]);
}
}
int main0303(void)
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//数组下标越界
//printf("%d\n",arr[-1]);//err
//printf("%d\n",arr[10]);//err
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);//err
}
}
3、练习十只小猪称体重
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 10
int main04()
{
int arr[SIZE];
for (int i = 0; i < SIZE; i++)
{
scanf("%d", &arr[i]);
}
int max = 0;
for (int i = 0; i < SIZE; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
printf("最重的小猪体重是:%d\n", max);
return 0;
}
4、数组逆置
练习如何将一个数组逆序排列
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main05()
{
//将一个数组逆置操作
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
int j = sizeof(arr) / sizeof(arr[0])-1;//数组下标大小
while (i < j)
{
//通过临时变量交换数据
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
}
5、冒泡排序法
将10个无序的随机数字有序的排列起来
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main06()
{
int arr[] = { 5,7,8,4,2,6,9,3,1,10 };
for (int i = 0; i < 10 - 1; i++)//外层控制行
{
for (int j = 0; j < 10-1-i; j++)
//内层控制列,10个数字对比9次 9个数字对比8次,故j<10-1-i
{
if (arr[j] < arr[j + 1])//升序排列,将 < 改为 > 则成降序排列
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
6、二维数组的定义与使用
数据类型 数组名[元素个数]={值1,值2};
或:
数组类型 数组名[行][列]=
{
{值1,值2},
{值3,值4}
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0701()
{
//数据类型 数组名[元素个数]={值1,值2};
//数组类型 数组名[行][列]=
//{
//{值1,值2},
//{值3,值4}
//}
int arr[2][3] = { {1,2,3}, {4,5,6} };
/*{
{1,2,3},
{4,5,6}
};//也可以写在一行上,如上所述*/
//arr[1][2] = 20;//将第一行第二列的值6改为20,从0开始数
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");//打印出1行以后换行操作
}
printf("二维数组的大小为:%d\n", sizeof(arr));
//二维数组大小=行*列*sizeof(数据类型)
printf("二维数组一行大小:%d\n", sizeof(arr[0]));
printf("二维数组元素大小:%d\n", sizeof(arr[0][0]));
printf("二维数组行数:%d\n", sizeof(arr) / sizeof(arr[0]));
printf("二维数组列数:%d\n", sizeof(arr[0] )/ sizeof(arr[0][0]));
return 0;
}
int main0702()
{
int arr[2][3] =
{
{1,2,3},
{4,5,6}
};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%p\n",& arr[i][j]);
}
}
//二维数组首地址
//printf("%p\n", arr);
//printf("%p\n", arr[0]);
//printf("%p\n", &arr[0][0]);//这三行均表示二维数组首地址
//printf("%p\n", arr[1]);
return 0;
}
int main0703()
{
//二维数组初始化
//int arr[2][3]={{1,2,3},{4,5,6}};
//int arr[2][3] = { 1,2,3,4,5,6 };
int arr[][3] = { 1,2,3,4,5,6,7 };
//int arr[][3] = { 0 };//一行三列
//数组下标只有挨着数组名的可以省略
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
}
7、学生考试练习
5个学生3各学科,求出每名学生的平均成绩、总成绩、每门学科总成绩、学科平均成绩
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main08()
{
//定义一个数组 存储五名学生三门成绩 arr[5][3]
//求出每名学生的总成绩 平均成绩
//求出每门学科的总成绩 平均成绩
int arr[5][3];
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
scanf("%d", &arr[i][j]);//获取5名学生成绩
}
}
for (int i = 0; i < 5; i++)//打印学生成绩
{
int sum = 0;
for (int j = 0; j < 3; j++)
{
sum += arr[i][j];
//printf("%d ", arr[i][j]);
}
printf("第%d名学生的总成绩为:%d\t平均成绩为:%d\n", i + 1, sum,sum / 3);
//printf("\n");
}
for (int i = 0; i < 3; i++)
{
int sum = 0;
for (int j = 0; j < 5; j++)
{
sum += arr[j][i];
}
printf("第%d门功课的总成绩为:%d\t平均成绩为:%d\n", i + 1, sum, sum / 5);
}
return 0;
}
8、多维数组
三维数组定义: 数据类型 数组名[层][行][列]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0901()
{
//一位数组定义: 数据类型 数组名 [元素个数]
//二维数组定义: 数组类型 数组名[行][列]
//三维数组定义: 数据类型 数组名[层][行][列]
int arr[2][3][4] =
{
{
{1,2,3,4},
{2,3,4,5},
{3,4,5,6}
},
{
{4,5,6,7},
{5,6,7,8},
{6,7,8,9}
}
};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 4; k++)
{
printf("%d\t", arr[i][j][k]);
}
printf("\n");
}
}
printf("三维数组的大小:%d\n", sizeof(arr));//96=2*3*4*4=层*行*列*sizeof(数据类型)
printf("三维数组中的一层大小:%d\n", sizeof(arr[0]));
printf("三维数组中的一行大小:%d\n", sizeof(arr[0][0]));
printf("三维数组中的一个元素大小:%d\n", sizeof(arr[0][0][0]));
printf("层:%d\n", sizeof(arr) / sizeof(arr[0]));// 数组大小/每层大小
printf("行:%d\n", sizeof(arr)/sizeof(arr[0][0]));// 数组大小/每行大小
printf("列:%d\n", sizeof(arr[0][0]) / sizeof(arr[0][0][0]));// 行大小/一个元素大小
}
9、字符数组和字符串
char name[10];
表示定义了10字节的内存空间,如果字符串长度大于10,那么存在语法错误,这里所指的字符串包括\0,虽然系统会在结尾加’\0’,但并不会为它开辟新的空间。
定义字符数组可以用以下几种方式:
char *arr = "hello";
char arr[] = "hello"
char arr[] = {'h','e','l','l','o','\0'};
char arr[5] = { 'h','e','l','l','o' };
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main010_01()
{
//定义字符数组
char arr[5] = { 'h','e','l','l','o' };
//字符
//char ch = 'a';
//字符串 字符串结束标志为\0 数组0等同于\0 但不同于’0‘
//char *arr = "hello";
//char arr[] = "hello"
//char arr[] = {'h','e','l','l','o','\0'};
printf("%s", arr);
/*for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%s", arr);
}*/
}
int main10_02()
{
//定义字符数组存储字符串,字符串以\0为结束标志
char ch[10];//只能打印到helloworl 最后还有一位\0
scanf("%s", ch);
printf("%s", ch);
return 0;
}
int main()
{
//字符串拼接
char ch1[] = "hello";
char ch2[] = "world";
char ch3[20];
int i = 0;
int j = 0;
while (ch1[i] != '\0');
{
ch3[i] = ch1[i];
i++;
}
while (ch2[j] != '\0')
{
ch3[i + j] = ch2[j];
j++;
}
ch3[i + j] = '\0';
printf("%s\n", ch3);
return 0;
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/10277.html