C程序设计 3 最简单的C程序设计--顺序程序设计知识点总结

本文为大一新生为期末复习所整理

课本为C程序设计(第五版)谭浩强第三章

3.1顺序程序设计举例

【例3.1】

有人用温度计测量出华氏法表示的温度(如64'F),今要求把它转化为以摄氏法表示的温度(如17.8'C)

解题思路:C=5/9(F-32)

编写程序:

#include<stdio.h>

int main( )

{

float F,C;

F=64.0;

C=(5.0/9)*(F-32);

printf("F=%f\nC=%f\n",F,C);

return 0;

}

【例3.2】

计算存款利息。有一千元,想存一年。有三种方法可选:①活期,年利率位r1;②一年期定期,年利率为r2;③存两次半年期,年利率为r3.请分别计算出一年后按3种方法所得到的本息和。

解题思路:

关键是确定计算本息和的公式。

若存款额为p0,则:

活期存款一年后本息和为p1=p0(1+r1);

一年期定期存款,一年后本息和为p2=p0(1+r2);

两次半年定期存款,一年后本息和为p3=p0(1+r3/2)(1+r3/2).

编写程序:

#include <stdio.h>

int main ( )

{

float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;

p1=p0*(1+r1);

p2=p0*(1+r2);

p3=p0*(1+r3/2)*(1+r3/2);

printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);

return 0;

}

3.2数据的表现形式及其运算

3.2.1常量和变量

  1. 常量

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

常量的分类:

  1. 整型常量。如100,235,-236等都是整型常量

  1. 实型常量。有两种表示形式

  • 十进制小数形式,由数字和小数点组成。如123.456,0.365,-12.36,0.0,12.0等。

  • 指数形式,如12.34e3(代表12.34*),-346.87e-25(代表-346.87*),0.145E-25(代表0.145*)等。以字母e或E代表以十为底的指数。注意:e或E之前必须有数字,且e或E后面必须为整数。不能写作e4,12e.25。

【注意】:e或E左边有数右边为整!

  1. 字符常量。有两种形式的字符常量。

  • 普通字符,用单撇号括起来的字符,如:'a','Z','3','?','#'。不能写成‘ab’或‘12’。

【注意】:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。

ASCII码,如字符‘a’的ASCII码是97,‘A’是65。

  • 转义字符

\n 换行符

\r 一个回车

\' 一个'

\" 一个"

\\ 一个\

\t 一个制表位,实现对齐功能

【例】printf("张无忌赵敏周\r芷若小昭");

输出的是:芷若小昭敏周

  1. 字符串常量。如“boy”,"123"等。用双撇号把若干个字符括起来

【注意】:单撇号内只能包括一个字符,双撇号内可以包含一个字符串。

  1. 符号常量。用一个符号名代表一个常量。

用#define指令,指定用一个符号名称代表一个常量。如:

#define PI 3.1416 //注意行末没有分号

【说明】①PI就是3.1416

②#define 符号 常量(表达式)

③符号常量不占内存,习惯上符号常量常用大写表示

④使用符号常量的好处&1含义清楚。&2做到“一改全改”

  1. 变量

【注意】

  1. 先声明后使用;

  1. 变量三要素:变量名+值+数据类型(int num;num=90;);

  1. 变量在同一个作用域内不能重名(num1,num2······);

  1. 常变量

使用常变量:在定义变量时,前面加一个关键字const,如:

const int a=3;

定义a为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。

【常变量与常量的异同】

常变量具有变量的基本属性:有类型,占储存单元,只是不允许改变其值。

可以说是常变量是有名字的不变量,而常量是没有名字的不变量。

【符号常量与常变量】

#define Pi 3.1415926 //定义符号常量

const float pi=3.1415926; //定义常变量

定义常量的方法

  1. #define

#define 常量名 常量值

【eg】

#include <stdio.h>

#define PI 3.14

  1. const

const 数据类型 常量名=常量值;

【eg】

#include <stdio.h>

const double PI=3.14;

int main ( )

{

double area;

double r=1.2;

area=PI*r*r;

printf("面积:%.2f",area);

}

【说明】

const是一个关键字

PI是常量名,即一个常量,常量值为3.14

因为PI为常量,所以其值不可更改

const定义常量时,需要加分号。

