scanf : 从标准输入设备(如 : 键盘) 获取你想要的数据对象
printf: 格式化输出
scanf("格式化输入",地址列表);
格式化输入: 告诉用户 你 必须按照我的格式要求去输入 "字符串"
普通字符 : 用户得原模原样输入,否则就会失败
特殊字符 :
%d : 输入一个十进制的整数字符串 [0-9]+
%c : 输入一个字符
%f %lf 输入一个十进制的浮点型的字符串
%s : 输入任意一个字符串
如 :
scanf("%d%d",&a,&b);
123 456 OK
scanf("%c%c",&a,&b);
1 2 ok a = '1' b = '2'
12 ok a = '1' b = '2'
scanf("a=%d, b=%d\n",&a,&b);
a=123, b=123\n , 只会把123存放到a的地址中
why ?
scanf 会自动把输入的空白符(如 : \r \n)自动过滤掉!!!
(2) 写一段代码 ,完成如下功能 :
从键盘中输入一个字符,要求
如果输入的大写字母,则把他转换成相应的小写字母,然后再输出
如果输入的小写字母,则把他转换成相应的大写字母,然后再输出
其他字符,则不变,直接输出.
//1.定义一个变量, 接收键盘输入
char c;
scanf("%c",&c);
//2.根据要求转换
if(c >= 'A' && c =< 'Z')
{
c += ('a' - 'A');
//c = c + ('a' - 'A');
}
else if(c >= 'a' && c <= 'z')
{
c += ('A' - 'a');
}
//3.输出
printf("%c\n",c);
(3) 从键盘上输入三个整数 a , b , c,按从小到大的顺序, 输出他们
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a <= b)
{
if(a <= c) //a最小
{
if(b <= c) //a < b < c
{
}
else //a < c < b
{
}
}
else //c最小 c < a < b
{
}
}
else //b < c
{
}
//1.输入三个整数
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
//2.想办法, a <= b <= c
//2.1 想办法 a < b
if(a > b)
{
//交换
temp = a;
a = b;
b = temp;
}
//2.2 想办法 a < c
if(a > c)
{
//交换a c
}
//上面两个if做完后,a是最小的
if(b > c)
{
//交换b c
}
上面三个if做完后,a < b < c
//3.依次输出 a,b,c
printf("%d->%d->%d",a,b,c);
#include <stdio.h>
int main()
{
char ch;//输入十六进制字符
int d;//输入的十六进制字符对应的数值
scanf("%c",&ch);
switch(ch)
{
case '0':
d = 0;
break;
case '1':
d = 1;
break;
case '2':
d = 2;
break;
case '3':
d = 3;
break;
case '4':
d = 4;
break;
case '5':
d = 5;
break;
case '6':
d = 6;
break;
case '7':
d = 7;
break;
case '8':
d = 8;
break;
case '9':
d = 9;
break;
case 'a':
case 'A':
d = 10;
break;
case 'b':
case 'B':
d = 11;
break;
case 'c':
case 'C':
d = 12;
break;
case 'd':
case 'D':
d = 13;
break;
case 'e':
case 'E':
d = 14;
break;
case 'f':
case 'F':
d = 15;
break;
}
printf("%d\n",d);
return 0;
}
switch语句
switch是用来列举所有的情况
1 switch 语法形式
switch(待列举的表达式)
{
case 值1:
语句1
case 值2:
语句2
case 值3:
语句3
...
//default : //其他情况
// 语句n
}
<1> switch后面的那个 "带列举的表达式" 以及 case 后面的 "值",都必须为一个整数类型.
因为只有整数,才可以"列举"
switch后面 "带列举的表达式" : 可以是一个整数类型的表达式 或 变量.
case 后面的 "值" : 必须是一个整型的常量 或 常量表达式,
并且各个case 后面的值不能相同(唯一).
int m,n;
scanf("%d%d",&m,&n);
switch(m + 1)
{
case n : //error n不是常量, case 后面的值,必须为一个常量或常量表达式
语句1
case 1 ://可以的
..
case 1*3 + 7://可以的
...
case 10 ://不可以的, 与上面的 case 值相同,不行的
...
}
<2> 各个case 和 default 出现的次序不影响匹配的结果
switch(m)
{
default : //default 可以在switch任何位置,也可以不要他
//有default 永远是所有的case都不匹配的情况下,再匹配到default.
...
case 1 :
...
case 2 :
...
case 100 :
...
case 10 :
...
}
<3> case后面的"语句" 可以省略,意识是,多个case可以共用一组语句
switch(m)
{
case 1 :
case 2 :
语句
case 3:
语句
default :
语句
}
scanf : 从标准输入设备(如 : 键盘) 获取你想要的数据对象
printf: 格式化输出
scanf("格式化输入",地址列表);
格式化输入: 告诉用户 你 必须按照我的格式要求去输入 "字符串"
普通字符 : 用户得原模原样输入,否则就会失败
特殊字符 :
%d : 输入一个十进制的整数字符串 [0-9]+
%c : 输入一个字符
%f %lf 输入一个十进制的浮点型的字符串
%s : 输入任意一个字符串
如 :
scanf("%d%d",&a,&b);
123 456 OK
scanf("%c%c",&a,&b);
1 2 ok a = '1' b = '2'
12 ok a = '1' b = '2'
scanf("a=%d, b=%d\n",&a,&b);
a=123, b=123\n , 只会把123存放到a的地址中
why ?
scanf 会自动把输入的空白符(如 : \r \n)自动过滤掉!!!
(2) 写一段代码 ,完成如下功能 :
从键盘中输入一个字符,要求
如果输入的大写字母,则把他转换成相应的小写字母,然后再输出
如果输入的小写字母,则把他转换成相应的大写字母,然后再输出
其他字符,则不变,直接输出.
//1.定义一个变量, 接收键盘输入
char c;
scanf("%c",&c);
//2.根据要求转换
if(c >= 'A' && c =< 'Z')
{
c += ('a' - 'A');
//c = c + ('a' - 'A');
}
else if(c >= 'a' && c <= 'z')
{
c += ('A' - 'a');
}
//3.输出
printf("%c\n",c);
(3) 从键盘上输入三个整数 a , b , c,按从小到大的顺序, 输出他们
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a <= b)
{
if(a <= c) //a最小
{
if(b <= c) //a < b < c
{
}
else //a < c < b
{
}
}
else //c最小 c < a < b
{
}
}
else //b < c
{
}
//1.输入三个整数
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
//2.想办法, a <= b <= c
//2.1 想办法 a < b
if(a > b)
{
//交换
temp = a;
a = b;
b = temp;
}
//2.2 想办法 a < c
if(a > c)
{
//交换a c
}
//上面两个if做完后,a是最小的
if(b > c)
{
//交换b c
}
上面三个if做完后,a < b < c
//3.依次输出 a,b,c
printf("%d->%d->%d",a,b,c);
#include <stdio.h>
int main()
{
char ch;//输入十六进制字符
int d;//输入的十六进制字符对应的数值
scanf("%c",&ch);
switch(ch)
{
case '0':
d = 0;
break;
case '1':
d = 1;
break;
case '2':
d = 2;
break;
case '3':
d = 3;
break;
case '4':
d = 4;
break;
case '5':
d = 5;
break;
case '6':
d = 6;
break;
case '7':
d = 7;
break;
case '8':
d = 8;
break;
case '9':
d = 9;
break;
case 'a':
case 'A':
d = 10;
break;
case 'b':
case 'B':
d = 11;
break;
case 'c':
case 'C':
d = 12;
break;
case 'd':
case 'D':
d = 13;
break;
case 'e':
case 'E':
d = 14;
break;
case 'f':
case 'F':
d = 15;
break;
}
printf("%d\n",d);
return 0;
}
switch语句
switch是用来列举所有的情况
1 switch 语法形式
switch(待列举的表达式)
{
case 值1:
语句1
case 值2:
语句2
case 值3:
语句3
...
//default : //其他情况
// 语句n
}
<1> switch后面的那个 "带列举的表达式" 以及 case 后面的 "值",都必须为一个整数类型.
因为只有整数,才可以"列举"
switch后面 "带列举的表达式" : 可以是一个整数类型的表达式 或 变量.
case 后面的 "值" : 必须是一个整型的常量 或 常量表达式,
并且各个case 后面的值不能相同(唯一).
int m,n;
scanf("%d%d",&m,&n);
switch(m + 1)
{
case n : //error n不是常量, case 后面的值,必须为一个常量或常量表达式
语句1
case 1 ://可以的
..
case 1*3 + 7://可以的
...
case 10 ://不可以的, 与上面的 case 值相同,不行的
...
}
<2> 各个case 和 default 出现的次序不影响匹配的结果
switch(m)
{
default : //default 可以在switch任何位置,也可以不要他
//有default 永远是所有的case都不匹配的情况下,再匹配到default.
...
case 1 :
...
case 2 :
...
case 100 :
...
case 10 :
...
}
<3> case后面的"语句" 可以省略,意识是,多个case可以共用一组语句
switch(m)
{
case 1 :
case 2 :
语句
case 3:
语句
default :
语句
}