1.梳理
- 输入输出
A:按字符输入输出
- Getchar用法
man函数中查找getchar用法
功能:向终端输入一个字符
参数:无
输出:字符的ascii码值
例:
#include<stdio.h>
int main(int argc, char const *argv)
{
int res=getchar();//输入a
printf("%d\n",res);//输出97
return 0;
}
输入一个字符,输出该字符的ascii码值
- putchar用法
man函数中查找putchar用法
功能:向中断输出一个字符
参数:字符的ascii码值
输出:字符的ascii码值
注意!Putchar没有换行功能需要自己添加
例:
#include<stdio.h>
int main(int argc,char const *argv[])
{
int res=getchar();
putchar(res);
int num= putchar('\n');
printf("%d\n",num);//q q 10
return 0;
}
B:按格式输入输出
- Printf:
功能:按指定格式输出
参数:多个
返回值:输出正确的字符个数
格式:
Int %d
Char %c
Float %f
Double %lf
字符串 %s
指针 %p
八进制 %o
十六进制 %x
- Scanf:
功能:按指定的格式输入
参数:多个
返回值:正确输入的字符个数
例:
#include<stdio.h>
int main(int argc,char const *argv)
{
int a=0 ,b=0;
scanf("%d %d",&a,&b);//输入2 12
printf("a:%d b:%d\n",a,b);//输出a:2 b:12
return 0;
}
C:垃圾字符处理(三种方式)
1.空格:回收一个或多个空格
2.%*c抑制符,可以回收任意一个字符
3.getchar()吸收\n垃圾
例:#include<stdio.h>
int main(int argc,char const *argv)
{
int a=0 ,b=0;
scanf("%d %d",&a,&b);//输入2 12
getchar();//回收垃圾字符\n
printf("a:%d b:%d\n",a,b);//输出a:2 b:12
char c=0 ,d=0;
scanf("%c %c",&c,&d);//输入q w 这里有两种回收垃圾字符的方式:空格、%*c
printf("a:%d b:%d\n",c,d);//输出c:113 d:119
return 0;
}
- 分支语句
A:if语句
基础结构:
If(常量值/表达式)
{
//代码块
}
Else if()
{
//
}
Else
{
//
}
================================
例题:判断平年闰年
#include<stdio.h>
int main(int argc,char const *argv)
{
printf("请输入年份\n");
int a=0;
scanf("%d",&a);
if(a%4==0&&a%100!=0)
{
printf("普通闰年\n");
}
else if(a%400==0)
{
printf("世纪闰年\n");
}
else
{
printf("平年\n");
}
return 0;
}
嵌套结构:
If(常量值/表达式)
{
if(常量值/表达式)
{
//代码块
}
}
Else
{
//
}
注意!!!
- if后面可以没有else但有else就必须要有if
2.分支代码只有一句时可以省略{}
B:switch
- 结构:
Switch(常量值/表达式)
{
Case 常量值1:
代码块;
Break;
Case 常量值1:
代码块;
Break;
Default:
代码块:
Break;
......
}
例题:100-90优秀;80-89良好;70-79一般;70以下补考
#include<stdio.h>
int main(int argc,char const *argv)
{
printf("请输入一个字符\n");
char x=0;
scanf("%c",&x);
if(x>=65&&x<=90)
{
printf("%c\n",x+32);
}
else if(x>=97&&x<=122)
{
printf("%c\n",x-32);
}
else
{
printf("erro\n");
}
return 0;
}
注意!!!
- case后面的常量是整形常量或字符常量
- Case中遇到break分支才会结束且可以没有break,在没有时会一直运行整个swich函数。
2. 题目:终端输入一个日期,判断是这一年的第几天
scanf("%d-%d-%d",&y,&m,&d);
闰年2月29天,平年2月28天
#include<stdio.h>
int main(int argc, char const *argv)
{
int a=0,b=0,c=0;
printf("输入一个年 月 日的日期\n");
scanf("%d %d %d",&a,&b,&c);
if(b>=1&&b<=2)
printf("%d\n",(30*(b-1)+c));
else if(b>2&&b<=12&&b%2==1)
{
if(a%4==0&&a%100!=0)
{
printf("%d\n",((b/2)*61+c-1));
}
else if(a%400==0)
{
printf("%d\n",((b/2)*61+c-1));
}
else
{
printf("%d\n",((b/2)*61+c-2));
}
}
else if(b>2&&b<=12&&b%2==0)
{
if(a%4==0&&a%100!=0)
{
printf("%d\n",((b/2)*31+(b/2-1)*30+c-1));
}
else if(a%400==0)
{
printf("%d\n",((b/2)*31+(b/2-1)*30+c-1));
}
else
{
printf("%d\n",((b/2)*31+(b/2-1)*30+c-2));
}
}
else
printf("error");
return 0;
}