【const与#define的区别】

  1. const定义时带类型而define不带类型;

  1. const编译时起作用,define预处理时起作用;

  1. const不可重定义而define可通过undefine取消某个符号的定义;

  1. 标识符

在计算机高级语言中,用来对变量,符号常量名,函数,数组,类型等命名的有效字符序列统称为标识符

【标识符的命名规则与规范】

  1. 只能由数字,字母,下花线3种字符组成,且第一个字符必须为字母或下画线

  1. 数字不可以做开头

  1. 不可以使用关键字或保留字,但可以包含

  1. 严格区分大小写,长度无限制

  1. 标识符不能包含空格

  1. 见名知意

3.2.2数据类型

3.2.3整型数据

  1. 整型数据的分类

  1. 基本整型(int型)

  1. 短整型(short int)

  1. 长整型(long int)

  1. 双长整型(long long int)

  1. 整型变量的符号属性

【说明】无符号的取值范围都从零开始

3.2.4字符型数据

  1. 字符与字符代码

127个字符:

字母,数字,专门符号,空格符等

  1. 字符变量

字符变量是用类型符char定义字符变量

如:char c=‘?’;

定义c为字符型变量并使初值为字符‘?’。‘?’的ASCII代码是63,系统把整数63赋给变量c。

c是字符变量,实质上是一个字节的整型变量,由于常用来存放字符,所以称为字符变量。可以把0~127之间的整数赋给一个字符变量。

在输出字符变量的值时,可选择以十进制整数形式输出,或以字符形式输出。

如:printf(“%d %c\n”,c,c);

输出结果为63 ?

【说明】用%d格式输出十进制整数63,用%c格式输出字符‘?’。

字符型数据的存储空间和值的范围:

【说明】在使用有符号字符型变量时,允许存储的值为-128~127,但字符的代码不可能为负值,所以在存储字符时实际上只用到0~127这一部分,其第一位都是0.

3.2.5浮点型数据

  1. float型(单精度浮点型)

  1. double型(双精度浮点型)

  1. long double型(长双精度)

3.3运算符与表达式

3.3.1算数运算符

&取余

取余前后必为整数

3.3.2自增(++),自减(--)运算符

【例】

3.3.3算术表达式和运算符的优先级和结合性

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

数据类型自动转换规则

【例3.3】

给定一个大写字母,要求用小写字母输出。

编写程序:

#include <stdio.h>

int main ( )

{

char c1,c2; //声明字符

c1=‘A’; //将字符‘A’的ASCII代码放到c1变量中

c2=c1+32; //得到字符‘a’的ASCII代码,放到c2变量中

printf("%c\n",c2); //输出c2的值,是一个字符

printf("%d\n",c2); //输出c2的值,是字符‘a’的ASCII代码

}

运行结果:

a

97

3.3.5强制类型转换运算符

将精度高的数据类型转化为精度小的数据类型,使用时要加上强制转化符(),但可能造成精度降低或溢出。

格式:(类型名)(表达式)

【注意】表达式应该用括号括起来。若写成(int)x+y,则只将x转换成整型,然后与y相加。

3.4C语句

3.4.1C语句的作用和分类

  1. 控制语句

九种控制语句

  1. if( )···else···(条件语句)

  1. for( )···(循环语句)

  1. while( )···(循环语句)

  1. do···while( )(循环语句)

  1. continue(结束本次循环语句)

  1. break(中止执行switch或循环语句)

  1. switch(多分支选择语句)

  1. return(从函数返回语句)

  1. goto(转向语句)

【说明】

()表示括号中是一个判断条件,···表示内嵌的语句

例如:if( )···else···可写作if(x>y) z=x;else z=y;

  1. 函数调用语句

函数调用语句由一个函数调用加一个分号构成,如:

printf(“This is a C statement.”);

其中printf(“This is a C statement.”)是一个函数调用,加一个分号成为一个语句

  1. 表达式语句

由一个表达式加一个分号构成,如a=3;(a=3是语句,a=3;是语句表达式)

  1. 空语句

  1. 复合语句

可以用{}把一些语句和声明括起来成为复合语句(又称语句块)。

3.4.2最基本的语句--赋值语句

【例3.4】

给出三角形三边长,求三角形面积。

编写程序:

#include<stdio.h>

#include<math.h>

int main ( )

