3、C语言变量与输入输出

什么是变量

  • 变量是一个有名称和特定数据类型的存数单元,它用来存放数据。
  • 变量的值在程序运行过程中是可以被改变的。
  • 变量具有三要素:类型、名字、值。
  • 变量的类型决定了变量存储占用的空间,编译时也可以根据类型检查该变量所进行的运算是否合法。
  • C语言中的基本数据类型包括整型,浮点型和字符型。

数据类型

整型数据
整型数据分为整型(int)、短整型(short)、长整型(long long)。
整型变量只能存储整数,可以是负数不能是小数。

类型数值范围
short 16位(2字节)-32768~32767
int 32位(4字节)-2147483648~2147483647
long long 64位(8字节)-9223372036854775808~9223372036854775807

关于长整型
在C语言教材中经常看到使用 long 或 long int来介绍长整型,long int可以简写成long。所以 long int 和 long类型相同。但是long类型占32位(4字节)
数值范围与int类型相同。因此在使用超过2147483647的数值时要使用 long long 而不是long。

整型变量还有无符号整型
unsigned short、unsigned int、unsigned long long 数据范围是0~类型最大值的2倍+1。这三种类型基本不使用。

在程序中定义整形变量
定义变量的基本语法为:
数据类型 变量名(变量名要符合标识符命名规范);
一次定义多个变量,变量之间要用多个逗号隔开。

#include"stdio.h"
int main() 
{
	short a;
	int b;
	long long c;
	//也可以在定义时直接赋值(也叫初始化)
	//short a=2;
	//int b=3;
	//long long c=4;
    return 0;
}

这里定义了3个变量,分别是短整型变量a、整型变量b、长整型变量c。
定义变量后系统为该变量分配相应的存储单元,变量存数的数值不能超过最大取值范围,否则就会造成溢出错误,你将到一个不确定的值。

short、int、long long都是带符号整数类型,在计算中存储时,其机器码第一位为符号位。
例如:
int类型占4字节也就是32位,而int类型的数值范围是-2147483648~2147483647,2147483647转换成2进制数是31个1,加上符号位是32位。

(机器码就是二进制码,全部由0和1组成,机器只能识别二进制码,我们写的代码都要先编译成二进制码才能被机器运行)

浮点型数据
当我们要存数一个带小数点的数时,整形变量无法满足,这是要使用浮点型数据。
float: 单精度浮点数
double: 双精度浮点数

类型取值范围与有效位数
float 32位(4字节)3.4E-38~3.4E+38 6位有效数字
double 64位(8字节)1.7E-308~1.7E+308 16位有效数字

定义浮点型变量

#include"stdio.h"
int main() 
{
	float a;
	double b;
	//float a=3.1;
	//fouble b=8.5; 
    return 0;
}

字符型数据
字符是一个用单引号引起来的单个字符 ‘A’,‘a’,‘0’,'$'等称为字符类型数据。
C语言字符类型数据标识符用char表示,如:

#include"stdio.h"
int main() 
{
	char a;
	//char a='A';
    return 0;
}

字符类型的数据在内存中以相应的ASCII码存放。(字符变量中存的不是字符本身,而是字符的ASCII码,ASCII码值的范围0~127)例如
char a=‘A’;
字符变量a存储的是A的ASCII码值,A的ASCII码值为65。
字符变量中存的是ASCII码值,所以字符变量可以参加运算,比如:
a=a+2;
这时,a中的ASCII码值为67,C的ASCII码值为67,所以字符变量a中的字符变成了C。

#include"stdio.h"
int main() 
{
	char a='A';//A的ASCII码为65,B的ASCII码为66 C的ASCII码是67
	printf("a存的字符为:%c\na存的ASCII码为:%d\n",a,a);
	a+=2;
	printf("a存的字符为:%c\na存的ASCII码为:%d\n",a,a);
    return 0;
}

在这里插入图片描述

键盘输入输入

scanf输入函数
使用标准库函数scanf(“”)可以将键盘输入的数据赋值给变量。
输入时一般用空格、tab分隔输入的多个数,回车作为输入的结束。

  • scanf(“”)是一格式化输入函数,使用这个函数也要使用stdio.h头文件。
  • scanf(“”)中是格式符(%d、%lf、%c等),键盘输入的内容格式符接收,按照格式存入变量的地址(接收数据赋值给变量)。
  • 赋值的变量写在双引号后面,用逗号隔开(接收输入的变量被称为参数)。
  • 由于scanf()的参数是按地址传递,所以变量前要加&符。

整型变量的输入输出

#include"stdio.h"
int main() 
{
	short a;
	int b;
	long long c;
	printf("输入a的值:");
	scanf("%d",&a);
	printf("输入b的值:");
	scanf("%d",&b);
	printf("输入c的值:");
	scanf("%lld",&c);
	printf("a的值为:%d\n",a);
	printf("b的值为:%d\n",b);
	printf("c的值为:%lld\n",c);
    return 0;
}

