专升本C语言学习--第三章 顺序程序设计

第三章 顺序程序设计

数据的表现形式

常量和变量

常量

在程序运行过程中,值不能被改变的量,称为常量

  • 整形常量。eg:100;-100
  • 实型常量。1.十进制表示eg:12.3;2.指数形式表示eg:13.4e3;13.4e-3。
  • 字符常量。eg:‘a’,’\n’,’\101’,’\x41’
  • 字符串常量。eg:“abc”
  • 符号常量。eg:#define PI 3.1415,在C语言编译时,将程序中的PI替换成3.1415
  • 在C99标准中,出现了常变量—>常量
  • 符号常量和常变量的区别:在程序编译时,符号常量直接将常量值替换,不对符号常量进行内存分配,在定义常变量,要对常变量进行内存分配。
//常量
#include<stdio.h>
#define PI 3.1415
int main(){
	//1.常数常量
	int a=100;
	printf("a=%d\n",a);
	int b=-100;
	printf("b=%d\n",b);
	//2.实数常量
	float c=12.3;
	printf("c=%0.2f\n",c);
	float d=13.4e3;//13.4*10^3
	printf("d=%0.0f\n",d);
	float e=13.4e-3;//13.4*10^-3
	printf("e=%f\n",e);
	//3.字符常量
	char f='a';
	printf("f=%c\n",f);
	char g='\n';//转义字符,\表转义
	printf("abc\tabc\n");//\t--->tab8个
	char h='\101';//表示8进制数对应的字符
	printf("h=%c\n");//每一个字符都对应一个ASCLL字符
	char i='\110';//72
	printf("i=%c\n",i);
	char j='\x41';
	printf("j=%c\n",j);
	//4.字符串常量
	char k[]="woshiliangpi";
	printf("k=%s\n",k);
	//5.符号常量
	printf("%f\n",PI);
	printf("%f\n",PI*3*3);
	//6.常变量
	const int aa=10;
	printf("aa=%d",aa);
	/*aa=100;
	printf("aa=%d",aa);*/
	return 0;
}

变量

使用方法:先定义,后使用。

//变量
#include<stdio.h>
int main(){
	int a;//定义了一个变量,在内存中开辟空间
	//DEV C++:4byte,turboC:2type 64位编译系统:8byte
	//1bit 1byte=8bit 
	a=10;//给变量赋值 1010
	//00000000 00000000 00000000 00001010
	//1111--->15
	printf("a=%d\n",a);
	short b=2;//定义了一个变量为短整形,在内存中开辟2byte空间
	printf("b=%d\n",b);
	long c=10;//定义了一个变量为长整形,在内存中开辟4byte空间
	printf("c=%ld\n",c);
	long long d=100;//定义了一个变量为双长整形,在内存中开辟8byte空间
	printf("d=%lld\n",d);
	return 0;
}

无符号数

#include <stdio.h>

int main(){
	unsigned int a=100;
	printf("a=%d\n",a);
	unsigned int b=-100;
	printf("b=%d\n",b);
	unsigned int c=-100;
	printf("c=%u\n",c);
	//int(0:+;1:-) eg:1001=-1
	//00000000 00000000 00000000 00000000
	//unsigned int(第一位不表示正负) eg:1001=9
	return 0;
}

字符变量

char 在内存中开辟1Byte=8bit. ‘a’=97
是一个特殊的整形

#include <stdio.h>

int main(){
	char a='a';
	int b=a-32;//97-32=65
	printf("b=%d\n",b);
	printf("b=%c\n",b);

	char c='s';
	printf("c=%c\n",c);
	printf("c=%d\n",c);

	char d='W';
	printf("d=%c\n",d+32);
	printf("d=%d\n",d+32);
	return 0;
}

浮点型数据

float double

//浮点型数
#include <stdio.h>

