day02
补充:标识符
标识符:C语言规范,只能有字母(a-z,A-Z),数字(0-9),下划线(_)构成,不能为数字。
命名的时候,要做到见明知意。
大小写是有区别的,比如tedu和TEDU是两个不同的标识符。 C语言中虽然没有规定正式的长度,但是一般也会受到不同编译器的限制,也会受到操作系统的限制。
标识符的判断:
3p ss*qq -6p
二、运算符
1.自增自减
如果,运算符放在数字的前面,先进行自增或者减运算,再进行其他运算; 如果,运算符放在数字的后面,先进行其他运算,再进行自增或者减的运算。
#include
extern void opr1();
extern void sopr();
extern void switch_case();
//for循环
void for_demo(){
/*
//1 +3 + 5 + 7 + ...+ 99 int i, sum;
sum = 0;
for (i = 1; i < 100; i+=2) {
sum += i; }
printf("%d", sum);*/
int i, j;//用来表示i - 行与j - 列 for (i = 0; i < 9; i++)//控制行 {
for (j = 0; j < 9; j++)//控制列 {
printf("%s", "*"); }
printf("\n");//换行 }
printf(" * "); printf("***");
}
void test(){ /*
int x = 10;
int y = 20;
++x;//11
--y;//19 printf("%d,%d",x, y); x++;
y--; printf("%d,%d",x, y);
int x = 12, y = 1;
int p = x - (y--);//1
int q = (x++) - (--y);//2
printf("%d,%d",p, q);//11, 13 //14
*/
}
void while_demo(){
int i = 1; int sum = 0; do
{
sum += i; i ++; //语句块
} while (i <= 100); printf("sum = %d", sum);
/*
int i = 1;
int sum = 0; while (i <= 100) {
sum = sum + i;
i++; }
printf("sum = %d", sum); */
/*
while (0)
{
printf("峰哥很牛逼!!!");
}*/ }
int main() {
for_demo(); //while_demo();
//opr1(); //sopr(); //switch_case();
return 0; }
2.除法运算
如果除数和被除数都为整数的时候,那么结果也是一个整数。 如果运算中有浮点型数据参与运算,那么得到的结果是一个浮点型。系统会将整型隐式的转化为浮点类型。
3.取模运算 取模运算的结果正负取决于我们被模运算%左边的符号,与模运算右边的数的符号没有关系。 重点:不能对小数进行取模运算。
#include
/*三目运算符*/ void sopr()
{
/*
int a = 25, b = 38; int max;
if (a > b) {
max = a; }
else {
max = b; }
max = a > b ? a : b;
printf("max = %d\n", max); */
int year, day; printf("请输入一个年份:"); scanf_s("%d", &year);
/*
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
printf("%d是闰年", year); }
(year % 400 == 0) || (year % 4 == 0 && year % 100 != 0) ? "闰年":"平年"; */
day = ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) ? 29 : 28; printf("%d", day);
}
4.三目运算符 一般形式:表达式1?表达式2:表达式3 ||“或”
&& “且”
!“非”
#include
void opr1() {
//int a = 10, b = 20; //int x = a / b; //printf("%d", x);//0 //double x = a * 1.0 / b; //printf("%lf", x);//0.5 /*
int result; result = a result = a result = a */
- b; + b; * b;
int x = 9;
int y = 5;
int result;
result = x % y;//2
//result = -x % y;
printf("%d\n", -9 % 5);//-2 //printf("%d\n", 9.5 % -5);//-2 2 printf("%d\n", -9 % -5);//2 -2
}
三、分支结构-循环
1.if-else 在使用if语句的时候,我们需要注意以下两点:
在使用if的时候,判断条件要用括号括起来; 语句块是由{}包围起来,但是注意一般后面不需要加分号了,如果加上也没关系,但是一般不建议这样去使用。
2.switch-case
switch是另外一种选择分支语句,用来代替我们之前使用的if-else的多个分支的语句,基本格式是下面的写法:
switch(表达式){
case 整型数值1:语句1; case 整型数值2:语句2; case 整型数值3:语句3; ...
case 整型数值n:语句n; default:语句 n + 1;}
#include
void switch_case() {
//定义一个年、月、日的基本数据类型int
int year, month, day = 31; printf("请输入一个年月:"); scanf_s("%d", &year); scanf_s("%d", &month);
if(month < 1 || month > 12) {
printf("输入正确的月份:1-12"); }
switch (month) {
/* case 1: case 3: case 5: case 7: case 8:
case 10: case 12:
day = 31;
break;*/ case 4:
case 6: case 9: case 11:
day = 30;
break; case 2:
//优化----
//day = (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 29:28; day = 28 + (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)); break;
}
printf("%d\n", day); }
3.while循环 while的一般格式如下:
while(表达式){ 语句块;
}
int main(){
int i=1, sum=0;
while(i<=100){ sum+=i;
i++; }
printf("%d\n",sum);
return 0; }
代码分析:
1) 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。
2) 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。
3) 重复执行步骤 2)。
4) 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面 的代码。
如果循环条件中不包含变量,会发生什么情况呢?
1) 循环条件成立时的话,while 循环会一直执行下去,永不结束,成为“死循环”。
2) 循环条件不成立的话,while 循环就一次也不会执行。运行程序,什么也不会输出。
while(1){ printf("qqq");
}
while(0){ printf("qqqq");
}
4.do-while循环 do-while循环的一般格式看下面:
do-while与while的区别如下: 它会先执行一下“语句块”,如果为真,就会继续执行循环;如果是假,则终止循环。不管如何,do-while总会至少执行一次“语 句块”;
在实际开发中,while的应用要比do-while要多。
5.for循环
执行顺序 作业:
1.设计一个百分制的成绩评定:
0-59分: D 60-80分:C 80-90分:B 91-100分:A 要求:不能输入小于0的数,也不能输入大于100的数字。 2.闰年的判断,如果是闰年,则输入月份后,打印出对应的天数。利用三目运算符结合使用。 3.画菱形。
do
{
//语句块
} while (表达式);
int i = int
do {
} while (i <= 100); printf("sum = %d", sum);
1;
sum = 0;
sum += i; i ++; //语句块
for(表达式1;表达式2;表达式3){ 语句块;
}