运算符表达式和流程控制语句

mac2024-08-17  64

运算符表达式和流程控制语句

1、运算符

1、算数运算符【+ - * / % ++( 自增 ) --(自减)】 int a =10; a++;等同于 a = a+1; 等同于 a += 2 ++a; 2、赋值运算符【 = += -= *= /= %=】 int a=10; 将10赋值给整型变量a //a+=3;等同于 a=a+3 a -= 3; 7 a *= 3; 30 a %=3;a=a%3; 3…1 1 a /=3; a =a/3; 3、比较运算符【 > < >= <= == !=】 int a=10; int b=9; a>b【成立】在计算机中用1表示真 用0表示假 printf("%d\n",a>b); int num =14; num % 7 == 0 14 %7 = 2 … 0 3 != 2【成立】 4、逻辑运算符【! && ||】 !【非】 非真为假 非假为真 &&【与】 同真为真 其余为假 ||【或】 同假为假 其余为真

#include <stdio.h> int main01(void) { //比较运算符 //int a = 10; //int b = 20; //printf("10 小于 20 : %d\n", a <= b); //赋值运算符 //int a = 10; //int b = 20; 加加在后 先计算表达式的结果在计算变量的值 a++; int c = b * a++; 加加在前 先计算变量的值在进行表达式计算 ++a; //int c = b * ++a; //printf("c=%d\n", c); //printf("a=%d\n", a); //逻辑运算符 int a = 10; int b = 20; printf("%d\n", (a > b && b > a )); //int a = 10; //int b = 20; //int c = a * (b + a); return 0; }

表达式:通过变量或者常量和运算符连接起来成为表达式 在程序中表达式的结果可以作为程序的条件出现

2、类型转换

1、隐式转换 编译器会自动将低的数据类型转成高的数据类型,转化后的数据正确 2、强制转化 需要程序根据实际用途去转化,得到的结果可能会省略部分的值

3、条件选择语句:

1、if语句 格式: if(表达式){ 语句 代码} 如果表达式为真 执行括号内代码 格式:if(表达式){ 代码}else {代码}如果表达式为真 执行if括号内代码 如果为假执行else{}内代码 格式:if(表达式1){代码} else if(表达式2){代码}else if(表达式3){代码}else{代码} 格式

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main03() { int a = 20; int b = 20; if (a > b) { printf("a<b\n"); } else if (a == b) { printf("a==b"); } else { printf("a>b\n"); } printf("程序执行结束!\n"); //system("pause"); return EXIT_SUCCESS; }

练习: 三只小猪称体重 定义三个变量 可以通过键盘录入体重

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int a, b, c; scanf("%d%d%d", &a, &b, &c); if (a > b) { if (a > c) { printf("a重 :%d\n", a); } else { printf("c重 : %d\n", c); } } else { if (b > c) { printf("b重 :%d\n", b); } else { printf("c重 : %d\n", c); } } system("pause"); return EXIT_SUCCESS; }

2、三目运算符 格式:表达式? 选项1【表达式】:选项2【表达式】 如果表达式为真 选择选项1 的结果 如果为假选择选项2

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main05() { int a = 40; int b = 50; int c = 30; //三目 //int d = a>b ? 1 : 0; //表达式1?(表达式2?结果1:结果2):(表达式3?结果1:结果2); int d = a > b ? (a > c ? a : c) :( b > c ? b : c); printf("%d\n", d); return EXIT_SUCCESS; }

3、switch语句

格式:switch(表达式) { case 值1: 代码 break; case 值2: 代码; break; default: 代码 break; }

练习:通过键盘输入一名学员成绩 根据成绩【0-100】算出 优秀【90 100】 良好【80 99】 及格【60 -79】 不及格【0-59】

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main06() { int a; scanf("%d", &a); //switch (a) //{ //case 1: // printf("a的值为:%d", a); // break; //case 10: // printf("a的值为:%d\n", a); // break; //default: // printf("a是啥?\n"); // break; //} switch (a/10) { case 10: //printf("优秀\n"); //break; case 9: printf("优秀\n"); break; case 8: printf("良好\n"); break; case 7: //printf("及格\n"); //break; case 6: printf("及格\n"); break; default: printf("不及格\n"); break; } return EXIT_SUCCESS; }

注意:if条件语句执行效率差 switch 条件语句 执行效率高 if可以判断一个区间 switch用来判断一个值 三目运算符结构简单明了

练习:从1到100 所有7的倍数 带7的全部略过 17 71 1、循环 2、条件判断 3、跳出本次循环,继续下次循环

70/10 == 7

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main08() { int index = 0; while (index <= 100) { index++; //条件: 1、带7 2、7的倍数 35 if (index % 7 == 0 || index % 10 == 7 || index / 10 == 7) { //跳出 continue; } printf("数字:%d\n", index); } system("pause"); return EXIT_SUCCESS; }

练习:水仙花100 到999所有三位数的各个位数的立方和等于概述本身 那么她就是一个水仙花 153 =1+125+27 =153

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main10() { int index = 100; do { //将一个三位数拆解成个位 十位 百位 int a = 0, b = 0, c = 0; //百位 a = index / 100; //十位 b = index / 10 % 10; //个位 c = index % 10; if (a*a*a + b*b*b + c*c*c == index) { printf("%d是水仙花\n", index); } index++; } while (index < 1000); system("pause"); return EXIT_SUCCESS; } #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main12() { for (int i = 100; i < 1000; i++) { //将一个三位数拆解成个位 十位 百位 int a = 0, b = 0, c = 0; //百位 a = i / 100; //十位 b = i / 10 % 10; //个位 c = i % 10; if (a*a*a + b*b*b + c*c*c == i) { printf("%d是水仙花\n", i); } } system("pause"); return EXIT_SUCCESS; }

练习:99乘法表 按照样式打印 并输出结果

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 for(int i=1;i<=9;i++)//3 4 { for(int j=1;j<=i;j++) { printf("%d*%d=%d ",j,i,j*i); } printf("\n"); //putchar('\n'); }

练习:等腰三角形

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int row; printf("请输入行数:\n"); scanf("%d", &row); for (int i = 1; i <= row; i++) { for (int j = 1; j <= row - i; j++) { printf(" "); } for (int k = 1; k <= i * 2 - 1; k++) { printf("*"); } printf("\n"); } system("pause"); return EXIT_SUCCESS; }

练习:猜数字 猜1-100之内的数 如果你猜的数小于【数字】 提示你输入的数字太小了 如果你猜的数大于【数字】 提示你输入的数字太大了 如果你的输入的数字等于【数字 】 恭喜你才对了 程序退出

使用随机数 1、导入头文件 time.h #include <time.h> 2、生成随机数种子 每次生成的随机数不一样 3、生成随机数 int num=rand()%100+1;1-100

int num = rand()%100+1; int value; for(;;)while(1) { printf("请输入一个整数\n") scanf("%d",&value); if(value>num) { printf("你输入的数太大了\n"); } else if(value<num) printf("你输入的数太大了\n"); else { printf("输入正确\n"); ; } } #define _CRT_SECURE_NO_WARNINGS #include <time.h> #include<stdio.h> #include<string.h> #include<stdlib.h> int main15() { //加入随机数种子 srand((unsigned int)time(NULL)); int num = rand()%100+1;//1-100 int value; while (1)//for(;;) { scanf("%d", &value); if (value > num) printf("您输入的数太大了\n"); else if (value < num) printf("您输入的数太小了\n"); else { printf("恭喜您!中奖啦~\n"); break; } } system("pause"); return EXIT_SUCCESS; }
最新回复(0)