一、Xmind整理:
二、课上练习:
1.练习1:
void main()
{
int a=180;
char c;
c=(char)++a;
printf("c=%d a=%d\n",c,a);
char d=4;
short e;
e=(++d)++;
printf("d=%d e=%d\n",d,e);
}
2.练习2:
#include<stdio.h>
void main( )
{
int i=20;
printf(“i=%d\n”, --i); 先自减,后运算 19
printf(“i=%d\n”,i); 19
}
#include<stdio.h>
void main( )
{
int i=20;
printf(“i=%d\n”, i--); 先运算,后自减 20
printf(“i=%d\n”,i); 19
}
#include<stdio.h>
void main( )
{
int i=20;
printf(“i=%d\n”, ++i); 先自增,后运算 21
printf(“i=%d\n”,i); 21
}
#include<stdio.h>
void main( )
{
int i=20;
printf(“i=%d\n”, i++); 先运算,后自增 20
printf(“i=%d\n”,i); 21
}
3.练习3:
int a,b,c; //定义变量
a=b=c=0; //赋值
a=++b + ++c; //计算 ++b: 1 ++c:1 a=2
printf(“\n%d,%d,%d”,a,b,c); //2 1 1
a=b++ + c++; //计算 //b++:2 c++:2 a=2
printf(“\n%d,%d,%d”,a,b,c);//2 2 2
a=++b + c++; //计算 //++b: 3 c++:3 a=5
printf(“\n%d,%d,%d”,a,b,c);//5 3 3
a=b-- + --c; //计算 //b--: 3 --c:2 a=5
printf(“\n%d,%d,%d”,a,b,c);//5 2 2
4.逻辑运算 :
int main(int argc, const char *argv[])
{
/*
printf("1&&1=%d\n",1&&1);
printf("1&&0=%d\n",1&&0);
printf("0&&1=%d\n",0&&1);
printf("0&&0=%d\n",0&&0);
int a = 3;
int b = 4;
int c = (a++>3) && (b++>4);//
printf("c=%d\n",c);//0
printf("a=%d\n",a);//4
printf("b=%d\n",b);//4
printf("1||1=%d\n",1||1);
printf("1||0=%d\n",1||0);
printf("0||1=%d\n",0||1);
printf("0||0=%d\n",0||0);
int a = 4;
int b = 3;
int c = (a++>=4) || (b++>3);
printf("c=%d\n",c);//1
printf("a=%d\n",a);//5
printf("b=%d\n",b); //3*/
#if 0
int a = 0, b = 2, c ;
c =!a || ++b&&a--;
printf("c=%d\n",c);//1
printf("a=%d\n",a);//0
printf("b=%d\n",b);//2
#else
int a = 0, b = 2, c ;
c = a || ++b&&a--; // b=3
printf("c=%d\n",c);//0
printf("a=%d\n",a);//-1
printf("b=%d\n",b);//3
#endif
5.关系运算:
判断10-100: a>=10 && a<=100
小于10,大于100: a<10 || a>100
表示大写: 'A'--'Z' a>='A'&&a<='Z'
表示小写: 'a'--'z' a>='a'&&a<='z'
表示数字: '0'--'9' a>='0'&&a<='9'
6. 条件运算/三目运算:
练习1:输入一个数,判断是奇数还是偶数?
num%2==0?printf("偶数\n"):printf("奇数");
练习2:输入一个年份,判断这个年份是否是闰年?
闰年:能被4整除,不能被100整除或者被400整除
int year;
printf("please enter year:");
scanf("%d",&year);
//表达式1?表达式2:表达式3
year%4==0&&year%100!=0||year%400==0?\
printf("YES"):printf("NO");
练习3:输入一个数,判断这个数是否是水仙花?
1.是三位数
2.各个位数字立方和等于本身
153=1*1*1+5*5*5+3*3*3
int num;
printf("please enter num:");
scanf("%d",&num);
//153=1*1*1+5*5*5+3*3*3
int g=num%10;
int b=num/100;
int s=num/10%10;
//注意:当语句较长时可以使用\连接符
//注意:在使用pow是,编译需要添加参数-lm
//注意:引入头文件#include <math.h>
num>=100&&num<=999&&pow(g,3)+pow(s,3)+pow(b,3)==num?\
printf("YES"):printf("NO");
7.逗号运算:
int a=1,b=2;
int c=(a+b,a++,--b,++a,a/b); c=3 a=3 b=1
8.位运算:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
/*
printf("1&1=%d\n",1&1);
printf("1&0=%d\n",1&0);
printf("0&1=%d\n",0&1);
printf("0&0=%d\n",0&0);
char a=3&2;
printf("a=%d\n",a);
char b=-3&2;
printf("b=%d\n",b);
*/
//3-->11
//源码/反码/补码:0000 0011
//2-->10
//源码/反码/补码:0000 0010
// 0000 0011
//&0000 0010
// 0000 0010--->2
//-3&2
//-3-->11
//原码:1000 0011
//反码:1111 1100
//补码:1111 1101
//2--->0000 0010
// 1111 1101
//&0000 0010
// 0000 0000
/*
printf("1|1=%d\n",1|1);
printf("1|0=%d\n",1|0);
printf("0|1=%d\n",0|1);
printf("0|0=%d\n",0|0);
printf("3|2=%d\n",3|2);
*/
//3-->0000 0011
//2-->0000 0010
// 0000 0011--->3
/*
printf("1^1=%d\n",1^1);
printf("1^0=%d\n",1^0);
printf("0^1=%d\n",0^1);
printf("0^0=%d\n",0^0);
printf("3^2=%d\n",3^2);
*/
//3--->0000 0011
//2--->0000 0010
// 0000 0001 1
// printf("~1=%d\n",~1);
//1--->0000 0001
//~
// 1111 1110补码
// 1111 1101反码
// 1000 0010原码 --->-2
// printf("~0=%d\n",~0);
// printf("~3=%d\n",~3);
printf("4<<2=%d\n",4<<2);
//4---> 00000100
//<< 2
// 00000100
//左边多余为去掉,右边补0
printf("-5<<2=%d\n",-5<<2);
//-5--->
// 1000 0101
// 1111 1010
// 11111011
//<< 2
//11111011
// 11101100补码
// 11101011反码
// 10010100原码---> -20
printf("-4>>2=%d\n",-4>>2);
// -4--->
// 1000 0100原码
// 1111 1011反码
// 11111100补码
//>> 2
// 11111100
// 11111111 补码
// 11111110 反码
// 10000001 原码---->-1
return 0;
}
9.多分支选择结构:
1>对学生的考试成绩分级评测,规则为: 成绩1-100之间合法
1、成绩>=90为等级A
2、成绩>=80为等级B
3、成绩>=70为等级C
4、成绩>=60为等级D
5、成绩<60为等级E
int main(int argc, const char *argv[])
{
printf("please enter score:");
int score;
scanf("%d",&score);//120
if(score<0 || score>100)
printf("ERROR");
else if(score>=90)
printf("A");
else if(score>=80)
printf("B");
else if(score>=70)
printf("C");
else if(score>=60)
printf("D");
else
printf("E");
return 0;
}
三、课后作业:
1.任意输入两个数,请从小到大输出:
方法一:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,t;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if(a<b)
{
printf("%d %d\n",a,b);
}
else
{
t=a;
a=b;
b=t;
printf("%d %d\n",a,b);
}
return 0;
}
方法二:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if(a<b)
{
printf("%d %d\n",a,b);
}
else
{
a=a+b;
b=a-b;
a=a-b;
printf("%d %d\n",a,b);
}
return 0;
}
方法三:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if(a<b)
{
printf("%d %d\n",a,b);
}
else
{
a=a^b;
b=a^b;
a=a^b;
printf("%d %d\n",a,b);
}
return 0;
}
2. 计算三个数的最大值:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c;
printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
int max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf("max=%d\n",max);
return 0;
}
3.输入一个字符, 如果是大写转换小写
如果是小写转换大写
如果是数字输出平方
如果是特殊字符则直接输出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, const char *argv[])
{
char ch;
scanf("%c",&ch);
if(ch>='A'&& ch<='Z')
{
ch+='a'-'A';
printf("大写转小写结果为:%c\n",ch);
}
else if(ch>='a'&&ch<='z')
{
ch-='a'-'A';
printf("小写转大写结果为:%c\n",ch);
}
else if(ch>='0'&&ch<='9')
printf("该数的平方为:%.0f\n",pow(ch-'0',2));
else
printf("%c为特殊字符\n",ch);
return 0;
}