int main(){
	float a=12.4f;//4Byte 单精度浮点型,数据有效范围6位,超过可能精度丢失
	printf("a=%f\n",a);
	printf("a=%.8f\n",a);

	float b=12.4;//double类型
	double c=12.4;//8Byte 双精度浮点型,数据有效范围15位
	printf("c=%f\n",c);
	//控制位数
	printf("c=%.10f\n",c);
	return 0;
}

基本类型(简单类型):int short long char float double.

标识符

类型的名称
命名规则:

  • 只能由数字、字母、下划线构成;
  • 第一个字符必须是下划线或者字母。

算术运算符

+(加号、正号)
-(减号、负号)
*
/
%

#include<stdio.h>

int main(){
	//算术运算符
	int a=10;
	int b=3;
	int c=a+b;//算术运算符 高于赋值(=)运算符
	printf("c=%d\n",c);
	c=a-b;
	printf("c=%d\n",c);
	c=a*b;
	printf("c=%d\n",c);
	c=a/b;//两个整数类型,做运算结果为整数,如果有小数,小数点后直接抹掉
	printf("c=%d\n",c);
	c=a%b;
	printf("c=%d\n",c);
	//注意:当求余数时,%两边的值,一定为整数。
	return 0;
}

算术运算符:** 先乘除,后加减**
算术运算符的优先级高于赋值运算符
赋值运算符的执行顺序是,从右到左。
算术运算符的执行顺序是,从左到右。

++和–运算符

++:表示变量加1。eg:a++ 表示a=a+1;
–:表示变量减1。eg:a-- 表示a=a-1。

#include<stdio.h>

int main(){
	int a=10;
	a++;
	printf("a=%d\n",a);
	return 0;
}

a++和++a的区别:
a++含义是——先使用a的值,然后再将a的值+1;
++a含义是——先将a的值+1,然后再使用a的值。

#include<stdio.h>

int main(){
	int a=10;
	int b;
	//b=a++;
	//1.先将a的值赋值给b;2.再将a的值加1。
	b=++a;
	//1.先将a的值加1;2.再将a的值赋值给b。
	printf("a=%d\n",a);
	printf("b=%d\n",b);
	return 0;
}

例题

不同类型数据间的混合运算

  1. +、-、*、/运算的两个数中有一个数为float或double,结果为double类型;eg: 12.3f+23.0运算结果为double类型;12.3f+14.5f运算结果为double类型。
  2. 如果int类型与float或double类型数据进行运算,运算结果为double类型;eg: 12+12.5f结果为double类型。
  3. char类型数据与整数数据进行运算,为整数类型。字符类型(char)与实数类型进行运算,结果为double类型。eg: ‘a’+100运算结果为整形;‘a’+13.2结果为double类型。
#include<stdio.h>
int main(){
	int i=3;
	float f=2.5f;
	double d=7.5;
	double d2=10+'a'+i*f-d/3;//从左到右
	//1.进行10+‘a’,结果:107,107+i*f-d/3;
	//2.*乘号的优先级大于加号,i*f,结果:7.5(double),107+7.5-d/3;
	//3.107+7.5=114.5(double),114.5-d/3;
	//4./的优先级比减号大,b/3,结果:2.5(double),114.5-2.5
	//5.结果:112.0
	printf("d2=%f\n",d2);
	return 0;
}

强制类型转换

#include<stdio.h>
int main(){
	float a=12.34f;
	int b;
	b=(int)a;//强制类型转换,将浮点数的精度丢失,不进行四舍五入,直接抹掉小数点后的数字
	printf("b=%d\n",b);
	return 0;
}

赋值语句

=
结合顺序:从右向左

#include<stdio.h>
int main(){
	//int a,b,c;
	//a=b=c=10;//正确写法
	//printf("a=%d,b=%d,c=%d",a,b,c);
	int a,b,c=20;
	printf("a=%d,b=%d,c=%d",a,b,c);//a和b是不确定的值
	//错误赋值示例: int a=b=c=10;!!!!
	return 0;	
}

~~ 错误赋值示例: int a=b=c=10;!!! ~~

复合赋值运算符

