C语言(第四章顺序程序设计1)
第四章 最简单程序设计--顺序程序设计
开始
输入三边长 计算s 计算面积 结束
13
C语言程序设计
北京工业大学实验学院 陈洪丽
顺序结构程序设计举例
#include<stdio.h> #include<math.h> 数学函数库 void main( ) 因为要用到 {float a,b,c,s,area; 其中的sqrt scanf(″%f,%f,%f″,&a,&b,&c); 函数 s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); 运行情况: printf(″a=%7.2f, b=%7.2f, c=%7.2f, 3 ,4,6 n″,a,b,c,s); s=%7.2f\ a= 3.00, b= 4.00, c= 6.00, s= 6.50 printf(″area=%7.2f\n″,area);}
C语言程序设计
第四章 最简单程序设计 --顺序程序设计
北京工业大学实验学院 陈洪丽
C语言程序设计
北京工业大学实验学院 陈洪丽
本章主要内容
C语句概述
赋值语句
算法的基本控制结构
顺序结构程序设计举例
2
C语言程序设计
北京工业大学实验学院 陈洪丽
C语句概述
C程序
源程序文件1
源程序文件2
源程序文件n
5
分支 循环
辅助控制
C语言程序设计
北京工业大学实验学院 陈洪丽
计算机二级 C语言第四章-第五章
逻辑或
逻辑非
“&&”和“ ||”是双目运算符 “!”是单目运算符
C语言程序设计
第五章 选择结构程序设计
逻辑运算真值表
a 真 b 真 !a 假 !b 假 a&&b 真 a||b 真
真 假 假
假 真 假
假 真 真
真 假 真
假 假 假
真 真 假
逻辑运算符的优先次序 !(非) , &&(与),
优先次序:高(2) 结合方向:从右向左 (11) 从左向右
4.00, c=
6.00 s=
6.50
C语言程序设计
第四章 顺序程序设计
例4.11 从键盘输入大写字母,用小写字母输出
#include "stdio.h" void main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); }
值为0 值为1 值为1 值为1 值为1 //(5>3)&&2||(8<(4-(!0))) 值为1 值为1
C语言程序设计
第五章 选择结构程序设计
复杂逻辑条件的表述
判断某一年year是否为闰年
判别闰年的条件(int year): 能被4整除: year%4==0 能被4整除但不能被100整除: (year%4==0)&&(year%100!=0) 能被400整除: year%400==0 综合起来: ((year%4==0)&&(year%100!=0))||year%400==0 优化语句: 此表达式为真时是闰年 (year%4==0&&year%100!=0)||year%400==0
C语言程序设计1
N-S图描述算法:
程 序 设 计
输入h,f
计算x,y 输出x,y 顺序结构
#include <stdio.h> void main( ) 程序的 { 健壮性 int x, y, h, f; printf(“please input h, f:\n”); scanf(“%d%d”,&h,&f); x=2*h-f/2; y=f/2-h; 程序 printf(“头=%d, 脚=%d\n”,h, f); 4_1.cpp printf(“鸡=%d, 兔=%d\n”,x, y); 5 }
程 序 设 计
C
例子
例:求方程ax2+bx+c=0方程的根。 由此可见:计算机的智能是在人类 (2 算法 )的支配下的智能。 a、b、c由键盘输入,设b -4ac>0 。
分析:一元二次方程的根为:
-b+ b2 -4ac x1 = 2a
将上式分解为:
-b- b2 -4ac x2 = 2a
15
二、 输入输出
说明: (1) 所谓输入输出是以计算机主机为主体。
默认的输入设备——键 盘 默认的输出设备——显示器
程 序 设 计
(2) C语言没有输入/输出语句,I/O操作通过调 用C函数库中的函数来实现。 (3) 在使用系统库函数时,要用编译命令 “#include”将有关的“头文件”包括到用 户 standard input & output head 源文件中。 如:在程序开头要有:#include “stdio.h”
C语言程序设计-第四章简单计算器小程序-分支程序设计
P1 逻辑运算符 P2
或
逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】
C语言程序设计4-1
注:可以输出“转义字符” 可以输出“转义字符” putchar(‘\n’); putchar(‘\141’); putchar(‘\101’);
换行 a A
第四章 第4节
二 . getchar ( ) 函数 ——字符输入函数 ——字符输入函数
形式: 形式: getchar( ) 为空; 为空;无参数 作用: 作用: 从键盘上输入一个字符
例: float f=123.456; printf(“%f %e %g”,f,f,f,); 结果: 123.456000 1.234560e+002 123.456 结果:
10列 列 13列 列 7列 列
二 . 格式输入函数 scanf ( ) 1. 形式 : scanf( 格式控制, 地址表列) 格式控制, 地址表列)
1)格式说明——将输出数据转化为指定格式 1)格式说明 格式说明——将输出数据转化为指定格式
开头 + 修正或附加说明 + 格式字符 可选,可省 可选 可省 控制 % 0 m.n l h d c u 必须有 f g e
左对齐
空补0 指定宽度 空补 m指定宽度 n小数位数 小数位数
2.函数调用语句 2.函数调用语句
例: 1) printf(“%d”,a);
3.表达式语句 3.表达式语句
例: 1) 2) i=i+1; i+1;
(可执行,但无实际意义) 可执行,但无实际意义) 可执行
4.空语句 4.空语句 空语句——由单独的 ;组成 由单独的 例: ; 不作任何操作, 不作任何操作,但合法
输入项, 变量的地址。 输入项 变量的地址。如:&x 如有多个变量,则用逗号分开。 如有多个变量,则用逗号分开。如:&x,&y,&z 1)格式说明 格式说明 开头 + 修正或附加说明 + 格式字符 由“” 括起来 的字符 串, 实现 对输入 格式的 控制
C语言程序的设计第四章顺序程序的设计
C语言程序的设计第四章顺序程序的设计在学习 C 语言程序设计的过程中,第四章的顺序程序设计是构建程序基础的重要环节。
它就像是搭建房屋的基石,为后续更复杂的程序结构奠定了坚实的基础。
顺序程序设计,简单来说,就是按照语句出现的先后顺序依次执行。
这是程序设计中最基本也是最常见的结构。
在这一章节中,我们首先要了解的是数据的输入和输出。
C 语言中,常用的输入函数是`scanf`,而输出函数则是`printf`。
就拿`printf`来说,它可以以各种不同的格式来输出数据,比如整数可以用`%d`,浮点数可以用`%f`,字符用`%c`等等。
通过这些格式控制符,我们能够让程序输出的内容更加清晰、准确,符合我们的预期。
在顺序程序中,变量的定义和使用也是关键的一部分。
变量就像是一个个小盒子,我们给它们贴上不同的标签(变量名),然后往里面存放不同类型的数据(比如整数、浮点数、字符等)。
定义变量的时候,要明确变量的类型,这决定了它能够存储的数据范围和精度。
比如说,我们定义一个整数变量`int num = 10;`,这里的`int`就是变量类型,`num`是变量名,`10`是给变量赋的初始值。
在程序执行过程中,这个变量的值是可以改变的。
接着,我们来谈谈算术运算。
C 语言提供了丰富的算术运算符,像加法`+`、减法``、乘法``、除法`/`以及取余`%`。
在进行算术运算时,要注意数据类型的匹配和运算的优先级。
比如,先乘除后加减,如果有括号,先计算括号内的表达式。
赋值运算也是经常用到的。
`=`这个符号可不是数学里的“等于”,而是把右边的值赋给左边的变量。
而且,还可以进行复合赋值运算,比如`+=`、`=`、`=`、`/=`等,这让代码更加简洁高效。
在顺序程序设计中,关系运算和逻辑运算同样不可或缺。
关系运算包括大于`>`、小于`<`、等于`==`、大于等于`>=`、小于等于`<=`、不等于`!=`,通过这些运算,我们可以比较两个值的大小关系,并根据结果做出不同的处理。
顺序结构程序设计方案
C=5(f-32)/9;
见程序P4_1~P4_5
输出结果
123
7B
173 123 E china 1.234560e +002 123.45600
0 123.456
%
a
7
(一)printf函数的使用:
1、输出转换
在输出语句中,也会发生隐式转换。如:
float f=5.8; printf(“%d”, f ); 则输出 5。
如果是int a=5.8; printf(“%f”, a); 在 编译时不用出错,但不会输出结果。
如:%ld、%lx、%lo、%lu、%lf等
h:只用于将整型的格式修正为short型。如:%hd、%hx、 %ho、%hu等。
a
10
(一)printf函数的使用:
4、域宽及精度描述符(m•n):
m:指域宽。即对应的输出项共占多少位的位置; n:指精度。即小数占多少位。不指定n时,默认的精度是n=6。
a
9
(一)printf函数的使用:
另外,在%和格式字符之间可有一些可选的附加说明项, 其完整格式为: % — 0 m•n l/h 格式字符
指定输出类型 输出长度修正 指定输出域宽及精度 指定空位是否填0 是否左对齐 格式说明的起始符
可选项
3、长度修正符(l/h)
l:对整型指long型,对实型指double型。
6、多余的小数是被截断还是舍入?
第四章 顺序结构
例 m.n
例 int a=1234; float f=123.456; char ch=‘a’; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);
运行 1234,1234 结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a 例 static char a[]=“Hello,world!” printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a); 运行结果:Hello,world! Hello,world! Hello Hello Hel
看下面程序的运行结果
main() {int a=1,b=2; b=a; printf("%d%d",a,b); }
? 如果把b=a; 换成a=b a=b; 程序的结果如何? 如果把b=a; 换成a=b;,程序的结果如何? b=a
4.2字符的输入输出 字符的输入输出
C语言无I/O语句,I/O操作由函数实现 #include <stdio.h> 或者: #include “stdio.h”
4.3格式输入输出 格式输入输出
格式输出函数
格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据
输出表:要输出的数据(以“,”分隔) 格式控制串:包含两种信息 格式说明: %[修饰符]格式字符 , 用于指定输出格式 普通字符或转义序列:原样输出 格式字符
格式字符:
d,i x,X o u c s e,E f g %%
输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符
C语言 第四讲 基本输入输出和顺序程序设计
3
说明: • 格式控制字符串用于指定输出格式。它包含两类 字符: 常规字符:包括可显示字符和用转义字符表示的 字符。 格式控制符:以%开头的一个或多个字符,以说 格式控制符 明输出数据的类型、形式、长度、小数位数等。 (格式转换符) %[修饰符]格式转换字符 格式控制符 常规字符 常规字符 (修饰符) (转义符) 例: int x = 4; printf (“The Value of x is %ld\n”, x);
• scanf函数的格式控制符 一般形式: %[*] [width] [l | h] Type
width:指定输入数据的域宽,遇空格或不可转 换字符则结束。 Type:各种格式转换符(参照printf)。 *:抑制符,输入的数据不会赋值给相应的变量。 l:用于d、u、o、x|X前,指定输入为long型 整数;用于e|E、f前,指定输入为double型实 数。 h:用于d、u、o、x|X前,指定输入为short型 整数。
25
练习
1、从键盘输入三个整数,输出它们的和,乘积, 平均。 2、计算圆柱体体积,从键盘输入底面半径r,和圆 柱体半径h,输出圆柱体体积v
26
6
例:#include <stdio.h> void main ( ) { int a = 123; long L = 65537; printf (" 12345678901234567890\n"); printf ("a=%d--------(a=%%d)\n", a); printf ("a=%6d-----(a=%%6d)\n", a); printf ("a=%+6d-----(a=%%+6d)\n", a); printf ("a=%-6d-----(a=%%-6d)\n", a); printf ("a=%-06d-----(a=%%-06d)\n", a); printf ("a=%+06d-----(a=%%+06d)\n", a); printf ("a=%+6.6d----(a=%%+6.6d)\n", a); printf ("a=%6.6d-----(a=%%6.6d)\n", a); printf ("a=%-6.5d-----(a=%%-6.5d)\n", a); printf ("a=%6.4d-----(a=%%6.4d)\n", a); printf ("L=%ld------(L=%%ld)\n", L); printf ("L=%hd----------(L=%%hd)\n", L); }
11《C语言程序设计》教案第四章数组(1)—一维数组
min_p=j;} printf(“the min is%d,position %d”,min,min_p);
} (5)数组在内存中的存放 例如 int data[3];则在内存中的状态如下:
1000 1002
1004
data[0] data[1] data[2]
讨论、思考题、作业: 实验指导书习题
f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出 公式为: f[i]=f[i-1]+f[i-2]; 循环语句为:for(i=2;i<20;i++) 程序代码: main()
{ int i;
static int f[20]={1,1};
/*定义 20 个元素的数组
参考资料(含参考书、文献等):
叶斌 陈世强. C 语言程序设计. 北京:科学出版社 授课类型:理论课 讨论课□ 实验课□ 练习课□ 其他□ 教学方式:传统授课 双语□ 讨论□ 示教□ 指导□ 其他□ 教学资源:多媒体 模型□ 实物□ 挂图□ 音像□ 其他□
定义了一个二维数组 b,该数组由 9 个元素构成,其中每一个数组元素都属于浮点(实
数)数据类型。
数组
b
的各 个数据元 素依次
是:b[0][0],b[0][1],b[0][2],b[1][0],b[1][1],b[1][2],b[2][0],b[2][1],b[2][2](注意:下标从 0-2)。
每个数组元素也都可以作为单个变量使用。
例如:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10];系统会对所有数
组元素自动赋 0 值。
4)在对全部数组元素赋初值时,可以不指定数组长度。
第四章 用C语言编程1
数据类型、运算符与表达式
常用运算符
算数运算符 + - * / % ++ - 关系运算符 > < == != <= >= 逻辑运算符 && || ! 位运算符 & | ^ << >> ~ 逗号运算符 , 赋值运算符 = 取地址运算符 & 指针运算符 * 条件运算符 <表达式1>?<表达式2>:<表达式3> 长度运算符 sizeof 复合运算符 += -= *= /= &= ^= |= <<= >>= 16
39
函数
函数参数传递的方法 传值调用(传值):将实际参数的值传递给被 调用函数。此时,形式参数值的变化对实际参 数没有任何影响 引用调用(传地址):将实际参数的地址传递 给被调用函数。如,传递一个数组名。此时, 形式参数与实际参数在内存中共用一个地址, 所以,即形式参数的与实际参数操作的是同一 个内存单元,所以形参值的变化就是实参值的 变化。
27
循环语句
while (循环表达式) { 循环体 }
do { 循环体 } while (循环表达式)
for (初始化表达式;循环表达式;增量表达 式) { 循环体; }
28
函数
函数定义的形式:
存储类型 数据类型 函数名(参数表) 参数说明; { 函数体; } 函数名是符合C语言语法规则的标识符 数据类型是基本数据类型或指针 参数表中是形式参数的列表 参数说明是对参数的变量类型进行定义 函数体是函数的执行部分,要实现的功能写在这里
33
函数
函数返回值 函数可以返回一个值给调用它的函数。 返回语句 return 表达式; return(表达式); 无函数也可以不返回值,此时可以只写一个 return;也可以什么都不写。 函数只能返回一个值 不返回值的函数可定义为void类型
C语言程序设计第四章
运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
最简单的C程序设计(1)
返回值:所输入的一个字符。若文件结束或出错,则返回-1。 *说明:1、用getchar( )只能接收一个字符;
2、getchar( )函数没有参数;
3、由于该函数有返回值,故常出现在各种表达式中,作 为表达式的一部分,以它的返回值参与相应的运算。
例:4.2 输入单个字符。
注意:如果在一个函数中要调用getchar和putchar函数,应在该函数 (或)所在源文件的开头加上“包含命令” #include <stdio.h>
语 for( )~ 句 功 条件语句 循环语句 能 语 句 break switch 功 能 if( )~else~ 中止执行switch或循环语句 多分支选择语句
while( )~
continue
循环语句
提前结束本次循环语句
goto
转向语句
do~while( ) 循环语句
return 从函数返回语句
例4.9 用scanf函数输入数据 2.格式说明: 格式符的使用与printf函数中的相同。
几点说明:
⑴ 对unsigned型变量用cscanf函数赋值时,可采用%u、%d、 %o、%x格式。 ⑵ 可以指定输入数据所占地列数,这时系统将自动截取指定长 度的数据。 ⑶ 如果在%后有一个“*”附加说明符,表示跳过它指定的列数, 即将读入的指定长度的数据不赋给任何变量,而将下一个输入的数 据按下一个格式符的要求赋给相应的变量。例如:
① %e:不指定输出数据所占的列宽和小数部分的位数,由系统自动 确定:数值部分按规范化指数形式输出,且小数部分占6位,加上一位 整数和一位小数点,共占8列;指数部分含符号e、指数部分的符号(+ 或-)及3位指数,共占5列。总计占13列。
② %m.ne和%-m.ne:其中m、n和“-”的含义与前同,即m规定了 输出数据所占的整个列宽,n规定了数值中小数部分所占地列宽, “-”规定了对齐方向。
C语言4-1 120319
(7) f格式符。用来以小数形式输出实数 (包括单双精度)
① %f。系统自动指定字段宽度,整数 部分全部输出、并输出6位小数。
例4.6 输出实数时的有效位数。 #include <stdio.h> 运行结果: void main() 333333.328125 { float x,y; x=111111.111;y=222222.222; printf(“%f”,x+y); }
4.1 C语句概述
(五)复合语句 用一对{ }括起来的语句 { z=x+y; t=z/100; printf(“%f”,t); }
4.2
赋值语句
赋值语句格式:赋值表达式 ; 例:a=100 赋值表达式 a=100; 赋值语句 赋值表达式与赋值语句的区别: 赋值表达式可以用在其他表达式之中, 而赋值语句不可以 例: if((a=b)>0) t=a; 正确 if((a=b;)>0) t=a; 错误
4.4 字符数据的输入输出
4.4.1 字符输出函数
一般形式:putchar(c) 函数作用:向终端输出一个字符 字符型变量 整型变量
例4.1 输出单个字符。 4.4 字符数据的输入输出 #include<stdio.h> void main() 运行结果:BOY { char a,b,c; a=‘B’;b=‘O’;c=‘Y ’; putchar(a);putchar(b); putchar(c);putchar(‘\n’ );
注意:在输出的数字中并非全部数字都是有 效数字。单精度实数的有效位数一般为7位。
例4.7 输出双精度数时的有效位数 #include <stdio.h> void main() { double x, y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f”, x+y); } 运行结果: 3333333333333.333010 双精度实数的有效位数一般为16位。
《C程序设计》作业参考答案(1-4章)
第1章C语言概述习题(P13):1.3 写出一个C程序的构成。
答:C程序由一个main函数和0个或多个自定义函数构成,每个函数的构成如下:函数类型函数名(函数参数列表){说明部分执行部分}1.4 C语言以函数为程序的基本单位,有什么好处?答:一个函数实现一个相对独立的功能,便于实现程序的模块化。
1.5 请参照本章例题,编写一个C程序,输出以下信息:*************************************************Very good!*************************************************答:参照例1.1编程如下# include <stdio.h>void main(){printf("********************************************\n");printf(" Very good!\n");printf("********************************************\n");}1.6 编写一个C程序,输入a、b、c 3个值,输出其中最大者。
答:参照例1.3编程如下法一:修改例1.3的主函数,自定义max函数不变。
# include <stdio.h>void main(){int max(int x,int y); /*函数声明*/int a,b,c,m; /*定义4个变量,m用于存放最大值*/scanf("%d%d%d",&a,&b,&c);/*从键盘上输入3个整数*/m=max(a,b); /*第一次调用max函数求出前两个数的最大值放在m中*/m=max(m,c); /*再调max函数求出m和第三个数的最大数*/printf("max is %d\n",m); /*输出结果*/}int max(int x,int y) /*定义求两个数的最大数的函数max */{int z;if(x>y) z=x;else z=y;return(z);}法二:修改例1.3的主函数和max函数,将max函数改为求3个数的最大数。
C语言程序设计 第3版 第4章 顺序结构程序设计
printf(“%d“,a); printf(“%d“,a+b);
C语言程序设计
2.printf函数
格式功能 格式控制 注意说明
注意说明:
(1)格式转换说明符个数和类型必须与输出列表一一 对应 。
(2)格式控制字符串中可以有转义字符和普通字符。 转义字符根据具体作用实现操作,普通字符原样输出。
例题:
scanf(“%d”,&a);
//一个变量
scanf(“%d%d”,&a,&b);
//两个变量
scanf(“%d%d%d”,&a,&b,&c); //三个变量
C语言程序设计
1.scanf函数
格式功能 格式控制 注意说明
注意说明:
(1)格式控制字符串中多个格式转换说明符之间没有 逗号,输入数据时,通常使用空格键或者回车键来分隔 数据;格式转换说明符之间有逗号,输入数据时,一定 要用逗号来分隔数据。
功能描述 输出一个十进制整数 输出一个单精度实数 输出一个双精度实数 按指数格式输出一个实数
输出一个字符 输出一个字符串 输出一个八进制整数 输出一个十六进制整数
C语言程序设计
2.printf函数
格式功能 格式控制 注意说明
输出列表:
输出列表由输出项组成,两个输出项之间用逗号分隔,输出项可以 是一般的表达式,也可以是简单变量,即:变量名或者表达式。
a
b
2
3
t
C语言程序设计
简单语句分析
实例介绍 算法设计 语句编写
将具体的算法转化为C语言的标准语句,采用 逐条语句编写方法,称为顺序结构程序设计。 算法设计如下:
1、定义三个变量a、b和t; 2、2存储到a中,3存储到b中; 3、将a的值存储到t中; 4、将b的值存储到a中; 5、将t的值存储到b中; 6、输出a和b的值;
C语言程序设计:第4章 顺序结构与选择结构
printf("max: %d\n",b); return 0; }
#include <stdio.h> int main(void) {
int a ,b,max; printf("请输入a和b的值\n"); scanf("%d%d",&a,&b); max = a; if(max < b)
7
顺序结构:复合语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
#include <stdio.h> int main(void) {
int a = 10; int b = 11;
注意: 1>复合语句不以分号;作为结束符, 即最后的}后面不加分号。 2>在复合语句中可以定义变量,但
if(score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}
19
选择结构: if...else if语句
成绩等级划分: 输入自己的成绩,根据成绩的范围输出成绩等级。
成绩范围
等级
90--100
A
80--89
B
70--79
C
60--69
D
0--59
3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字 母,则把它变为大写字母;若是其他字符则不变
4.输入数字1-7,并输出显示对应的星期 (输入的数字 1 ,输出星期一,以此类推)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
条件 循环 循环 循环 结束本次循环 中止switch 或循环 多分支选择 转向 从函数返回
(2) 函数调用语句
函数名(参数); 如:printf (“This is a C program.\n”); max(a,b);
(3) 表达式语句
在表达式后加 “ ;” 构成 a=6 a=5 ; 如 i=i+2 表达式 而 i=i+2 ; 表达式语句 x+y x+y ;
1 1 1 1 1 1 1 0
0 0 0 0 1 1 1 1 1 1 0
c=„\376‟
i
②带符号的字符型数据赋给整型变量时 若最高位为1(负数),则整型变量的高8位补1,若最高位为0(正数) 则整型变量高8位补0。 例T3-8-9.c main( ) { int i; char c; c=„\376‟; i=c; printf (“i=%d,c=%d\n”,i,c); } 1 运行结果:i= -2,c= -2
2、类型转换
(1)实型数据赋给整型变量时,舍去实型数据的小数部分 如:int i; i=3.56; 结果i的值为3 (2)整型数据赋给实型变量时,数值不变,但以浮点形式 存放于内存。 如: float a=23; 先将23转换成23.000000,然后送a中 double b=23; 先将23转换为23.00000000000000,然后送b 中
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
例T3-8-13.c 符号位 main( ) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 { unsigned int a=65535; int b; b=a; printf (“a=% u ,b=%d\n”,a,b); }
if
((a=b)>0)
t=a;
4、类型转换问题
变量类型的不同,所接收的数据也是不同的,当赋值运算符两侧的数据类 型不一致时,在赋值时要进行类型转换 (1) 实型数据赋给整型变量时,舍去实型数据的小数部分 如:int i; i=3.56; (2) 整型数据赋给实型变量时,数值不变,但以浮点形式 存放于内存。 (3) double型数据赋给float变量,截取7位有效数字存放float单元,应注意数值 溢出 (4)字符型数据赋给整型变量 ①无符号字符型赋给整型量:将其存放在整型变量的低8位中,而高位以0补齐 ②带符号字符型赋给整型量时若最高位为1(负数),则整型变量的高8位补1, 若最高位为0(正数),则整型变量高8位补0。 (5) int, short, long型数据赋给char变量,则将其低8位赋给char型变量 (6) long型数据赋给int型变量,将long型数据的低16位赋给int型变量 (7)将unsigned int型数据赋给 long 型变量时 ①将unsigned short型数据送到long int型变量的低16位,longint的变量高 16位补0 ②若无符号数据赋给相同长度的带符号的变量,则原样赋给。 (8) 将带符号的数赋给长度相同的无符号变量
(3) double型数据赋给float变量 截取其前面的7位有效数字,存放到float单元,应注意数值 范围不能溢出,如:
float f; double d=123.45678e65; f=d;
由于数据溢出,f将得到错误的值
float 数据赋给double变量时,数值不变, 有效位扩展到16位。
因此a的值是5,整个表达式的值是5。
赋值运算符的结合顺序:从右向左 因此:a=(b=5) 与 a=b=5 是等价的。
例:
a=b=c=5
a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)
表达式的值为5,a,b,c的值为5。
表达式的值为11,a的值为11,c的值为6。 表达式的值为10,a的值为10,b为4,c为6。 表达式的值为5,a的值为5,b为10,c为2。
0 b=65544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
a=8
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
(7)将unsigned int 型数据赋给 long 型变量时 ①将unsigned short 型数据送到 long int 型变量的低16位, long int的变量高16位补 0 例T3-8-12 main ( ) { 输出: unsigned a=65535; a=65535, b=65535 long b; b=a; printf("a=%u ,b=%ld\n", a, b); } 数值位
运算结果:a=65535,b= -1
a b
(8)将带符号的数赋给长度相同的无符号变量 过程: 原样赋给
1 111111111111111
a
数值位 例T3-9.c main( ) 1 111111111111111 { unsigned int a; 符号位 int b= -1; a=b; printf (“a=% u,b=%d\n”,a,b);
函数 1 ┄ 函数n
函数首部 局部变量声明
函数体 执行语句
C语言提供的语句分五大类:
(1) 控制语句,完成控制功能 (2) 函数调用语句 (3) 表达式语句
(4) 空语句
(5) 复合语句
C语言提供的语句分五大类
(1)控制语句,完成控制功能
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
if( ) ~ else ~ for ( ) ~ while ( ) ~ do ~ while ( ) continue break switch goto return
c=33
0 0 1 0 0 0 0 1
0 0 1 0 0 0 01
(6)long型数据赋给int型变量,将long型数据的低16位赋给int型变量 例T3-8-11.c main() { short a; long b=65544; a=b; printf("a=%d,b=%ld\n",a,b); } 运算结果:a=8, b=65544 符号位
4.4.1 putchar( ) 函数 (字符输出函数)
#include “stdio.h” main()
{ char a,b,c; a=”B”;b=’O’;c=’Y’; putchar(a); putchar(b); putchar(c); } 运行结果: BOY 如果将例程最后一行改为 putchar(a); putchar(‘\n’); putchar(b); putchar(c); 则输出结果为: B O Y
3、赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子。
(1)一般形式:<变量> <赋值运算符> <表达式> (2)赋值表达式求解过程
计算赋值号右边表达式的值,然后赋给左边的变量。 如:a=3+5 在C语言中,表达式又可以是赋值表达式,
如a=(b=5); 其中 b=5是赋值表达式,其值是5,
4.4.2 getchar( ) 函数
getchar( ) 函数(数据输出函数)
格式: getchar(); 用途:向输出设备输出一个字符
说明:
getchar()只能接收一个字符。 getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以 下赋给任何变量,作为表达式的一部分。
2、复合的赋值运算符
在赋值号前加其它运算符,可以构成复合运算符。 如: a=a+b a+=b x=x*(y+8) x*=y+8 x=x%3 x%=3 为了便于记忆,将赋值号左边移到赋值号右边,赋值号左边再 补上变量名。 如:a + = b a + = (b) a=a+b , 其中a是变量,b是表达式 x * = y+8 x * = (y+8) x=x*(y+8) 在C语言中,有十个二元运算符: +、-、*、/、%、《、》、&、^、| 可与赋值号一起构成复合运算符; 其优点是:简化程序,提高编译效率。
4.4
字符数据的输入输出
两个简单的字符输入输出函数 getchar( ) putchar( ) 使用前提,在主函数的前面加上如下语句 #include < stdio.h > 或 #include “stdio.h” 4.4.1 putchar( ) 函数 (字符输出函数) 格式: putchar(char c); c可以是字符常量或字符变量 用途:向输出设备输出一个字符
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 0
c=„\376‟
i
(5)int, short, long型数据赋给char变量,则将其低8位赋给char型 变量
例T3-8-10.c main() { int i=289; char c; c=i; printf(“i=%d,c=%d, c=%c \n”,i,c,c); } 运算结果: i=289 0 0 0 0 0 0 0 1 i=289,c=33,c=!
(4) 空语句
;
无任何操作,但合法,可用于循环中的转折
(5) 复合语句 用{ }将若干语句括起来而构成的语句。
如: if (x>y) z=x; x++; y- -; 与 if (x>y) { z=x; x++; y- -; } 意义不同
4.2 赋值运算符和赋值表达式
1、赋值运算符 “=”是赋值号,也是赋值运算符 功能:将赋值号右边表达式值赋给赋值号左边的变量,赋值 号同时含有计算的功能。 如:a=3; b=x*y; a,b变量中原来不管存放什么值,执行赋值语句后, 新值将取代旧值