一、操作数、运算符和表达式
书写规则:
• (1)运算符不能相邻。例a+-b是错误的。
• (2)乘号不能省略。例x 乘以y 应写成:x*y,不能写成xy。
• (3)可用多层括号表示运算次序,括号必须成对出现,均
使用小括号。
二、算术运算符
(1)+ 加法运算符,或表示正值,如3+2,+1
(2)- 减法运算符,或表示负值,如3-2,-8
(3)* 乘法运算符,如4*5
(4)/ 除法运算符,如5/3
(5)% 求余运算符,如5%3
• C语言规定:
两个整数相除的结果整数,小数部分被舍去。
例如:7/3的结果值是2不是2.3333, 而7.0/3的结果是2.3333
%运算符只能用于整数相除求余,运算结果的符号与被除数相
同。
1 #include <stdio.h> 2 int main() 3 { 4 int i=1003; 5 //求模取余 6 printf("%d\n",i%100); 7 8 int j,cj; 9 int a,b,c; //个十百 10 int n; //取余 11 scanf("%d",&j); 12 a=j%10; 13 b=j/10%10; 14 c=j/100%10; 15 printf("%d %d %d\n",c,b,a); 16 cj=j; 17 while(cj>0) 18 { 19 n=cj%10; //取余,得到个位数 20 printf("%d",n); 21 cj=cj/10; //除十之后,去除小数部分,取整,舍弃个位 22 } 23 return 0; 24 }
三、自增自减运算
• 自增、自减运算符的作用是将变量的值增加1或者减少1。
• 自增运算符是++ • 自减运算符是--
• 只能对变量使用,不能用于常量和表达式
• 作前缀(++i)时是先运算、后引用 • 作后缀(i++)时是先引用、后运算
1 #include <stdio.h> 2 int main() 3 { 4 int i=10; 5 // 参与运算,先运算,再加一 6 printf("%d\n",i++); 7 i=10; 8 // 参与运算, 先加一,再运算 9 printf("%d\n",++i); 10 11 i=10; 12 int j; 13 j=i++; //i++返回i的值 14 printf("%d %d\n",i,j); //11 10 15 16 i=10; 17 j=++i; //++i返回i+1的值 18 printf("%d %d\n",i,j); //11 11 19 return 0; 20 }
四、逻辑运算符
1 #include <stdio.h> 2 3 int main() 4 { 5 int i=10,j=20; 6 int m,n; 7 m=(5>4) && (j=5); //真 && 真 8 printf("%d %d\n",m,j); // 1 ,j=5 9 10 n=(3>4) && (j=5); //假 && 真 ,j=5没有运行 11 printf("%d %d\n",n,j); // 0 ,j=20 12 return 0; 13 }
1 #include <stdio.h> 2 3 /* 4 输入一个年份,判断是否是闰年 5 闰年是四年一闰,百年不闰,四百年再闰 6 */ 7 8 int main() 9 { 10 int year; 11 int a,b,c; 12 scanf("%d",&year); 13 a=year%4; 14 b=year%100; 15 c=year%400; 16 if((a==0 && b!=0) || c==0) 17 { 18 printf("%d是闰年",year); 19 20 } 21 else 22 { 23 printf("%d是平年",year); 24 } 25 return 0; 26 }
五、数据的输入输出
1、%d格式符
2、s格式符
1 #include <stdio.h> 2 3 int main() 4 { 5 printf("%3s,%-6s,%-5.2s,%4.3s,%.4", 6 "hello","hello","hello","hello","hello"); 7 return 0; 8 }
3、f格式符
1 #include <stdio.h> 2 3 main() 4 { 5 float f=3.456; 6 printf("%f, %7.2f, %-7.2f, %7f, %.2f", 7 f, f, f, f, f); 8 return 0; 9 }
六、字符输入getchar和字符串输入gets,字符输出putchar和字符串输出puts
scanf函数遇到第一个空格就不在读入了,c语言专门提供了一个字符串函数gets,他可以读入包括空格的字符串,至遇到回车符为止。
使用"%[^\n]" 也是可以接收输入一个带空格的字符串,直到回车结束接收
char buf[10] = {0};
scanf("%[^\n]",buf); //可以读取空格,回车结束输入
%[abc]表示字符组合包括a、b和c,如果遇到这三个字符之外的字符,则停止接收。%[^abc]代表字符组合为abc以外的所有字符
1 #include <stdio.h> 2 3 main() 4 { 5 // char i; 6 // i=getchar(); //字符输入 7 // putchar(i); //字符输出 8 char str[10]; 9 gets(str); //字符串输入 10 puts(str); //字符串输出 11 return 0; 12 }
七、课后作业
1 #include <stdio.h> 2 /* 3 输入 3 个整数 x、y 以及 z,请把这三个数从小到大输出。 4 */ 5 int main() 6 { 7 int x,y,z; 8 int i,j,n; 9 scanf("%d %d %d",&x,&y,&z); 10 if(x>y) 11 { 12 i=x; 13 x=y; 14 y=i; 15 } 16 if(x>z) 17 { 18 j=x; 19 x=z; 20 z=j; 21 } 22 if(y>z) 23 { 24 n=y; 25 y=z; 26 z=n; 27 } 28 printf("%d<%d<%d",x,y,z); 29 return 0; 30 }
1 #include <stdio.h> 2 /* 3 为某商城编写一个程序,完成顾客购物后根据优惠政策计算付款项的功能。 4 某商城有如下优惠政策: 5 所有的本商城的会员购物享受 9 折优惠。 6 对于非会员的顾客购物满 100 元,也可以享受 9 折优惠。 7 本身是会员,并且购物满 100 元可以享受 8 折优惠。 8 假如某顾客从该商城购买了三件商品,请计算该顾客可得到的折扣额(如果有), 9 以及打折 后需支付的金额。 10 */ 11 int main() 12 { 13 float x,y,z; 14 float sum; //购物总额 15 float zf; //支付的金额 16 char i; //顾客 17 18 printf("三件商品的价格:\n"); 19 scanf("%f %f %f",&x,&y,&z); 20 getchar(); 21 printf("您是否是本商城的会员,请输入‘Y ’或者‘N ’\n"); 22 i=getchar(); 23 24 sum=x+y+z; 25 //非会员的顾客没有折扣 26 if(i=='N') 27 { 28 printf("您此次消费支付的金额为:%.1f元",sum); 29 } 30 31 //会员购物享受 9 折优惠,非会员的顾客购物满 100 元,也可以享受 9 折优惠。 32 if((i=='Y' && sum<100) || (i=='N' && sum>=100)) 33 { 34 zf=sum*0.9; 35 printf("您此次消费支付的金额为:%.1f元",zf); 36 } 37 38 //是会员,并且购物满 100 元可以享受 8 折优惠。 39 if(i=='Y' && sum>=100) 40 { 41 zf=sum*0.8; 42 printf("您此次消费支付的金额为:%.1f元",zf); 43 } 44 return 0; 45 }
1 #include <stdio.h> 2 /* 3 编写一个程序,要求用户输入今天是星期几,根据用户的输入判断是工作日还示合适的问候语。 4 实现思路: 5 如果输入的数字不在 1-7 之间,则显示“请输入位于 1-7 之间的数”。 6 如果用户输入的数字为 6 或 7,则显示类似“周末愉快!”的话语, 7 大家可自对于 1-5 之间的数字,则显示类似“工作日愉快!”,大家还可以自行脑补! 8 */ 9 main() 10 { 11 int i; 12 printf("考考你,今天是星期几啊\n"); 13 printf("小笨蛋今天是星期"); 14 scanf("%d",&i); 15 if(1<=i && i<=5) 16 { 17 printf("工作日愉快!"); 18 } 19 else if(6<=i && i<=7) 20 { 21 printf("周末愉快!"); 22 } 23 else 24 { 25 printf("请输入位于 1-7 之间的数"); 26 } 27 return 0; 28 }