- 运算符表达式语句
- 赋值语句
-
非结构化语句
-
限定转向语句
-
continue;
- 在循环体内使用表示跳过continue后的代码从循环表达式开始执行。
- 在循环体内使用表示跳过continue后的代码从循环表达式开始执行。
-
break;
- 在循环体中使用表示结束本次循环。
- 在循环体中使用表示结束本次循环。
-
return;
-
-
非限定转向语句
- goto语句
-
-
结构化语句
-
循环语句
-
当型
-
for(;😉;
-
for(表达式1;表达式2;表达式3)//表达式1只执行一次
{
语句;
} -
表达式的含义:
- ①:表达式1:循环的初始化部分,用于初始化循环变量。
- ②:表达式2:循环继续的判断条件部分,用于判断循环什么时候终止。
- ③:表达式3:循环变量调整部分,用于循环条件的调整。
- ①:表达式1:循环的初始化部分,用于初始化循环变量。
-
执行顺序:
- 表达式1->表达式2->语句体->表达式3
-
break;
-
continue;
-
for循环表达式的省略
-
省略初始化变量
-
int main()
{
int i = 0;
for (; i <= 10; i++){
printf("%d ", i);
}return 0;
} -
注意:
-
如果for循环嵌套后,内置for循环则会因为第二次循环无变量初始化导致循环条件为假无法进入循环。
int main()
{
int i = 0;
int j = 0;
for (; i <= 10; i++){
//外层for循环一次,循环变量j循环10次后,j的值为10;
//外层for循环第二次,j的值还是为10,导致内置for循环因 为循环条件为假无法进入循环体。
for (; j < 10; j++){
printf("%d ", i);
}
}
return 0;
}
-
-
-
省略循环条件
- 该循环等同于while(1){},无限循环
-
省略循环调节
- 省略该表达式则无循环变量调节,循环变量始终无变化,导致死循环。
- 省略该表达式则无循环变量调节,循环变量始终无变化,导致死循环。
-
全部省略
- int main()
{
int i = 0;
int j = 0;
for (; ; ){
printf(“1”);
}
return 0;
} - 该循环等同于while(1){},无限循环
- int main()
-
-
建议:
- ①:不可在循环体内修改循环变量,防止for循环失去控制。
- ②:建议for循环的控制变量采用”前闭后开“的写法
- ①:不可在循环体内修改循环变量,防止for循环失去控制。
-
-
while(){}
- while(表达式){循环体},当表达式为真是执行循环体语句。
直到表达式为假
- continue;
- break;
- while(表达式){循环体},当表达式为真是执行循环体语句。
-
-
直到型
- do{…}while();
-
算法
-
二分法查找算法
-
例题1
//二分法查找:
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int foundNum = 5;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]);while (left <= right){
int avg = (left + right) / 2;
if (arr[avg] > foundNum){
right = avg;
}else
if (arr[avg] < foundNum){
left = avg;
}
else{
printf(“找到了,下标为:%d”,avg);
break;
}}
if (left > right) {
printf(“未找到!”);
}return 0;
}
-
-
-
-
条件语句
-
if语句
-
分支语句
- 当满足表达式时,执行表达式内的语句。
- 当满足表达式时,执行表达式内的语句。
-
语法结构一:
- if(表达式1)
语句;
- if(表达式1)
-
语法结构二:
- if(表达式1{
语句;
else
语句;
- if(表达式1{
-
语法结构三:
- if(表达式1){
语句;
else if(表达式2){
语句;
}else{
语句;
}
- if(表达式1){
-
注意:
-
int num = 10;
if(18<=num<100){语句;}表示式返回的值为真。
建议使用:
if(18<=num && num <100)
{语句;}
- else与最近的if匹配
-
-
在C语言中如何表示真假?
- 一切非0表示为真,0为假
-
-
switch语句
-
分支语句
- 当case后的整型常量表达式匹配到switch整型表达式后,执行匹配后的case后的语句块。
如未匹配到,则执执行default内的语句块。
- 当case后的整型常量表达式匹配到switch整型表达式后,执行匹配后的case后的语句块。
-
语法结构:
- int num = 1;
switch(num){
case 1:语句1;
break;
case 2:语句1;
break;
case 3:语句1;
break;
default:语句1;
break;
}
- int num = 1;
-
例题:
-
-
-
- #include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0; }
-
例题:
- 求素数
- 方法一
//求素数
//试除法
int nums = 200;
for (int i = 2; i <= 200; i++){
int j = 0;
for ( j = 2; j <= i; j++){
if (i%j == 0){
//j++;
break;
}
}
if (j ==i){
printf("%d ",i);
}
- 方法二(优化方法一)
//求素数
//试除法
int nums = 200;
for (int i = 100; i <= 200; i++){
int j = 0;
int sq = sqrt(i);
for (j = 2; j <= sqrt(i); j++){
if (i%j == 0){
//j++;
break;
}
}
if (j > sqrt(i)){
printf("%d ", i);
}
}
- 方法二(优化方法二)
//求素数
//试除法
int nums = 200;
for (int i = 101; i <= 200; i+=2){
int j = 0;
int sq = sqrt(i);
for (j = 2; j <= sqrt(i); j++){
if (i%j == 0){
//j++;
break;
}
}
if (j > sqrt(i)){
printf("%d ", i);
}
}
- 求1-100之间数字9的个数
- 解题
int count = 0;
for (int i = 1; i <= 100; i++){
int shi = i / 10;
int ge = i % 10;
if ( ge == 9){
count++;
}
if (shi == 9){
count++;
}
}
printf("%d", count);
- 计算1/1-1/2+1/3-1/4+…+1//99-1/100的值,打印结果。
- 解题
//计算1/1-1/2+1/3-1/4+...+1//99-1/100的值,打印结果。
float sum = 1;
for (int i = 2; i <= 100; i++){
if (i % 2 == 0){
sum -= 1.0 / i;
continue;
}
sum += 1.0 / i;
}
printf("%f",sum);
- 求10个正数中最大值
- 解题
//求是个数中的最大值
//但该 *** 作不能比较负数。
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int size = sizeof(arr) / sizeof(arr[0]);
int max = 0;
for (int i = 0; i < size; i++){
if (arr[i] > max){
max = arr[i];
}
}
printf("%d", max);
//求是个数中的最大值
//解决了不能比较负数的问题。
// int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int arr[] = { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 };
int size = sizeof(arr) / sizeof(arr[0]);
int max = arr[0];
for (int i = 1; i < size; i++){
if (arr[i] > max){
max = arr[i];
}
}
printf("%d", max);
- 猜最大值游戏
- 解题
void nemu(){
printf("###############################\n");
printf("##1、开始猜数字游戏 0、退出##\n");
printf("###############################\n");
}
void play(){
int ran = rand() % 100 + 1;
while (1){
printf("请输入您猜的数字:");
int num = 0;
scanf("%d", &num);
if (num > ran){
printf("猜大了\n");
}
else if(num < ran){
printf("猜小了\n");
}
else{
printf("恭喜您!猜对了\n");
break;
}
}
}
int main(){
//设置随机值
srand((size_t)time(NULL));
int input = 0;
do{
nemu();
scanf("%d", &input);
switch (input){
case 1:printf("游戏开始\n"); play(); break;
case 0:printf("游戏结束,欢迎再来!\n"); break;
default:printf("输入有误,请重新输入!\n"); break;
}
} while (input);
return 0;
}
空语句
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)