Day05
一、运算符表达式和流程控制语句
运算符
1、算数运算符【+ - * / % ++( 自增 ) --(自减)】
int a =10;
a++;等同于 a = a+1; 等同于 a += 1
++a;
2、赋值运算符【= += -= *= /= %=】
3、比较运算符【 > < >= <= == !=】
4、逻辑运算符【! && ||】
二、类型转换
1、隐式转换
编译器会自动将低的数据类型转成高的数据类型,转化后的数据正确
2、强制转化
需要程序根据实际用途去转化,得到的结果可能会省略部分的值
(类型说明符) 表达式
(float) a
三、程序流程结构
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 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
3、switch语句
格式:
switch(表达式)
{
case 值1:
代码
break;
case 值2:
代码;
break;
default:
代码
break;
}
练习:
通过键盘输入一名学员成绩 根据成绩【0-100】算出 优秀【90 100】 良好【80 99】 及格【60 -79】 不及格【0-59】
注意:
1.if条件语句执行效率差 switch 条件语句 执行效率高
2.if可以判断一个区间 switch用来判断一个值
3.三目运算符结构简单明了
4、循环语句
(while语句)练习:
从1到100 所有7的倍数 带7的全部略过
(do while语句)练习:
格式:
do{}while();
水仙花100 到999所有三位数的各个位数的立方和等于该数本身 那么她就是一个水仙花 153 =1+125+27 =153。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
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;
}
(for循环)
格式:
for(初始值;表达式;表达式){}
练习1:99乘法表 按照样式打印 并输出结果
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//linux 无法编译程序 -std=c90 c99 gcc -o .exe .c -std=c99
int i, j;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d\t", j, i, i*j);
}
printf("\n");
}
return 0;
}
练习2:水仙花
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
for (int i = 0; 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);
}
}
return 0;
}
练习:
【猜数字】猜1-100之内的数,如果你猜的数小于【数字】 提示你输入的数字太小了,如果你猜的数大于【数字】,提示你输入的数字太大了如果你的输入的数字等于【数字】,提示恭喜你猜对了 程序退出
使用随机数
1、导入头文件 time.h #include <time.h>
2、生成随机数种子 每次生成的随机数不一样
3、生成随机数 int num=rand()%100+1; //范围1-100
代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
int main(void)
{
//加入随机数种子
srand((unsigned int)time(NULL));
int num = rand() % 100 + 1;
int value;
while (1)
{
printf("请猜一下我心里想的什么数字:\t");
scanf("%d", &value);
if (value == num)
{
printf("恭喜你猜对了!!!\n");
break;
}
else if (value > num)
{
printf("大了大了,再往小了猜!\n");
continue;
}
else
{
printf("小了小了,再往大了猜!\n");
continue;
}
}
return 0;
}
练习:
//等腰三角星星。
#include<stdio.h>
int main(void)
{
printf("请输入行数\n");
int row,i,j,k;
scanf("%d", &row);
for (i = 1; i <=row; i++)
{
for (j = 1; j <= row - i; j++)
{
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}