Skip to content

顺序程序设计(2)

784字约3分钟

2024-07-07

19.字符型数据

字符型是以整型形式(ASCII码)存放在内存单元中。ASCII共128个字符(也就是最多可以用7位数表示)

类型字符值取值范围
signed char1-128~127
unsigned char10~255

C99把字符型数据作为整型数据的一种

在使用有符号字符类型变量时,允许存储的值为负数,但是字符的代码不可能为负值,所以在存储字符时只用到了0~127这一部分。

20.getchar与putchar函数

#include <stdio.h>    //该头文件有getchar与putchar函数的函数声明
void f1(void)
{
	char ch = getchar();  //返回值为int型,返回值为用户输入的ASCII码,出错返回-1
	putchar(ch);         //putchar向屏幕输出一个字符
}
void f2(void)            //从键盘中读入3个字符并输出
{
	putchar(getchar());
	putchar(getchar());
	putchar(getchar());
}
int main(void)
{
	f1();
	f2();
	return 0;
}

21.浮点型数据

数据类型字节数有效数字数值范围(绝对值)
float460以及1.2e-38~3.4e38
double,long double8150以及2.3e-308~1.7e308
long double16190以及3.4e-4932~1.1e4932

从数值的左边第一个不为0的数字起,一直到这个数字结束,中间的数字叫这个值的有效数字

/*
注:
(一)所有常量末尾加的数据类型转换符可以大小写不分
(二)在目前学习过的所有格式声明中只有xeg可以不分大小写
*/
#include <stdio.h>
int main(void)
{
	//1.定义实型变量
	float a = 1.1F;     //1.1F表示1.1是个float型数据
	double b = 1.1;
	long double c = 1e-8L;
	printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(c));
	
	//2.实型数据在格式化输入输出时所使用的格式声明——默认情况下使用带f和带e的格式声明只输出小数点后6位(第七位四舍五入)
	printf("%f,%lf,%Lf\n",a,b,c);  //小数形式
	printf("%e,%le,%LE\n",a,b,c);  //指数形式
	printf("%g,%lg,%LG\n",a,b,c);  //小数形式或者指数形式
	return 0;
}

22.printf格式附加字符

//格式声明 = % 格式附加字符
#include <stdio.h> 
int main(void)
{
	printf("%5d\n",-12);
	printf("%5c\n",'a');
	printf("%5s\n","abcd");
	printf("%-5dA\n",-12);
	
	printf("%7.2f\n",12.345);
	printf("%7.1f\n",12.345);
	printf("%.5lf\n",12.345);
	printf("%11lf\n",12.345);
	return 0;


}

23.1scanf函数注意事项(2)

//scanf函数中不可以使用#
#include <stdio.h>
int main(void)
{
	int a ;
	/*
	scanf("%5d",&a);
	printf("%d\n",a);
	*/
	/*
	scanf("%-5d",&a);     scanf函数不支持负的域宽
	printf("%d",a);
	*/
	double b;
	scanf("%7.2lf",&b);
	printf("%lf",b);
	char ch;
	while(ch = getchar()!='\n')
	{
		putchar(ch);
	}
	putchar('\n');
	return 0;
}

23.2运算符(2)

#include <stdio.h>
int main(void)
{
	int i = -1, j = 4;
	printf("%d,%d\n",--i,--j);
	printf("%d,%d\n",i,j);
/*	printf("%d\n",--(i+j));			//error 自增自减运算符不能用于一个数值,只能用于一个变量  */
	i = 1, j = 4;
	printf("%d\n",i+++j);




	int a;
	printf("%d\n",sizeof((double) a));      //(double) a是把a这个数值表达式转化为double型数据,而不是把a变量转化为double型变量
	printf("%d\n",sizeof(a));
	return 0;


}