1.输入输出
按字符输入输出
getchar()
功能:向终端输入一个字符
参数:无
返回值:终端输入的字符的ASCII码值
#include<stdio.h>
int main(int argc, char const *argv[])
{
int res=getchar();
printf("%d\n",res);
return 0;
}
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);
return 0;
}
按格式输入输出
printf
#include <stdio.h>
int printf(const char *format, ...);
功能:按指定的格式向终端输出
参数:多个
返回值:正确输出字符个数
格式:
%d int
%c char
%f float
%lf double
%s 字符串
%p 指针
%o 八进制 %#o 原样输出
%x 十六进制 %#x 原样输出
scanf
#include <stdio.h>
int scanf(const char *format, ...);
功能:按指定的格式向终端输入 (输入完毕时以回车结束)
参数:多个
返回值:正确输入的字符个数
第一个字符输入格式错误,直接返回0
scanf格式必须和终端输入格式一一对应,不能加'\n'
变量名前边加&(取地址符),表示取变量的地址
#include<stdio.h>
int main(int argc, char const *argv[])
{
int a=0,b=0;
scanf("%d%d",&a,&b);
a=a+1,b=b+1;
printf("a=%d b=%d\n",a,b);
return 0;
}
垃圾字符回收
通过空格回收
通过抑制符回收
%c*
通过getchar()回收
scanf输入结束时,会在终端输入'\n';
解决'\n'对程序造成的影响:
#include<stdio.h>
int main(int argc, char const *argv[])
{
char a=0,b=0;
scanf("%c %c",&a,&b);
getchar();
printf("%d %d\n",a,b);
char c=0,d=0;
scanf("%c %c",&c,&d);
printf("%d %d\n",c,d);
return 0;
}
在不使用getchar()的情况下
使用getchar()的情况下
分支结构
if语句
基本结构
if(常量值或表达式)
{
//代码块1;
}
else
{
//代码块2;
}
多层分支
if(表达式1)
{
代码段1;
}
else if(表达式2)
{
}
else
{
}
判断是否闰年
#include<stdio.h>
int main(int argc, char const *argv[])
{
int a=0;
scanf("%d",&a);
if(a%4==0&&a%100!=0)
{
printf("当前年份为普通闰年\n");
}
else if(a%4==0&&a%100==0)
{
printf("当前年份为世纪闰年\n");
}
else{
printf("当前年份为平年\n");
}
return 0;
}
将字母大小写变化
#include<stdio.h>
int main(int argc, char const *argv[])
{
char zf;
scanf("%c",&zf);
if(zf>='A'&&zf<='Z')
{
printf("%c\n",zf+32);
}
else if(zf>='a'&&zf<='z')
{
printf("%c\n,",zf-32);
}
else{
printf("error\n");
}
return 0;
}
嵌套结构
if(表达式1)
{
if(表达式2)
{
}
}
================
if(s>=0&&s<=100)
{
// if() ABC...
}
else
{
printf("error\n");
}
if后边可以没有else, else前边必须有if
分支语句代码块只有一句时,可以省略{}
switch语句
switch(常量值或表达式)
{
case 常量值1:
代码块1;
break;
case 常量值2:
代码块2;
break;
default:
代码块n;
break;
}
case后边的常量值是整型或字符型,不能是浮点型或字符串
ca s e 分支 后边 可以 没有 b r e a k ; 会从符合条件的分支开支抑制运行到 整个 switch 语句 执行完 才 结束 或 遇到 b r e a k
#include<stdio.h>
int main(int argc, char const *argv[])
{
int fs=0;
printf("输入成绩\n");
scanf("%d",&fs);
if(fs<=100&&fs>=0)
{
switch(fs/10)
{
case 10:printf("A\n");
break;
case 9:printf("A\n");
break;
case 8:printf("B\n");
break;
case 7:printf("C\n");
break;
default:printf("你无敌了\n");
break;
}
}
else{
printf("error\n");
}
return 0;
}
作业
终端输入一个日期,判断是这一年的第几天
scanf("%d-%d-%d",&y,&m,&d);
#include<stdio.h>
int main(int argc, char const *argv[])
{
int y=0,m=0,d=0;
printf("输入年月日:");
scanf("%d-%d-%d",&y,&m,&d);
if(y%4==0)
{
switch(m)
{
case 1:printf("%d\n",d);
break;
case 2:printf("%d\n",d+31);
break;
case 3:printf("%d\n",d+60);
break;
case 4:printf("%d\n",d+91);
break;
case 5:printf("%d\n",d+121);
break;
case 6:printf("%d\n",d+152);
break;
case 7:printf("%d\n",d+182);
break;
case 8:printf("%d\n",d+213);
break;
case 9:printf("%d\n",d+244);
break;
case 10:printf("%d\n",d+274);
break;
case 11:printf("%d\n",d+305);
break;
case 12:printf("%d\n",d+335);
break;
}
}
else{
switch (m)
{
case 1:printf("%d\n",d);
break;
case 2:printf("%d\n",d+31);
break;
case 3:printf("%d\n",d+59);
break;
case 4:printf("%d\n",d+90);
break;
case 5:printf("%d\n",d+120);
break;
case 6:printf("%d\n",d+151);
break;
case 7:printf("%d\n",d+181);
break;
case 8:printf("%d\n",d+212);
break;
case 9:printf("%d\n",d+243);
break;
case 10:printf("%d\n",d+273);
break;
case 11:printf("%d\n",d+304);
break;
case 12:printf("%d\n",d+334);
break;
}
}
return 0;
}