您现在的位置是:首页 >其他 >C语言从入门到精通网站首页其他
C语言从入门到精通
简介C语言从入门到精通
文章目录
C语言
1.helloworld
1.1 pause
#include <stdio.h> // #:关键标识符,表示引入头文件; include:引入头文件关键字
// stdio.h: 系统标准输入、输出库对应的头文件。 给printf函数服务。
//<>: 使用系统库函数。 "": 用户自定义库函数。
int main(void) //int: 函数返回值是整型数据。 mian:函数名。程序唯一的入口。必须有,且只有一次。 void:函数调用无需传参。
{ // 函数体 起始位置
printf("hello world!
"); // 将 “hellow world”写到屏幕上。
: 回车换行
system("pause"); // 调用 syatem 函数, 实现暂停功能。
return 0; // 返回当前函数调用 --- 退出程序。 0 要跟 main函数的返回值一一对应。
}// 函数体 结束位置
1.2 cls清屏
#include <stdio.h>
#include <Windows.h>
int main(void) //int: 函数返回值是整型数据。 mian:函数名。程序唯一的入口。必须有,且只有一次。 void:函数调用无需传参。
{ // 函数体 起始位置
printf("-----------hello world!
"); // 将 “hellow world”写到屏幕上。
: 回车换行
Sleep(2000);
system("cls"); // 调用 syatem 函数, 实现清屏功能。
return 0; // 返回当前函数调用 --- 退出程序。 0 要跟 main函数的返回值一一对应。
}
1.3 加法运算
#include <stdio.h>
int main(void)
{
int a = 3; // 定义 整型变量 a, 赋初值 3
int b = 5; // 定义 整型变量 b, 赋初值 5
int c; // 定义 整型变量 c, 无初值
c = a + b; // a + b ,将结果 赋值 给 c
printf("hello world
");
// %d:格式匹配符,匹配整型数据
printf("%d
", c /*注释*/ );
printf("c = %d
", c);
printf("%d + %d = %d
", a, b, c);
printf("%d + %d = &d
", a, b, a+b);
return 0;
}
1.4 hello
#include <stdio.h>
#define PI 3.14 // 定义常量 PI 宏定义
// 我是一个单行注释君
int main(void)
{
printf("helloworld
");
/*
wo shi
一个多行注释
sir
*/
printf("%d
, PI");
return 0;
}
2 常量变量和数据类型
2.1 常量
#include <stdio.h>
#define PI 3.1415 // 常量
int main(void)
{
// 圆的面积 s = PI x 半径的平方
// 圆的周长 l = 2 * PI * r
//int r = 3; // 变量
const int r = 3; // 只读变量
float s = PI * r * r;
float l = 2 * PI * r;
//printf("圆的周长为:%f
", l); //18.849001
//printf("圆的面积为:%f
", s); //28.273500
printf("圆的周长为:%.2f
", l); // 指定小数点后保留2位, 对第3位做,4舍五入
printf("圆的面积为:%.2f
", s); // 指定小数点后保留2位
return 0;
}
2.2 变量
#include <stdio.h>
int main(void)
{
int a; // 显示的做变量a的声明
a = 56; // 变量使用、变量赋值。
return 0;
}
2.3 sizeof数据类型大小
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 1024 // 定义常量
int main(void)
{
int a = 10; // 定义变量: 三要素
short b = 20;
long c = 30;
long long d = 40;
printf("================a===%d
", sizeof(a));
printf("================b===%d
", sizeof(b));
printf("================c===%d
", sizeof(c));
printf("================d===%d
", sizeof(d));
printf("int 大小为:%d
", sizeof(int));
printf("short 大小为:%d
", sizeof(short));
printf("long 大小为:%d
", sizeof(long));
printf("long long 大小为:%d
", sizeof(long long));
system("pause");
return EXIT_SUCCESS;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 1024 // 定义常量
int main(void)
{
int a = 3;
short b = 4;
long c = 5; // 5L 5l
long long d = 6; // 5LL 5ll
printf("sizeof(int) = %d
", sizeof(int));
printf("sizeof(short) = %d
", sizeof(short));
printf("sizeof(long) = %d
", sizeof(long));
printf("sizeof(long long) = %d
", sizeof(long long));
printf("--------------------------------------
");
unsigned int aun = 3; // 3u
unsigned short bun = 4; // 3u
unsigned long cun = 5; // 3lu
unsigned long long dun = 6; // 3llu
printf("sizeof(unsigned int) = %d
", sizeof(unsigned int)); // aun
printf("sizeof(unsigned short) = %d
", sizeof(unsigned short));
printf("sizeof(unsigned long) = %d
", sizeof(unsigned long));
printf("sizeof(unsigned long long) = %d
", sizeof(unsigned long long));
}
2.4 无符号整型
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
size_t var = 10;
printf("var = %u
", var);
unsigned int a = 10u; // 简写成 unsigned int a = 10;
unsigned short b = 20u;// 简写成 unsigned short b = 20;
unsigned long c = 30Lu;
unsigned long long d = 40LLu;
printf("unsigned int 型数据值:%u
", a);
printf("unsigned short 型数据值:%hu
", b);
printf("unsigned long 型数据值:%lu
", c);
printf("unsigned long long 型数据值:%llu
", d);
system("pause");
return EXIT_SUCCESS;
}
2.5 字符类型
2.5.1 字符类型简介
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
char ch = 'A'; // 65
//printf("1 ch = %c
", ch);
printf("1 ch = %d
", ch);
ch = 'm'; //
//printf("2 ch = %c
", ch);
printf("2 ch = %d
", ch);
//ch = 97;
ch = 'a'; // 97
//printf("3 ch = %c
", ch);
printf("3 ch = %d
", ch);
system("pause");
return EXIT_SUCCESS;
}
2.5.2 字符类型运算
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// A -- 65 a -- 97
int main(void)
{
char ch = 'M';
char var = '5';
printf("ch = %c
", ch + 32);
printf("var = %c
", var + 4);
printf("'\n'的值为=%d
", '
');
system("pause");
return EXIT_SUCCESS;
}
2.6 实数型
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
float m = 3.145;
double n = 4.566545;
printf("m = %08.2f
", m);
printf("n = %08.3lf
", n);
system("pause");
return EXIT_SUCCESS;
}
2.7 进制和转换
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a = 0x2C; // 等价 0x2c
printf("10进制显示 a = %d
", a);
printf("8进制显示 a = %o
", a);
printf("16进制显示 a = %x
", a);
system("pause");
return EXIT_SUCCESS;
}
2.8 数据溢出
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
char ch = 127+1; // -128 -- 127
printf("ch = %d
", ch);
system("pause");
return EXIT_SUCCESS;
}
3. 运算符和分支循环语句
3.1 字符串输出
3.1.1 字符数组输出
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
char ch = 'a';
printf("ch = %c
", ch);
char str[20] = "hello world";
printf("str = %s
", str);
system("pause");
return EXIT_SUCCESS;
}
3.1.2 字符数组格式化输出(%-15s)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
char str[] = "hello world";
printf("str = |%-15s|
", str);
system("pause");
return EXIT_SUCCESS;
}
3.1.2 字符输出 (putchar)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
putchar(97); // 'a' == 97
putchar('b');
putchar('c');
putchar('d');
putchar('abcZ');
system("pause");
return EXIT_SUCCESS;
}
3.2 格式化输入
3.2.1 获取单个输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 获取用户输入 整数
int main(void)
{
int a;
scanf("%d", &a); // &:表示取出变量a的地址。描述a的空间
printf("a = %d
", a);
system("pause");
return EXIT_SUCCESS;
}
3.2.2 获取多个输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 获取用户输入 整数
int main(void)
{
char ch1, ch2, ch3; // 连续定义同类型多个变量。
scanf("%c%c%c", &ch1, &ch2, &ch3); // &:表示取出变量ch的地址。描述a的空间
printf("ch1 = %c
", ch1);
printf("ch2 = %c
", ch2);
printf("ch3 = %c
", ch3);
system("pause");
return EXIT_SUCCESS;
}
3.2.3 连续相同输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 获取用户输入 整数
int main(void)
{
int a1, a2, a3; // 连续定义同类型多个变量。
scanf("%d %d %d", &a1, &a2, &a3); // &:表示取出变量ch的地址。描述a的空间
printf("a1 = %d
", a1);
printf("a2 = %d
", a2);
printf("a3 = %d
", a3);
system("pause");
return EXIT_SUCCESS;
}
3.2.4 字符数组输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 获取用户输入 整数
int main(void)
{
char a[5]; // 大小为5字节的数组
scanf("%s", a); // 接收用户键盘输入,写入数组a中
printf("a = %s
", a);
system("pause");
return EXIT_SUCCESS;
}
3.2.5 getchar获取字符输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 获取用户输入 整数
int main(void)
{
char ch;
ch = getchar(); // 接收用户输入,返回接收到的ASCII码
printf("ch = %c
", ch);
putchar(ch);
putchar('
');
system("pause");
return EXIT_SUCCESS;
}
3.3 算数运算符
3.3.1 数学运算
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a = 10;
int b = 20;
int c = a * b;
int d = 34 / 10; // 0.5
//int m = 98 / 0;
printf("d = %d
", d);
system("pause");
return EXIT_SUCCESS;
}
3.3.2 自增运算(a++与++a)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a = 10;
int b = 50;
printf("a = %d
", a++); // 先取值给%d, 在自增
printf("----a = %d", a);
printf("b = %d
", ++b); // 先自增,再取值。
printf("----b = %d
", b);
system("pause");
return EXIT_SUCCESS;
}
3.4 逻辑运算
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a = 34;
int b = 0;
char str[10] = "hello";
++str[0];
printf("a = %d
", !a);
printf("b = %d
", !b);
printf("======%d
", a && !b);
printf("------%d
", !a || b);
system("pause");
return EXIT_SUCCESS;
}
3.5 三目运算
3.5.1 三目运算使用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
//
int main(void)
{
int a = 40;
int b = 4;
int m = a < b ? 69 : a < b ? 3 : 5;
printf("m = %d
", m);
printf("%d
", a > b ? 69 : 100);
system("pause");
return EXIT_SUCCESS;
}
3.5.2 三目运算案例2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
//
int main(void)
{
int a = 10, b = 20, c = 30;
int x = (a = 1, c = 5, b = 2);
printf("x = %d
", x);
printf("a = %d
", a);
printf("b = %d
", b);
printf("c = %d
", c);
system("pause");
return EXIT_SUCCESS;
}
3.6 隐式转换和强制类型转换
3.6.1 隐式转换
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 隐式类型转换。
int main(void)
{
int a = 321;
char ch = a;
printf("ch = %d
", ch);// 字符类型转换为整数类型
system("pause");
return EXIT_SUCCESS;
}
3.6.2 强制类型转换
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 强制类型转换
int main(int var)
{
//int *p = (int *)malloc(100);
float price = 3.6;
int weight = 4;
//double sum = (int)price * weight;
double sum = (int)(price * weight);
printf("价格:%lf
", sum);
system("pause");
return EXIT_SUCCESS;
}
3.7 if 语句
3.7.1 if …else… 语句
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a;
scanf("%d", &a);
if (a > 0)
{
printf("a > 0
");
}
else
{
printf("a <= 0
");
}
system("pause");
return EXIT_SUCCESS;
}
3.7.2 else if语句
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int score; // 100--90 优 90 -- 70 良好 70 -- 60 及格 < 60 差劲
printf("请输入学生成绩:");
scanf("%d", &score);
if (score >= 90 && score <= 100)
{
printf("优秀
");
}
else if (score < 90 && score >= 70)
{
printf("良好
");
}
else if (score < 70 && score >= 60)
{
printf("及格
");
}
else
{
printf("不及格
");
}
system("pause");
return EXIT_SUCCESS;
}
3.7.3 if else if else 语句
int main0703(void)
{
int pig1, pig2, pig3;
// if (pig1 > pig2 && pig1 > pig3)
// pig1 > pig2 ? pig1 : pig2;
printf("请输入三只小猪的体重:");
scanf("%d %d %d", &pig1, &pig2, &pig3);
if (pig1 > pig2) // 满足,说明pig1最重
{
if (pig1 > pig3)
{
printf("第一只小猪最重,体重为:%d
", pig1);
}
else
{
printf("第3只小猪最重,体重为:%d
", pig3);
}
}
else
{
if (pig2 > pig3)
{
printf("第2只小猪最重,体重为:%d
", pig2);
}
else
{
printf("第3只小猪最重,体重为:%d
", pig3);
}
}
system("pause");
return EXIT_SUCCESS;
}
3.8 switch
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int score;
scanf("%d", &score);
switch (score / 10)
{
case 10: // 100 -- 90 优秀
case 9:
printf("优秀
");
break;
case 8: // 70 -- 90 良好
case 7:
printf("良好
");
//break;
case 6: // 70 - 60 及格
printf("及格
");
//break;
default:
printf("不及格
");
break;
}
system("pause");
return EXIT_SUCCESS;
}
3.9 while 循环
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
//
int main(void)
{
int num = 1;
while (num <= 100)
{
if ((num % 7 == 0) || (num % 10 == 7) || (num / 10 == 7)) // 个位、10位、7的倍数
{
printf("敲桌子
");
}
else
{
printf("%d
", num);
}
num++; // 递增
}
system("pause");
return EXIT_SUCCESS;
}
3.10 do while
3.10.1 do…whie语句
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// while 的基础用法
int main(void)
{
int a = 1;
do
{
a++;
printf("a = %d
", a);
} while (a < 10);
system("pause");
return EXIT_SUCCESS;
}
3.10.2 水仙花数问题
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 水仙花数:一个三位数。各个位上的数字的立方和等于本数字。
int main(void)
{
int a, b, c;
int num = 100;
do {
a = num % 10; // 个位
b = num / 10 % 10; // 十位
c = num / 100; // 百位
if (a*a*a + b*b*b + c*c*c == num)
{
printf("%d
", num);
}
num++;
} while (num < 1000);
system("pause");
return EXIT_SUCCESS;
}
4. for循环和数组排序
4.1 for 循环
4.1.1 基础的for循环
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL)); //种随机数种子。
int n = 0;
int num = rand() % 100; // 生成随机数
for (;;) // while(1)
{
printf("请输入猜测的数字:");
scanf("%d", &n);
if (n < num)
{ // for、while、if 如果执行语句只有一条。 { } 可以省略
printf("猜小了
");
}
else if (n > num)
printf("猜大了
");
else
{
printf("猜中!!!
");
break; // 跳出
}
}
printf("本尊是:%d
", num);
system("pause");
return 0;
}
4.1.2 省略的表达式1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 基础for循环
int main(void)
{
int i = 1; // 循环因子
int sum = 0;
for (; i <= 100; i++)
{
sum = sum + i; //sum += i;
}
printf("sum = %d
", sum);
system("pause");
return EXIT_SUCCESS;
}
4.1.3 省略表达式2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 基础for循环
int main(void)
{
int i = 1; // 循环因子
int sum = 0;
for (; i <= 100; )
{
sum = sum + i; //sum += i;
i++;
}
printf("sum = %d
", sum);
system("pause");
return EXIT_SUCCESS;
}
4.1.4 省略表达式123
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 省略表达式123,无限循环
int main(void)
{
int i = 0; // 循环因子
//for (;1;) // 死循环。while(k=1)
for (;;)
{
printf("i = %d
", i);
i++;
}
system("pause");
return EXIT_SUCCESS;
}
4.1.5 多个表达式
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 表达式有多个
int main(void)
{
int i = 0;
int a = 0;
for (i = 1, a = 3; a < 20; i++)
{
printf("i = %d
", i);
printf("a = %d
", a);
a += 5;
}
system("pause");
return EXIT_SUCCESS;
}
4.2 猜数字游戏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL)); //种随机数种子。
int n = 0;
int num = rand() % 100; // 生成随机数
for (;;) // while(1)
{
printf("请输入猜测的数字:");
scanf("%d", &n);
if (n < num)
{ // for、while、if 如果执行语句只有一条。 { } 可以省略
printf("猜小了
");
}
else if (n > num)
printf("猜大了
");
else
{
printf("猜中!!!
");
break; // 跳出
}
}
printf("本尊是:%d
", num);
system("pause");
return 0;
}
4.3 模拟电子表
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>
int main(void)
{
int i, j, k;
// 小时
for (i = 0; i < 24; i++)
{
// 分钟
for (j = 0; j < 60; j++)
{
// 秒
for (k = 0; k < 60; k++)
{
printf("%02d:%02d:%02d
", i, j, k);
Sleep(960);
system("cls"); // 清屏
}
}
}
system("pause");
return EXIT_SUCCESS;
}
4.4 9*9乘法表
4.4.1 正序9*9乘法表
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 正序99乘法表
int main(void)
{
for (size_t i = 1; i <= 9; i++)
{
for (size_t j = 1; j <= i; j++)
{
printf("%dx%d=%d ", j, i, j * i);
}
printf("
");
}
system("pause");
return EXIT_SUCCESS;
}
4.4.2 倒序9*9乘法表
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 倒序 99 乘法表
int main(void)
{
int i, j;
for (i = 9; i >= 1; i--) // 行
{
for (j = 1; j <= i; j++) // 列
{
printf("%dx%d=%d ", j, i, j * i);
}
putchar('
');
}
system("pause");
return EXIT_SUCCESS;
}
4.5 continue
4.5.1 for 循环中continue
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
for (size_t i = 0; i < 5; i++)
{
if (i == 3)
{
continue;
}
printf("i = %d
", i);
printf("============1=========
");
printf("============2=========
");
printf("=============3========
");
printf("============4=========
");
printf("=============5========
");
}
system("pause");
return EXIT_SUCCESS;
}
4.5.2 while循环中continue
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int num = 5;
//while (num--) // 当num自减为 0 时循环终止。 等价于 while (num-- != 0)
while (num-- != 0) // 当num自减为 0 时循环终止。
{
printf("num = %d
", num);
if (num == 3)
{
continue;
}
printf("============1=========
");
printf("============2=========
");
printf("=============3========
");
printf("============4=========
");
printf("=============5========
");
}
system("pause");
return EXIT_SUCCESS;
}
4.6 goto语句
4.6.1 goto语句简介
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
printf("============1==========
");
printf("============2==========
");
goto LABLE;
printf("============3==========
");
printf("============4==========
");
printf("============5==========
");
printf("============6==========
");
printf("============7==========
");
LABLE:
printf("============8==========
");
printf("============9==========
");
printf("============10==========
");
system("pause");
return EXIT_SUCCESS;
}
4.6.2 循环语句中goto
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int i = 0;
for (i = 0; i < 10; i++)
{
if (i == 5)
goto ABX234;
printf("i = %d
", i);
}
for (int j = 0; j < 20; j++)
{
ABX234:
printf("j = %d
", j);
}
system("pause");
return 0;
}
4.7 数组
4.7.1 数组简介
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a = 5, b = 29, c = 10;
int arr[10] = { 1, 2 ,4, 6, 76, 8, 90 ,4, 3, 6 }; //int a = 109;
printf("&arr[0] = %p
", &arr[0]); // 取数组首元素的地址
printf("arr = %p
", arr); // 数组名
system("pause");
return EXIT_SUCCESS;
}
4.7.2 数组大小与个数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a = 5, b = 29, c = 10;
int arr[12] = { 1, 2 ,4, 6, 76, 8, 90 ,4, 3, 6 , 6, 8 }; //int a = 109;
printf("数组大小:%u
", sizeof(arr));
printf("数组元素的大小:%u
", sizeof(arr[0]));
printf("数组元素个数:%d
", sizeof(arr) / sizeof(arr[0]));
system("pause");
return EXIT_SUCCESS;
}
4.7.3 数组初始化
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 数组初始化
int main(void)
{
int arr[10]; //int a = 109;
arr[0] = 5;
arr[1] = 6;
arr[2] = 7;
int n = sizeof(arr) / sizeof(arr[0]);
for (size_t i = 0; i < n; i++)
{
printf("%d
", arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}
4.8 数组逆序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// 数组元素逆序
int main(void)
{
int arr[] = { 1, 6, 8, 0, 4, 3, 9, 2 }; // {2, 9, 3, 4, 0, 8, 6, 1}
int len = sizeof(arr) / sizeof(arr[0]); //数组元素个数
int i = 0; // i表示数组的首元素下标
int j = len - 1; // 表示数组的最后一个元素下标
int temp = 0; // 临时变量
// 交换 数组元素,做逆序
while (i < j)
{
temp = arr[i]; // 三杯水法变量交换
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
// 打印交互后的 数组
for (size_t n = 0; n < len; n++)
{
printf("%d ", arr[n]);
}
printf("
");
system("pause");
return EXIT_SUCCESS;
}
4.9 冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int arr[] = { 12, 32, 14, 62, 27, 8, 89 };
int n = sizeof(arr) / sizeof(arr[0]); // 数组元素个数
int temp = 0; // 临时变量
for (size_t i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("
");
// 完成乱序数组的冒泡排序。
for (size_t i = 0; i < n - 1; i++) // 外层控制行
{
for (size_t j = 0; j < n - 1 - i; j++) // 内层控制列
{
if (arr[j] > arr[j + 1]) // 满足条件 三杯水交换
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 打印排序后的数组,确定正确性。
for (size_t i = 0; i < n; i++)
{
printf("%d ",arr[i]);
}
printf("
");
system("pause");
return EXIT_SUCCESS;
}
5. 二维数组、字符串、函数
5.1 二维数组
5.1.1 二维数组定义
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int arr[3][4] = { {2, 7, 8, 5},
{75, 8, 9, 8},
{26, 37, 99, 9} };
for (size_t i = 0; i < 3; i++) //行
{
for (size_t j = 0; j < 4; j++) //列
{
printf("%d ", arr[i][j]);
}
printf("
");
}
printf("数组的大小为:%u
", sizeof(arr));
printf("数组行的大小:%u
", sizeof(arr[0]));
printf("数组一个元素的大小:%u
", sizeof(arr[0][0]));
printf("行数=总大小/一行大小:%d
", sizeof(arr) / sizeof(arr[0]));
printf("列数=行大小/一个元素大小:%d
", sizeof(arr[0]) / sizeof(arr[0][0]));
printf("arr= %p
", arr);
printf("&arr[0] = %p
", &arr[0][0]);
printf("arr[0] = %p
", arr[0]);
system("pause");
return EXIT_SUCCESS;
}
5.1.2 二维数组练习
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
/*
56 78 92
45 67 93
29 83 88
93 56 89
72 83 81
*/
int scores[5][3] = { 1, 2, 4, 5, 6, 7, 8, 9 };
int row = sizeof(scores) / sizeof(scores[0]);
int col = sizeof(scores[0]) / sizeof(scores[0][0]);
// 获取 5 名学生、3门功课成绩
for (size_t i = 0; i < row; i++)
{
for (size_t j = 0; j < col; j++)
{
scanf("%c", &scores[i][j]);
}
}
// 求一个学生的总成绩
for (size_t i = 0; i < row; i++) // 每个学生
{
int sum = 0;
for (size_t j = 0; j < col; j++)// 每个学生的成绩
{
sum += scores[i][j];
}
printf("第%d个学生的总成绩为:%d
", i + 1, sum);
}
//求一门功课的总成绩
for (size_t i = 0; i < col; i++) // 第几门功课
{
int sum = 0;
for (size_t j = 0; j < row; j++) // 每门功课的第几个学生
{
sum += scores[j][i];
}
printf("第%d门功课的总成绩为:%d
", i + 1, sum);
}
system("pause");
return EXIT_SUCCESS;
}
5.1.3 多维数组
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
int a[3][4][2] =
{
{
{1, 2},
{2, 3},
{4, 5},
{5, 6}
},
{
{45, 67},
{78, 90},
{12, 6},
{45, 9}
},
{
{ 45, 67 },
{ 78, 90 },
{ 12, 6 },
{ 45, 9 }
}
};
//int arr[2][3][5] = {1, 2, 4, 5, 6, 7, 8 , 9, 0, 0, 7, 9, 8};
for (size_t i = 0; i < 3; i++)
{
for (size_t j = 0; j < 4; j++)
{
for (size_t k = 0; k < 2; k++)
{
printf("%d ", a[i][j][k]);
}
printf("
");
}
printf("
");
}
system("pause");
return EXIT_SUCCESS;
}
5.2 字符数组和字符串
5.2.1 字符数组打印
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(void)
{
char str[6] = { 'h', 'e', 'l', 'l', 'o', '