#include<stdio.h>
int main(){
	int a=10;
	int b=4;
	b+=4;
	printf("b=%d\n",b);
	a*=b+3;
	printf("a=%d\n",a);
	return 0;	
}

例题

赋值过程中的类型转换

// 2020/10/31
// C
#include <stdio.h>
int main() {
  // 1.浮点数--->整数
  float a = 14.6f;
  int b;
  b = a; //精度丢失
  printf("b=%d\n", b);
  // 2.整数--->浮点数
  int c = 17;
  double d;
  printf("d=%f\n", d);
  // 3.char--->int
  char ch1 = 'a';
  int num = ch1;
  printf("num=%d\n", num);
  // 4.int--->char
  int i = 289;
  char ch2;
  ch2 = i;
  printf("ch2=%d\n", ch2);
  return 0;
}

赋值过程中的类型转换

标准输入和输出函数

printf()、scanf()
标准化指数:100.2345=1.002345e+3

// 2020/10/31
// C printf()的用法
#include <stdio.h>
int main() {
  // 1.d格式---整数
  printf("No1.%d\n", 100);
  printf("No2.%5d\n",100);//输出的值占5列,右对齐
  printf("No3.%-5d\n", 100);//输出的值占5列,左对齐
  //3.c格式---字符
  printf("No4.%c\n",'l');
  //4.s格式---字符串
  printf("No5.%s\n","Hello");
  //5.f格式---浮点数
  printf("No6.%f\n",12.345);
  printf("No7.%20.15f\n",12.345);//右对齐
  printf("No8.%-20.15f\n",12.345);//左对齐
  //6.e格式---用指数形式表示浮点数
  printf("No9.%e\n",12.345);
  printf("No10.%e\n",0.000345);
  //7.o格式---输出八进制数
  printf("No11.%o\n",12);
  //8.x格式---输出十六进制数
  printf("No12.%x\n",12);
  //9.u格式--输出无符号的数
  printf("No13.%u\n",19);
  return 0;
}
// 2020/10/31
// C scanf()的用法
#include <stdio.h>
int main() {
  // int a;
  // scanf("a:%d", &a);//用户在输入值时要严格按照输入格式输入
  // printf("a=%d\n",a);
  // printf("a(address)=%d\n",&a);
  int i, j, z;
  scanf("i=%d,j=%d,z=%d", &i, &j, &z);
  printf("i=%d,j=%d,z=%d", i, j, z);
  //连续输入,如:%d%d%d,方法1--空格间隔,方法2--回车间隔
  return 0;
}

对于字符的输入:输入时要连续输入单个字符
注意:空格、回车、……,都会被当作有效字符。

字符输入输出函数

putchar()/getchar()

putchar()表示输出单个字符

// 2020/10/31
// C putchar()
int main() {
  char a = 'B', b = 'O', c = 'Y';
  printf("%c%c%c", a, b, c);
  putchar(a);
  putchar(b);
  putchar(c);
  return 0;
}

getchar()表示输入单个字符

// 2020/10/31
// C getchar()
int main() {
  char d, e, f;
  d = getchar();
  e = getchar();
  f = getchar();
  putchar(d);
  putchar(e);
  putchar(f);
  return 0;
}

注意:空格、回车、……,都会被当作有效字符。

例如:输入三角形的三条边a,b,c,求三角形的面积。
海伦公式:假设在平面内,有一个三角形,边长分别为a、b、c。
三角形的面积S可由以下公式求得:
S=sqrt(p*(p-a)(p-b)(p-c))
而公式里的p为半周长(周长的一半):
p=(a+b+c)/2

// 2020/10/31
// C 求三角形面积
#include <math.h>
#include <stdio.h>
int main() {
  double a, b, c;
  double area, p;
  printf("请输入三角形的三边a,b,c:\n");
  scanf("%lf%lf%lf", &a, &b, &c);
  p = (a + b + c) / 2;
  area = sqrt(p * (p - a) * (p - b) * (p - c)); // sqrt()开根号
  printf("三角形的面积为:%.2f", area);
  return 0;
}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangpi_hero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值