第二章
C语言第二章 数据类型、变量和输入函数
一、数据类型简介
在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
类型转换:
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
1.2、获得数据类型的长度
#include "stdio.h"
void main()
{
//sizeof用于获得数字类型的长度
//sizeof是一个关键字(32个)
printf("char占用字节数:%d \n",sizeof(char));
printf("short占用字节数:%d \n",sizeof(short));
printf("int占用字节数:%d \n",sizeof(int));
printf("long占用字节数:%d \n",sizeof(long));
printf("float占用字节数:%d \n",sizeof(float));
printf("double占用字节数:%d \n",sizeof(double));
}
二、变量定义
是用数据类型在内存中开辟的空间。
一个变量应该有一个名字,也就是我们程序员给该空间取的名──叫变量名。
它在内存中占据一定的存储单元。
变量定义必须放在变量使用之前,即先定义后使用,一般都放在函数体的开头部分。
变量:在程序运行过程中可以变化的量。
常量:在程序运行过程中不可以变化的量。
#include "stdio.h"
void main()
{
int i=100;
i++; //i=i+1
printf("i=%d \n",i); //101
i--; //i=i-1
printf("i=%d \n",i); //100
i+=100; //i=i+100
printf("i=%d \n",i); //200
i/=3; //i=200/3=66.666667=66
printf("i=%d \n",i); //66
i+7; //在内存中66+7完成运算,但值没有写回
printf("i=%d \n",i); //66
}
2.1、变量名的取名规则
第一个字符只能是字母或下划线( _ );
第一个字符的后而只能跟字母、数字和下划线( _ );
关键字(写上去会变色的那些单词)不能用作变量名;
区分大小写;
第一位(a-zA-Z_)后续(a-zA-Z_0-9)
请问下面那些是非法的,为什么?
1name
_product
_9527
Double
int
_producT
_product
total
2.2、变量定义的多种形式
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
//定义变量并赋值
int i=100;
//先定义再赋值
float j;
//j=99.5f; 错误,变量定义必须放在变量使用之前,即先定义后使用,一般都放在函数体的开头部分
//同时定义多个变量
char a,b,c;
//同时定义多个变量并赋值
double x=1.5,y=1.6,z;
j=99.5f;
z=x+y;
}
三、整型(int)
#include "stdio.h"
void main()
{
int i;
i++; //i=i+1
printf("i=%d \n",i); //101
i--; //i=i-1
printf("i=%d \n",i); //100
i+=100; //i=i+100
printf("i=%d \n",i); //200
i/=3; //i=200/3=66.666667=66
printf("i=%d \n",i); //66
i+7; //在内存中66+7完成运算,但值没有写回
printf("i=%d \n",i); //66
}
四、字符型(char)
五、单精度浮点型(float)
六、双精度浮点型(double)
七、输入scanf
#include "stdio.h"
void main()
{
//判断年龄如果小于18岁则提示年轻真好,否则输出年龄
//定义变量
int age;
//用户输入年龄
printf("请输入年龄:");
//从键盘输入,&表示取变量地址
scanf("%d",&age);
//条件判断
if(age<18){ //如果条件成立
printf("年轻真好");
}
else{ //如果条件不成立
//输出
printf("您的年龄是:%d",age);
}
}
scanf("格式控制",地址列表);
“格式控制”的含义同printf函数;
“地址列表”是由若干个地址组成的表列,可以是变量的地址,或字符串首地址
%f 单精度
%lf 双精度
%c 从键盘接收一个字符
%d 从键盘接收十进制整数
%s 从键盘接收一个字符串,遇空格、制表 符或换行符表示接收完毕。
%[] 从键盘接收一包含在括号内的字符,只 要遇到有一个不在其内的字符,便表 示接收完毕。
输入时如果遇到 空格 回车 Tab则表示结束
7.1、输入时指定分隔符
#include "stdio.h"
void main()
{
int a,b,c;
printf("请输入年-月-日:");
scanf("%d-%d-%d",&a,&b,&c);
printf("%d年%d月%d日",a,b,c);
}
7.2、清除缓冲
#include "stdio.h"
void main()
{
char x,y,z;
printf("输入:");
scanf("%c",&x);
printf("输入:");
scanf("%c",&y);
printf("输入:");
scanf("%c",&z);
printf("%c,%c,%c",x,y,z);
}
#include "stdio.h"
void main()
{
char x,y,z;
printf("输入:");
scanf("%c",&x);
fflush(stdin); //清除缓冲
printf("输入:");
scanf("%c",&y);
fflush(stdin); //清除缓冲
printf("输入:");
scanf("%c",&z);
fflush(stdin); //清除缓冲
printf("%c,%c,%c",x,y,z);
}
7.3、输入字符串
#include "stdio.h"
void main()
{
char a[100]; //数组,char只能是单个字符
scanf("%s",a); //不要取地址
printf("%s",a);
}
7.4、限定输入范围
#include "stdio.h"
void main()
{
//限定输入范围
char a[100];
scanf("%[0123456789]s",a);//只能输入0-9,其它表示结束
printf("%s",a);
}
7.5、限定输入范围取反
#include "stdio.h"
void main()
{
char a[100];
scanf("%[^a]s",a); //^取反,如果是a则表示结束
//scanf("%[^\n]s",a); //如果是换行则结束,其它字符都可以
printf("%s",a);
}
练习:
#include "stdio.h"
void main()
{
int nianling; //年龄
float fenshu; //分数
char aihao[30]; //爱好
printf("请输入年龄:");
scanf("%d",&nianling);
printf("请输入分数:");
scanf("%f",&fenshu);
printf("请输入爱好:");
scanf("%s",aihao);
printf("您的年龄是%d,分数:%f,爱好:%s",nianling,fenshu,aihao);
}