{

double a,b,c,s,area;//定义各变量,均为double型

a=3.67;

b=5.43;

c=6.21;

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("a=%f\tb=%f\tc=%f\n",a,b,c);

printf("area=%f\n",area);

return 0;

}

运行结果

a=3.670000 b=5.430000 c=6.210000

area=9.903431

  1. 赋值运算符

赋值符号“=”就是赋值运算符,作用是将一个数据赋给一个变量。

  1. 复合的赋值运算符

在赋值符=之前加上其他运算符,可以构成复合的运算符

例如:

a+=3等价于a=a+3

x*=y+8等价于x=x*(y+8)

x%=3等价于x=x%3

  1. 赋值表达式

由赋值运算符将一个变量和一个表达式连接起来的式子

形式为:变量 赋值运算符 表达式

只能是左变量,右表达式

  1. 赋值表达式和赋值语句

赋值表达式:a=b

赋值语句:a=b;

  1. 变量赋初值

如:

int a=3;

float f=3.56;

char c=‘a’;

int a,b,c=5;

int a=3,b=3,c=3;

3.5数据的输入输出

3.5.1输入输出举例

【例3.5】

求ax*x+bx+c=0方程的根。a,b,c由键盘输入,设b*b-4ac>0.

编写程序:

#include<stdio.h>

#include<math.h>//程序中要调用求平方根函数sqrt

int main ( )

{

double a,b,c,disc,x1,x2,p,q;//disc用来存放判别式(b*b-4ac)

scanf("%lf%lf%lf",&a,&b,&c);//输入双精度型变量的值要用格式声明“%lf”

disc=b*b-4*a*c;

p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1=p+q;

x2=p-q;//求出两根

printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);//输出两根

return 0;

}

运行结果

1 3 2

x1=-1.00

x2=-2.00

【注意】

在输入数据时,1,3,2这3个数之间用空格分隔,最后按回车键

【说明】

  1. 用scanf函数输入a,b,c。&地址符

  1. 双撇号内用%lf格式声明,表示输入的是双精度型实数

  1. %7.2f表示在输出x1,x2时,指定数据占七列,其中小数占两列。

3.5.2有关数据输入输出的概念

  1. 要在程序文件的开头用预处理指令#include把有关头文件放在本程序中。

  1. #include<stdio.h>&#include"stdio.h"

3.5.3用printf函数输出数据

  1. printf函数的一般格式

printf(格式控制,输出表列)

printf(“%d,%c\n”,i,c)

  1. 格式字符

  1. d格式符:用来输出一个有符号的十进制整数

%5d表示输出数据占5列,输出的数据显示在此5列区域的右侧

如:printf(“%5d\n%5d\n”,12,-345);

输出结果为

12(12前三个空格)

-345(-345前面有一个空格)

  1. c格式符:用来输出一个字符

如:short a=121;

printf(“%c”,a)

输出字符为y

  1. s格式符:用来输出一个字符串

如:printf(“%s”,“CHINA”);

执行此函数时在显示屏上输出字符串“CHINA”(不包括双引号!)

  1. f格式符:

用来输出实数(包括单,双精度,长双精度),以小数形式输出,有几种用法

  1. 基本型,用%f

实数中的整数部分全部输出,小数部分输出6位(不够后边补零)。

【例3.6】

用%f输出实数,只能得到六位小数

#include<stdio.h>

int main ( )

{

double a=1.0;

printf("%f\n",a/3);

return 0;

}

运行结果:

0.333333

  1. 指定数据宽度和小数位数

如:例3.6中:printf(“%20.15f\n”,a/3);

输出结果为: 0.333333333333333(0前有三个空格)

【说明】20:输出的数据占20列,15:含15位小数

【注意】float型数据的存储单元只能保证六位有效数字,double型数据能保证15位有效数字

【例3.7】

float型数据的有效位数

#include<stdio.h>

int main ( )

{

float a;

a=10000/3.0;

printf("%f\n",a);

return 0;

}

运行结果:

3333.333252

【注意】理论值为3333.3333333……但由于float只能保证6~7位有效数字,因此程序虽然输出了六位小数,但从左面数第七位数字以后的数字并不保证是绝对正确。

  1. 输出的数据向左对齐,用%-m.nf