在这里插入图片描述

  • 在scanf中双引号中内容就是你要输入的内容,scanf可以接收键盘输入的字符,数字。
  • 双引号中的%d是十进制格式符,表示输入的数是按10进制输入,%lld表示输入的数是十进制长整型。(对于short、int类型数据使用%d,long long类型数据使用%lld)
  • &a表示变量a的地址,定义变量后计算机为变量分配内存地址用来存储数据,这时a的内存地址没有值,这里&a表示输入的内容存到变量a的地址中。(因为scanf这个函数要求的参数传递的是地址)
  • 一个是 scanf 输入多个数据时,接收数据的参数要用逗号隔开。
  • 接收键盘输入内容的部分和参数部分也要用逗号隔开。
    在这里插入图片描述
    scanf(“%d %d”,&a,&b)中多个格式符中间的空格可有可无,如果两个格式符中间时逗号scanf(“%d,%d”,&a,&b),那么输入时也要输入逗号。
    在这里插入图片描述
    printf中双引号的内容是要输出的内容,%d表示参数按10进制输出。
#include"stdio.h"
int main() 
{
	int a,b;
	scanf("%d %d",&a,&b);
	printf("变量a的值=%d\n变量b的值=%d",a,b);
    return 0;
}

在这里插入图片描述

  • printf的参数类型不是地址,所以可以直接使用变量名,不需要加&符。
  • \n是转义字符(相当一个回车),printf函数读到\n时会打印一个回车。

关于整型数据
scanf和printf输入输出数据不但能按%d十进制输入输出,还可以按8进制(%o)和16进制(%x)格式输入输出。(按10进制接收的数可以转换成8进制或16进制输出)

#include"stdio.h"
int main() 
{
	int a,b,c;
	scanf("%d",&a);
	printf("十进制:%d\n八进制:%o\n十六进制:%x\n",a,a,a);
    return 0;
}

在这里插入图片描述

浮点型变量输入输出
浮点型的格式符分别是%f(float)和%lf(double),用法相同。

#include"stdio.h"
int main() 
{
	float a;
	double b;
	scanf("%f %lf",&a,&b);
	printf("变量a的值=%f\n变量b的值=%lf",a,b);
    return 0;
}

输入时不但可以输入小数也可以输入整数,但是输出时会在后面自动补0,因为输入的数是按浮点型存储。
在这里插入图片描述
float和double默认保留6位小数,float和double的区别是double精度比float高所以我们使用double。
对于浮点型变量的输入输出一定要用浮点型的格式符。

如果你对保留的小数位数有需求那么可以在格式符的%后加 .x ,x是一个具体的数字,表示保留几位小数。

#include"stdio.h"
int main() 
{
	double a,b;
	scanf("%lf %lf",&a,&b);
	printf("保留3位小数:%.3lf\n保留8位小数:%.8lf",a,b);
    return 0;
}

在这里插入图片描述

字符型变量
字符变量的格式符是%c,注意:%c可以接收回车、空格等字符。

#include"stdio.h"
int main() 
{
	char a;
	scanf("%c",&a);
	printf("%c\n",a);
    return 0;
}

在这里插入图片描述
%c将接收的字符转成ASCII码值存入为char类型变量开辟的地址中,输出时%c将ASCII码值转换成对应的字符。
如果变量是一个int类型的数据,也可以用%c转换成ASCII对应的字符(整个int类型的数据必须在ASCII码值的范围之间

#include"stdio.h"
int main() 
{
	int a=70;
	printf("a=%d\na按ASCII码转换成对应的字符是:%c\n",a,a);
    return 0;
}

在这里插入图片描述
一次输入多个字符

#include"stdio.h"
int main() 
{
	char a,b,c;
	scanf("%c %c %c",&a,&b,&c);
	printf("输出a:%c 输出b:%c 输出c:%c\n",a,b,c); 
    return 0;
}

在这里插入图片描述
输入时3个%c之间由空格如果没有空格那么3个变量接收的是a,空格,b。

#include"stdio.h"
int main() 
{
	char a,b,c;
	scanf("%c%c%c",&a,&b,&c);
	printf("输出a:%c 输出b:%c 输出c:%c\n",a,b,c); 
    return 0;
}

在这里插入图片描述
原因就是%c读取了空格,将空格当成了一个字符。

getchar()和putchar()
对于字符的输入输出我们还可以用getchar和putchar进行输入输出。
getchar()的作用是接收一个字符。(无论输入多少个字符,按回车后只接收第一个字符)
putchar()的作用是输出一个字符。

#include"stdio.h"
int main() 
{
	char a;
	a=getchar();//接收一个字符赋值给a 
	putchar(a);//输出a中的字符 
    return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值