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); }
7.6、“*” 符
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。如:
scanf("%d %*d %d",&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int a,b; scanf("%d%*d%d",&a,&b); printf("a=%d,b=%d",a,b); }
7.7、宽度
用十进制整数指定输入的宽度(即字符数)。例如:
scanf("%5d",&a);
输入12345678只把12345赋予变量a,其余部分被截去。又如:
scanf("%4d%4d",&a,&b);
输入12345678将把1234赋予a,而把5678赋予b。
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int a,b; scanf("%4d%4d",&a,&b); printf("a=%d,b=%d",a,b); }
练习:
#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); }