在m.n的前面加一个负号,其作用与%m.n形式作用基本相同,但当数据长度不超过m时,数据向左靠,右端补空格。如:

第一次输出a时输出结果向左端考,右端空5列,第二次输出a时输出结果向右端靠,左端空5列;

  1. e格式符:

指定以指数形式输出

  1. 其他格式符
  1. i格式符:按十进制整型数据的实际长度输出

  1. o格式符:以八进制整数形式输出

  1. x格式符:以十六进制数形式输出整数

  1. u格式符:用来输出无符号型数据(unsigned),以十进制整数形式输出

  1. g格式符:用来输出浮点数

【说明】%6d:最少占六位,可以超出,但不够就补空格

3.5.4用scanf函数输入数据

  1. scanf函数的一般形式

scanf(格式控制,地址表列)

地址表列是若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

  1. scanf函数中的格式声明

与printf函数中的格式声明相似

%d整数 %f小数 %c字符 %s字符串

  1. 使用scanf函数时注意事项

  1. scanf函数中的格式控制后面应当是变量地址,而不是变量名!如:

scanf(“%f%f%f”,&a,&b,&c);

  1. 如果在格式控制字符串中除了格式声明以外还有其他字符,则在输入数据时对应的位置上应输入与这些字符相同的字符。如果有

scanf(“a=%f,b=%f,c=%f”,&a,&b,&c);

在输入数据时,应在对应的位置上输入同样的字符。即输入

a=1,b=3,c=2

如果输入

1 3 2

就错了,因为系统会把它和scanf函数中的格式字符串逐个字符对照检查的,只是在%f的位置上代以一个浮点数。

【注意】在“a=1”的后面输入一个逗号,它与scanf函数中的“格式控制”中的逗号对应。如果输入时不用逗号而用空格或其他字符是不对的。

  1. 在用“%c”格式声明输入字符时,空格字符和转义字符中的字符都作为有效字符输入,例如:

scanf(“%c%c%c”,&c1,&c2,&c3);

在执行此函数时应该连续输入3个字符,中间不要有空格。

如abc而不是a b c(系统会把第二个字符‘ ’,送给c2)

3.5.5字符输入输出函数

  1. 用putchar函数输出一个字符

【例3.8】

先后输出BOY三个字符

编写程序:

#include<stdio.h>

int main ( )

{

char a='B’,b='O',c='Y';

putchar(a);

putchar(b);

putchar(c);

putchar('\n');

return 0;

}

运行结果

BOY

【思考】

#include<stdio.h>

int main ( )

{

int a=66,b=79,c=89;

putchar(a);

putchar(b);

putchar(c);

putchar('\n');

return 0;

}

运行结果:BOY

【说明】

putchar(c)中的c可以是字符常量,整型常量,字符变量或整型变量(其值在ASCII代码范围内)

可以用putchar函数输出转义字符,例如

putchar('\'')(括号中的\'是转义字符,代表单撇号,输出单撇号字符;

  1. 用getchar函数输入一个字符

【例3.9】

从键盘输入BOY三个字符,然后把他们输出到屏幕。

编写程序:

#include<stdio.h>

int main ( )

{

char a,b,c;

a=getchar( );

b=getchar( );

c=getchar( );

putchar(a);

putchar(b);

putchar(c);

putchar('\n');

return 0;

}

运行结果

BOY(连续输入BOY,再按空格)

BOY

【例3.9】可改写为

#include<stdio.h>

int main ( )

{

putchar(getchar( ));

putchar(getchar( ));

putchar(getchar( ));

putchar(‘\n’);

return 0;

}

运行结果

BOY

BOY

【例3.10】

改写例3.3程序,使之可以适用于任何大写字母,把它转化为小写字母,然后用putchar函数输出该小写字母。

【例3.3】

给定一个大写字母,要求用小写字母输出。

编写程序:

#include<stdio.h>

int main ( )

{

char c1,c2;

c1=getchar( );

c2=c1+32;

putchar(c2);

putchar('\n');

return 0;

}

运行结果:

B

b

除此之外,可用printf函数

#include<stdio.h>

int main ( )

{

char c1,c2;

c1=getchar( );

c2=c1+32;

printf("大写字母:%c\n小写字母:%c\n"c1,c2);

return 0;

}

运行结果:

N

大写字母:N

小写字母:n

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

萍萍子ing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值