Mechanic2Tinzo

导航

C_THQ_ch3

//用函数printf()输出数据,函数scanf()输入数据
//必须指定输入输出数据的格式,不同类型的数据指定不同的格式
//初学不必深究,重点掌握常用规则,其他随时查表
#include <stdio.h>
int main(void)
{
int a = 1, b = 2;
//函数printf()一般格式:printf(格式控制,输出表列)
//格式控制:双撇号括起的一个字符串,称为格式(控制)字符串
//格式控制字符串和输出列表是函数printf()的参数
//格式字符串包括两个信息:格式声明、普通字符
//格式声明:%格式字符
//格式声明将输出数据转换为指定格式后输出。
//普通字符:在输出时原样输出的字符。格式控制内除了格式声明外的其他所有字符。如,字母、逗号、空格、换行符(\n)
//输出表列是变量名
printf("%d,%d\n",a,b);//普通字符逗号原样输出
printf("a=%d b=%d\n",a,b);//普通字符空格原样输出

//(如上)常用格式字符:d
//用来输出一个有符号的十进制整型数据,+不输出
//可以在格式声明中指定输出数据的域宽(右到左,所占的列数)
printf("%5d\n%5d\n",12,-345);//12前3个空格;-345前1个空格
//ld输出long(长整型)数据;lld输出long long(双长整型)数据

//常用格式字符:c
//输出一个字符
char ch = 'a';
printf("%c",ch);
printf("%5c\n",ch);//指定域宽,后a前4个空格
//0~127范围内的整数输出为ASCII码对应的字符
short c = 121;
printf("%c\n",2);
//如果整数比较大,则把它二进制中最后一个字节8位的信息以字符的形式输出
//自己修改c的值体验一下,与ASCII转码表对比一下(121和377输出都是字符y)

//常用格式字符:s
//输出一个字符串
printf("%s\n","CHINA");//双撇号括住字符串,但不输出

//常用格式字符:f
//输出实数(单、双精度、长双精度),以小数形式输出
//1.基本型%f
//不指定输出数据的长度,由系统根据实际情况决定数据所占的列数
//一般是整数部分全部输出,小数部分输出6位
double d = 1.0;
printf("%f\n",d/3);//d和d/3都是双精度型
//2.指定数据宽度和小数位数%m.nf
printf("%20.15f\n",d/3);//0前3个空格,输出15位小数
//一个双精度型数据只能保证15位有效数字;float型6位、double型15位。换成float验证一下
//若用%55.50f不能保证输出的50位都是有效数字,可以验证一下
//3.输出数据左对齐%-m.nf
printf("%-25.15f,%-25.15f\n",d/3,d/3);

//常用格式字符:e
//输出指数形式的实数
printf("%e",123.456);
//若不指定输出数据宽度和小数位数,一般6位小数,指数5列(1+1+3,e1列,指数符号+-1列,指数3列)
//指定数据宽度和小数位数%m.ne
printf("%13.2e\n",123.456);
//格式符也可以写成大写E,输出数据中则也变为E

//其他格式字符:
//格式符i
//与格式符d相同,输出十进制整型数据
//格式符o
//输出八进制整数,不带符号
printf("%d\t%o\t%x\n",-1,-1,-1);//二进制八进制十六进制转换
//格式符x
//输出十六进制整数(如上)
//%lx输出长整型
//%12x指定输出宽度
//格式符u
//输出无符号十进制整型数据
//格式符g
//输出浮点数,系统自动选择f或e格式中较短的格式,不输出无意义的0
//printf("%f\t",1234567);
//printf("%e\t",1234567);
//printf("%g\n",1234567);

//格式声明的一般格式:
//%附加字符格式字符
//附加字符,如l、m、n、-


//函数scanf()一般格式:scanf(格式控制,地址表列)
//格式控制:双撇号括起的一个字符串,称为格式(控制)字符串
//格式控制字符串和地址表列是函数scanf()的参数
//格式字符串包括两个信息:格式声明、普通字符
//格式声明:%格式字符
//格式声明将输出数据转换为指定格式后输出。
//普通字符:在输出时原样输出的字符。格式控制内除了格式声明外的其他所有字符。如,字母、逗号、空格、换行符(\n)
//地址表列是变量地址,或字符串首地址

//注意事项
//scanf("a=%f,b=%f,c=%f",&a,&b,&c);
//地址表列是&a,&b,&c而不是a,b,c
//如果格式控制字符串中除了声明以外还有其他字符,
//则在输入数据时在对应的位置上输入与这些字符相同的字符
//应当输入a=1,b=3,c=2(字母等号逗号都要相同)
//%c输入字符时,空格字符和转义字符中的字符都作为有效字符输入
//scanf("%c%c%c",&c1,&c2,&c3);
/*在执行此函数时应该连续输入三个字符,中间不要有空格
如,abc而不是a b c
这样会读取前3个字符a b
输入数值需要在两个数值之间插入空格(或其他分隔符),使系统能够区分
连续输入字符时,不要插入空格(或其他分隔符),系统能够区分
在输入数值数据时,如输入空格回车Tab或遇非法字符(不属于数值的字符),认为该数据结束
scanf("%d%c%f",&a,&b,&c);
1234a123o.26
会把123给a;字符a给b;1230.26误打为123o.26,数值输入到o结束,123给c;之后的数据没有被读入
*/

int num;
printf("Enter an integer: ");
//scanf("%d",&num);
printf("You entered: %d\n", num);

//格式符和附加字符与函数printf()基本相同,有细微差别,用到查表即可


//字符输入输出函数:专门输入和输出字符
//用函数putchar()输出一个字符
//一般形式putchar(c);
//c可以是字符常/变量、整型常/变量(0~127)与ASCII转换码有关
char e = 'B',f = 'O',g = 'Y';//定义三个字符变量并初始化
//int e = 66, f = 79, g = 89;//定义3个整型变量,并初始化
//字符型属于整数型,so,将一个字符或者其对应的ASCII代码赋给字符变量作用相同,注意整型变量0~127
putchar(e);//向显示器输出字符B
putchar(f);//向显示器输出字符O
putchar(g);//向显示器输出字符Y
putchar('\n');//向显示器输出一个换行符
//用putchar()输出转义字符
putchar('\101');//输出字符A
putchar('\'');//输出转义字符单撇号
putchar('\015');//八进制15=十进制13,查表知13是回车的ASCII码so此处输入回车不换行是输出的当前位置移到本行开头
putchar('\n');

//用函数getchar()输入一个字符
//一般形式getchar();
//没有参数
//从输入设备(如键盘)输入一个字符
//一个getchar()只能接收一个字符,输入多个字符就需要多个getchar()

//char h,i,j;
//h = getchar();
//i = getchar();
//j = getchar();
//putchar(h);
//putchar(i);
//putchar(j);
//putchar('\n');
//输入BOY后回车,字符才会完成输入
//输入BOY回车和输入1回车2再回车的结果是不同的
//回车也是会被算作输入的字符的

//在函数printf()中输出第一个接收的字符
//char k;
//k = getchar();
//printf("%c\n",getchar());

//练习:给定一个大写字母输出对应小写字母
char a1,a2;
a1 = 'A';//将字符A的ASCII代码赋给变量c1
a2 = a1 + 32;//得到字符a的ASCII代码赋给c2
printf("%c\n",a2);//输出c2的值,是一个字符
printf("%d\n",a2);//输出c2的值,是字符a的ASCII代码
//变式:用getchar()从键盘读入一个大写字母,把它转换为小写字母,putchar()输出
char b1,b2;
b1 = getchar();
b2 = b1 + 32;
putchar(b2);
putchar('\n');
//变式:用printf()输出
printf("大写字母:%c\n小写字母:%c\n",b1,b2);

return 0;
}

 

posted on 2024-07-05 20:07  Tinzo_Zhang  阅读(21)  评论(0)    收藏  举报