一、输入输出(接DAY5)
1.1putchar(单字符输出)
#include<stdio.h>
int main(){
//可以传字符常量
putchar('M');
putchar('\n');
//也可以传ascii码
putchar(65);
putchar(10); //换行符
//也可以传保存字符ascii码的变量
char value='B';
putchar(value);
putchar(10);
//也可以传一个能计算出结果的表达式
putchar('A'+4);
putchar(3+7);
//printf("%c",value);
return 0;
}
1.2getchar(单字符输入)
#include <stdio.h>
int main()
{
char v1=getchar();
printf("v1=[%d][%c]\n",v1,v1);
//注意 连续多次调用getchar在终端获取字符时 回车也会被识别为字符
//这种对于我们没有用的字符 我们称之为 垃圾字符
getchar();//用来清理垃圾字符 吃掉回车
char v2=0;
v2=getchar();
printf("v2=[%d][%c]\n",v2,v2);
return 0;
}
二、运算符
2.1算术运算
表达式格式: 表达式1 运算符 表达式2
1+2 a+b (a+b)/3
表达式:常量、变量、表达式
运算符:算数运算、关系运算、逻辑运算、条件运算、赋值运算、逗号运算、位运算
2.2逻辑运算
格式: 表达式1 逻辑运算符 表达式2
说的是真假,0表示假,非0表示真,
2.3 关系运算
> >= < <= == !=
2.4三目运算/条件运算
2.5 赋值运算
a+1 --->不改变a的值
a+=1 ---->改变a的值
a++ ---->改变a的值
2.6逗号运算
int a=1,b=2;
int c=(a+b,a++,--b,++a,a/b); // c=3 a=3 b=1
2.7 位运算
主要是二进制运算,运算需要转换为补码运算之后再从补码转回原码
& 按位与 | 1&1=1 1&0=0 0&1=0 0&0=0 | 有一个0,结果结果0 全部为1,结果为1 | 3&2=2 -3&2=0 |
| 按位或 | 1|1=1 1|0=1 0|1=1 0|0=0 | 有一个1,结果结果1 全部为0,结果为0 | 3|2=3 |
^ 异或 | 1^1=0 1^0=1 0^1=1 0^0=0 | 相同为0不同为1 | 3^2=1 |
~ 取反 | ~1=0 ~0=1 | 非0结果为1 非1结果为0 | ~3=-4 |
左移一位表示乘以2 | 4 | 左边去掉,右边补0 | |
>> 右移 | 右移一位表示除以2 | -4>>2=-1 | 右边去掉,左边最高位如果是1则补1,如果是0则补0 |
2.8sizeof
sizeof是计算字节的关键字,同时也是运算符,但不是函数!!!!
2.9运算符优先级
三、三大控制结构![](https://img-blog.csdnimg.cn/c1cbdd779bcf4047bbc3f7cd7ba075b8.png)
i) 单分支选择结构
如判断语句if...else...就是一个单支选择结构
格式:
if(表达式)
{
C语句;
}
ii)双分支选择结构
格式:
if(表达式)
{
C语句1;
}
else
{
C语句2;
}
如果表达式1没达成则进入else执行c语句2
注意:else不能单独写,得和if成对
iii)多分支选择结构
多用于两个以上的判断条件
格式:
if(表达式1)
{
C语句1;
}
else if(表达式2)
{
C语句2;
}
.....
else
{
C语句n;
}
else if可以先n个,但else只能写一个,且不能单独写。
习题
1.任意输入两个数,请从小到大输出
#include<stdio.h>
int main(int argc, const char *argv[])
{
int num1=0;
int cha=0;
int num2=0;
scanf("%d",&num1);
scanf(" %d",&num2);
if(num1>num2){
cha=num1;
num1=num2;
num2=cha;
printf("%d %d\n",num1,num2);
}else if(num1<num2){
printf("%d %d\n",num1,num2);
}else{
printf("输入错误");
}
return 0;
}
2.计算三个数的最大值
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a=0;
int b=0;
int c=0;
scanf("%d %d %d",&a,&b,&c);
if((a>b&&a>c)||(a>c&&a>b)){
printf("max=%d\n",a);
}else if((b>a&&b>c)||(b>c&&b>a)){
printf("max=%d\n",b);
}else if((c>a&&c>b)||(c>b&&c>a)){
printf("max=%d\n",c);
}else{
printf("输入错误");
}
return 0;
}
3.输入一个字符, 如果是大写转换小写, 如果是小写转换大写, 如果是数字输出平方, 如果是特殊字符则直接输出
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a=getchar();
if(a>64&&a<91){
printf("%c\n",a+' ');
}else if(a>96&&a<123){
printf("%c\n",a-' ');
}else if(a>47&&a<58){
int b=(a-48)*(a-48);
printf("%d\n",b);
}else{
printf("%c\n",a);
}
return 0;
}