局部变量和全局变量可以重名;作用域遵循就近原则
【1】输入输出
1.1按字符输入输出
man手册查看函数
man 函数
getchar
#include <stdio.h>
int getchar(void);
功能:向终端输入一个字符
参数:无
返回值:终端输入的字符的ASCII码值
putchar
#include <stdio.h>
int putchar(int c);
功能:终端输出一个字符
参数:字符的ASCII码值
返回值:字符的ASCII码值
putchar没有换行的效果,需要额外添加(printf("\n"); putchar('\n');)
getchar+putchar
1.2按格式输入输出
printf
#include <stdio.h>
int printf(const char *format, ...);
功能:按指定的格式向终端输出
参数:多个
返回值:正确输出字符个数
格式:
%d | int | |
%f | float | |
%1f | double | |
%c | char | |
%s | 字符串 | |
%p | 指针 | |
%o | 八进制 | %#o(完全打印,加上前面的0) |
%x | 十六进制 | %#x(完全打印,加上前面的0x) |
scanf
#include <stdio.h>
int scanf(const char *format, ...);
功能:按指定的格式向终端输入 (输入完毕时以回车结束)
参数:多个
返回值:正确输入的字符个数
第一个字符输入格式错误,直接返回0
scanf格式必须和终端输入格式一一对应,不能加'\n'
变量名前边加&(取地址符),表示取变量的地址
[2]垃圾字符回收
2.1 通过空格回收
可以回收一个或多个空格 tab 回车
2.2 %*c *抑制符 (了解)(只回收一个)
![](https://img-blog.csdnimg.cn/direct/d30b13bd40f94de0aa7bef1c5aa4f99c.png)
2.3 getchar(常用于循环语句)
回收'\nd'示例:
[3]分支语句
顺序结构:
分支结构:
循环结构:
if
基本结构:
多层分支
else if
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)
终端输入一个年份,判断是不是闰年:
终端输入大写,输出小写
终端输入小写,输出大写
输入其他,打印"error"
嵌套结构
注意:
if后边可以没有else, else前边必须有if
分支语句代码块只有一句时,可以省略{ }
switch
作业:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int y=0,m=0,d=0,sum=0;
while(1){
printf("请按year-month-day输入年份:");
scanf("%d-%d-%d",&y,&m,&d);
switch (m)
{
case 1:
sum=d;
break;
case 2:
sum=31+d;
break;
case 3:
sum=31+28+d;
break;
case 4:
sum=31+28+31+d;
break;
case 5:
sum=31+28+31+30+d;
break;
case 6:
sum=31+28+31+30+31+d;
break;
case 7:
sum=31+28+31+30+31+30+d;
break;
case 8:
sum=31+28+31+30+31+30+31+d;
break;
case 9:
sum=31+28+31+30+31+30+31+31+d;
break;
case 10:
sum=31+28+31+30+31+30+31+31+30+d;
break;
case 11:
sum=31+28+31+30+31+30+31+31+30+31+d;
break;
case 12:
sum=31+28+31+30+31+30+31+31+30+31+30+d;
break;
default:
break;
}
if(m>2)
{
if(y%4==0&&y%100==!0)
{
sum=sum+1;
printf("这是这一年的第%d天\n",sum);
}
else if(y%400==0)
{
sum=sum+1;
printf("这是这一年的第%d天\n",sum);
}
else
{
printf("这是这一年的第%d天\n",sum);
}
}
else
{
printf("这是这一年的第%d天\n",sum);
}
getchar();
}
return 0;
}