数据的表现形式及其运算
一、常量和变量
1.常量
(1)整形常量,例如:10,0,-25,1000。
(2)实型常量
1.十进制小数形式,例如:12.0,0.345,123.456。
2.指数形式,例如:12.34e3,-346.87e-25,0.145E-25。
(3)字符常量
1.普通字符。例如:'a','Z','3','?','#'。
2.转义字符。例如:\n(换行),\t(水平制表符),\v(垂直制表符)。
(4)字符串常量,例如:"China","Boy","12345"。 (必须用双引号括起来)
(5)符号常量,例如:#define PI 3.1415,#define N 20。
2.变量
例如:a,b,c,p,n,sum,temp,Studeng_name;
注意:变量必须先定义,再使用。
二、数据类型
分类:整数类型,字符型数据,浮点型数据。
1.整形数据
(1)基本整型(int)
(2)短整型(short int)
(3)长整型(long int)
(4)双长整型(long long int)
存储单元长度:sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
2.字符型数据
(1)字符与字符代码
字母:大写英文字母A~Z,小写英文字母a~z;
数字:0~9;
专门符号:!,",#,*,&等;
空格符:空格,Tab,换行,换页;
无法显示的字符:Null('\0'),警告('\a'),退格('\b');
(2)字符变量
字符变量是利用char定义字符变量
#include<stdio.h>
int main()
{
char c='a';
printf("%d %c\n",c,c);
getchar();
getchar();
return 0;
}
其运行结果如图所示:
以"%d"格式输出十进制整数97,以"%c"格式输出字符c。
3.浮点型数据
定义:表示具有小数点的实数的。
(1)float(单精度浮点型),用"%f"输出;
(2)double(双精度浮点型),用"%lf"输出;
(3)long double(长双精度浮点型),用"%lf"输出;
三、运算符和表达式
1.C运算符
(1)算数运算符(+ - * / % ++ --)
(2)关系运算符(> < == >= <= !=)
(3)逻辑运算符(! && ||)
(4)赋值运算符(=及其扩展赋值运算符)
(5)指针运算符(*和&)
2.基本运算符
运算符 | 含义 | 举例 | 结果 |
+ | 正号运算符 | +a | a的值 |
- | 负号运算符 | -a | a的算术负值 |
* | 乘法运算符 | a*b | a和b的乘积 |
/ | 除法运算符 | a/b | a除以b的商 |
% | 求余运算符 | a%b | a除以b的余数 |
+ | 加法运算符 | a+b | a和b的和 |
- | 减法运算符 | a-b | a和b的差 |
3.自增(++)、自减(- -)
1.++i:先执行i=i+1,再使用i;
2. - -i:先执行i=i-1,再使用i;
#include<stdio.h>
int main()
{
int i=3;
printf("%d",++i);
getchar();
getchar();
return 0;
}
3.i++:先使用i,再执行i=i+1;
4.i - -:先使用i,再执行i=i-1;
#include<stdio.h>
int main()
{
int i=3;
printf("%d",i++);
getchar();
getchar();
return 0;
}
四、算术表达式和运算符的优先级与结合性
1.算术运算符是自左至右(左结合性)
例如:a-b+c,先执行a-b的运算,在执行+c的运算。
2.赋值运算符是自右向左(右结合性)
例如:a=b=c,先将变量c的值赋给变量b,再把变量b的值赋给变量a。
五、不同类型数据间的混合运算
(1)字符型数据与整型数据进行运算,即把字符的ASCII代码与整形数据进行运算。
例:给定一个大写字母,要求用小写字母输出。
#include<stdio.h>
int main()
{
char c1,c2;
c1='A';
c2=c1+32;
printf("%c\n",c2);//输出c2的值,是一个字符;
printf("%d\n",c2);//输出c2的值,字符'a'的ASCII值;
getchar();
getchar();
return 0;
}
其输出结果为:
六、强制类型转换运算符
其一般形式为(类型名)(表达式);
例如:(int)(x+y),即将x+y的值转换为int型。
C语句
一、C语句的作用与分类
(1)控制语句
1.条件语句 if()......else.....
2.循环语句 for( ; ; ;)......
3.循环语句 while().......
4.循环语句 do......while()......
5.结束本次循环语句 continue
6.中止执行switch或循环语句 break
7.多分支选择语句 switch
8.从函数返回语句 return
(2)函数调用语句
例如:printf("This is a student!");
(3)表达式语句
a=3是一个赋值表达式;
a=3;是一个语句;
注:任何表达式加分号都是语句。
二、最基本的语句——赋值语句
1.赋值运算符(=)
2.复合的赋值运算符
例如:a+=3等价于a=a+3;x%3等价于x=x%3;x*=y+8等价于x=x*(y+8)。
3.赋值运算符
其一般形式为:(变量 赋值运算符 表达式)
例如:a=b=c=5; a=(b=4)+(c=6) ;a=5+(c=6)。
4.赋值过程中的类型转换
(1)将浮点型数据赋给整型变量时,先对浮点数取整,即舍弃小数部分,然后赋予整型变量。
例如:如果i为整型变量,执行i=3.56,其结果是使i的值为3,以整数形式储存在整型变量中。
(2)将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式储存到变量中。
例如:如果有float变量f,执行f=23,现将整数转换为实数23.0,再按指数形式存储在变量f中。
(3)字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量。
例如:i='A',即i=65。因为'A'的ASCII值为65。
(4)将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量,会发生截断。
5.赋值表达式和赋值语句
if((a=b)>0) max=a;
其中a=b为赋值表达式,但a=b;为赋值语句。
注:赋值表达式的末尾没有分号,赋值语句的末尾必须有分号。
6.变量赋初值
例如:int i=3; float f=3.15; char c='A'; int a=4,b=5,c=6;
数据的输入与输出
一、用printf输出数据
1.printf函数的一般格式:printf(格式控制,输出表列)
例如:printf("%d\n,%c\n",i,c);
(1)格式控制
1.格式声明。由"%"和格式字符组成,如%d,%f。即将输出的数据转换为指定的格式输出。
2.普通字符。即需要在输出时原样输出的字符。
(2)输出表列,是程序需要输出的一些数据,可以是常量,变量或表达式。
2.格式字符
(1)d格式符(用来输出一个有符号的十进制整数)
注:可在格式声明中指定输出数据的域宽(所占列数),如"%3d",指定输出数据占3列。
#include<stdio.h>
int main()
{
int n=1,i;
for(i=0;i<10;i++)
{
n++;
}
printf("%3d",n);
getchar();
getchar();
return 0;
}
其输出结果为:(11前面有一个空格)
(2)c格式符(用来输出一个字符)
#include<stdio.h>
int main()
{
char c='A';
printf("%c",c);
getchar();
getchar();
return 0;
}
其输出结果为:
(3)s格式符(用来输出一个字符串)
#include<stdio.h>
int main()
{
char a[]="I love China!";
printf("%s",a);
getchar();
getchar();
return 0;
}
其运行结果为:
(4)f格式符(用来输出实数(单、双精度),以小数形式输出。
1.基本型,用%f。
输出结果为:实数中的整数部分全部输出,小数部分输出6位。
#include<stdio.h>
int main()
{
double a=1.0;
printf("%f\n",a/3);
getchar();
getchar();
return 0;
}
其输出结果为:
2.指定数据宽度和小数位数,用%m.nf。(m为所占行数,n为小数个数)
例如:printf("%10.7lf\n",a/3);
其运行结果为:(0前有1空格)
3.输出的数据向左对齐,用%-m.nf。
#include<stdio.h>
int main()
{
float a;
a=1000/3.0;
printf("%15.12f\n",a);
getchar();
getchar();
return 0;
}
其运行结果为:
二、用scanf函数输入数据
1.scanf函数的一般形式:scanf(格式控制,地址列表)
例如:scanf("%d\n,%d\n",&a,&b);
2.scanf函数中的格式声明
与printf函数中的格式声明相似,以%开始,以一个格式字符结束,中间可以插入附加的字符。
3.使用scanf函数时应注意的问题
(1)scanf函数中的格式控制后面应是变量地址,而不是变量名。
例如:scanf("%f%f%f",&a,&b,&c);
(2)如果在格式控制字符串中中除了格式声明以外还有其他字符,则在输入数据时在对应位置上应输入与这些字符相同的字符
例如:scanf("a=%f,b=%f.c=%f",&a,&b,&c);
即在输入数据时应输入:a=3,b=4,c=5。
(3)用"%c"格式声明输入字符时,空格字符和转义字符中的字符都作为有效字符输入。
例如:scanf("%c%c%c",&c1.&c2,&c3);
即在输入数据时应连续输入3个字符 abc。
三、字符输入输出函数
1.用putchar函数输出一个字符
一般形式为:puchar(c)。其作用是输出字符变量c的值。
例:先后输入CHINA五个字符。
#include<stdio.h>
int main()
{
char a='C',b='H',c='I',d='N',e='A';
putchar(a);
putchar(b);
putchar(c);
putchar(d);
putchar(e);
putchar('\n');
getchar();
getchar();
return 0;
}
其运行结果为:
2.用getchar输入一个字符
其一般形式为:getchar()
#include<stdio.h>
int main()
{
putchar(getchar());
putchar(getchar());
putchar(getchar());
putchar('\n');
getchar();
getchar();
return 0;
}
其运行结果为:
注:第一个getchar函数得到的值为'C',输出putchar(getchar())等价于putchar('C')。
例:大小写字母转换。
#include<stdio.h>
int main()
{
char c1,c2;
c1=getchar();
c2=c1+32;
printf("大写字母:%c\n小写字母:%c\n",c1,c2);
getchar();
getchar();
return 0;
}
其运行结果为: