《c语言编程一.ppt》由会员分享,可在线阅读,更多相关《c语言编程一.ppt(101页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言课件为什么从C语言开始开发能力最强,应用最广泛 操作系统开发、应用程序开发、单片机程序开发、网络程序设计专业水平的试金石 各种专业考试首选程序设计语言:研究生入学考试、程序员考试、等级考试后续主干课程的重要基础 数据结构、数据库程序设计、Java程序设计、可视化程序设计、网络编程如何学习C语言编程?编程似写作 先学“字词句”和“语法”,目标是“写作”。学习数据类型、控制结构、语法规则等学语基 掌握程序分析、算法与编程写文章仅仅读书是不够的 程序是编出来的,程序是调出来 在编程实践中消化知识。没有天生的程序员 初学者:有点难。没有学不会的,只有学不精的除非自己放弃。出于蓝胜于蓝:超过你的老
2、师完全可能。循次渐近很重要 阅读/分析程序摹仿编程掌握常见程序模块简单程序复杂编程仅是起点,而非终点 从此编程与你相伴而行真正的程序员从此起步。听课要求:切实掌握各章主要内容(预习/听课/消化/归纳)在预习基础上,听课为主,笔记为辅,课后弄懂课件和 教材中的程序(会分析,会流利写出)考核方式:作业(书面/上机)、期中考、期末考第一章 C语言概述目的要求:了解C语言的特点 掌握C程序的组成及书写要求 熟悉C程序的上机步骤 了解算法的概念及其常用表示形式重点难点:C程序的组成及书写要求 C程序的上机步骤1.1 C语言的特点 语言简洁,语法限制少,灵活性大 运算符、数据结构丰富 程序的可移植性好1.
3、2 简单的C程序介绍例1 main()printf(“this is a c program.n”);例2 main()int max(int x,int y)int a,b,c;int z;scanf(“%d,%d”,&a,&b);if(xy)z=x;c=max(a,b)else z=y;printf(“max=%d”,c);return(z);格式特点习惯用小写字母可使用空行和空格常用锯齿形书写格式main()int i,j,sum;sum=0;for(i=1;i10;i+)for(j=1;j10;j+)sum+=i*j;printf(“%dn”,sum);优秀程序员的素质之一:对齐有足够
4、的注释有合适的空行结论:C程序由函数构成,函数是C程序的基本单 位,一个C源程序至少包含一个main函数 也可以包含一个main函数和若干其他函数函数的组成 函数的首部。包括函数名、函数类型、函数参数名、函数参数类型 int max(int x,int y)函数体 声明部分 执行部分C程序的执行及主函数的位置C程序书写格式自由,一行内可写多条语句,一个语句也可以分写在多行上,语句和数据定义的最后必须加一个分号语言中没有专门的输入语句用可对程序的任何部分作注释1.3 上机步骤进入urbo C环境的步骤(设urbo C安装在c盘tc子目录下)进入DOS 在盘根目录下键入CD TC(回车)在TC目录
5、下再次键入TC(回车)运行程序的步骤 上机输入与编辑源程序 对源程序进行编译 与库函数连接 运行目标程序 进入Turbo C 2.0集成开发环境中后,屏幕上显示:File Edit Run Compile Project Options Debug Break/watch Edit Line 1 Col 1 Insert Indent Tab File Unindent c:NONAME.C Message F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu file.exe编辑链接编译执行程序代码的录入,生成源程序*.c语法
6、分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe第一步:选择主菜单的edit菜单第二步:选择主菜单中的compile菜单并在其下拉菜单中选compile to obj 第三步:选择compile菜单的下拉菜单中的compile/line exe file第四步:按F10(ctrl+f9)键,选RUN下拉菜单中的run命令程序:计算机能识别和执行的指令程序=数据结构+算法1.4 算法算法:为解决一个问题而采取的方法和步骤 例:求1+2+3+100算法1:顺序加算法2:简便方法算法的常用表示形式三种基本结构顺序结构AB选择结构APB成立不成立循环结构当型循环
7、结构 直到型循环结构PA成立不成立AP成立不成立例:打印5个“*”j=0j5YN高级语言程序设计第二章第二章 数据类型、运算符与表达式数据类型、运算符与表达式目的要求:了解基本数据类型及其常量的表示方法 掌握变量的定义及初始化方法 掌握运算符的运算规则与表达式的概念 领会C语言的自动类型转换、强制类型转换和赋值的概念。重点难点:整型数据的溢出 转义字符的含义及具体使用 +、-的运算规则 基本类型 整型 字符型 实型C的数据类型 构造类型 数组类型 结构体类型 共用体类型 指针类型 空类型基本类型基本类型 字符型字符型(char)1字节 整型整型短整型(short int)2字节 基本型(int
8、)2字节(-3276832767)长整型(long int)4字节(21亿)实型实型单精度(float)4字节 67位有效数字 长单精度(long float)8字节 1516位有效数字 双精度(double)8字节 1516位有效数字 长双精度(long double)10字节 20位有效数字 可知对不同数据类型占用的存储空间可知对不同数据类型占用的存储空间:charshort=intlong=floatdouble数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作 常量:在程序运行过程中,其值不会被 改变的量 类型:整型常量:15,0,-7 实型常量:1.2,-3.0
9、字符常量:a,b,c 注:符号常量2.1常量#define WIDTH 80#define LENGTH(WIDTH+40)main()int k,num;num=20;k=LENGTH*num;printf(%d,k);结果:2400使用符号常量的好处:见名知意 一改全改2.2 变量变量:其值可以改变的量 int a;a=30;a 变量名 变量值 存储单元30标识符:用来标识变量名、符号常量名、函数名、数组名、文件名的有 效字符序列 组成:只能由字母、数字、下划线组成,且第一个字符必须为字母或下划 线,不能为C语言中关键字_123,temp,p_9 合法B-a,1a0,goto 不合法说明:
10、大、小写被认为是不同的标识符 不同系统对标识符长度的规定不同 在变量使用时,一定要先定义,后使用2.3 整型数据整型常量 P41 十进制数 12 -12 0 八进制数 012 -012 十六进制数 0 x12 -0 x12整型变量 分类:基本类型:int 短整型:short int 或short 长整型:long int或long 符号数和无符号数的表示整型变量的定义 格式:变量类型 变量名,变量名;例:int a,b;short int c;unsigned long d,e;注意事项整型整数 int 的范围:3276832767Example:#include#include main()
11、int a;clrscr();printf(“Input:”);scanf(“%d”,&a);printf(“a=%dn”,a);运行结果:Input:12345 a=12345 Input:1234567 a=-10617 Why?!Because:12345的补码是 0011000000111001 1234567的补码是 100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为1010100101111001(-10617)参见教材P44“整型数据的溢出”。有趣的结果:输入(Input:)输出(a=)32767 32767 32768 -32768
12、32769 -32767 32770 -32766 -32768 -32768 -32769 32767 -32770 32766 可用下图表示:32767 32766 32765 -32766 -32767 -32768有趣的结果2.4 实型数据实型常量 P45 十进制形式 123.45 2.0 (必有小数点)指数形式 2.45e-4 1.13E3 (e或E前为数,后为整数)实型常量本身无单或双精度,其机内精度取决于赋给那类变量(影响有效数字位数,见P15示例)实型变量 分类:单精度型(float)双精度型(double)长双精度型(long double)Float x,y;Double
13、z;Long double t;实型数据的舍入误差 main()float a,b;a=123456.789e5;b=a+20;printf(“%f”,b);实型常量的类型2.5 字符型数据字符常量普通字符(可显示字符)A?(只能单字符单引号)错误:ABC “A”转义字符(以开头)如回车符、单引号、反斜杠等 在程序中这些符号用表3.3所示的“转义字符”表示。字符串(用双引号括起)“A”“?”(以0为字符串结束标志)注意:用char定义的字符变量只能接受字符常量,而不能接受字符串常量(C语言中无字符串变量)char a=U;char b=“U”;(b被置为某随机值)Example:main()c
14、har c1=a,c2;c2=98;printf(“%d,%dn”,c1,c2);结果:97,98Example:main()char c1=“a”,c2;c2=98;printf(“%d,%dn”,c1,c2);结果:-108,98若让若让c1c1分别等于分别等于“U”U”、“ABC”ABC”、“A”A”结果结果不变不变随机值转义字符例题分Example:main()char ch;ch=362;printf(“%c,%d”,ch,ch);运行结果运行结果运行结果运行结果:,14ch=3628=24210=111100102 111100102 化为原码为化为原码为 10001110=141
15、0转义字符例题分析Example:P49例3.5main()printf(“_ _ a b _ c t _ d e r f t g n”);printf(“h t I b b j _ _ _ k”);运行结果:_ _ a b _ c _ _ a b _ c _ _ _ d e f _ a b _ c _ _ _ d e f _ _ _ _ _ _ _ g d eh h _ _ _ _ _ _ _ lh _ _ _ _ _ _ _ h _ _ _ _ _ _h _ _ _ _ _ _ j _ _ _ k8列8列8列什么时候要使用转义字符?转义字符只在特殊情况下才使用:C程序中需要实现某些特定打印
16、或显示动作时 如 printf(“123t56n”);C程序中需要打印或显示以下三个字符时 (斜杠)(双引号)(单引号)如 printf(“Youre a”a bad egg!”);C程序中需要打印或显示ASCII表中非键盘字符时 如 printf(“Look 16 and x80!”);注意:使用转义字符时,后的八进制或十六进制数不应大于char类型所允许的范围(十进制值256)。字符变量 char a,b;说明:C允许字符数据和整数直接进行算术运算 例:B+32字符数据和整数之间可以进行赋值 例:int I;char c;I=a;c=97;字符串常量字符串常量:由一对双引号括起来的字 符序
17、列 例:“sum”,“a”,“program”字符串常量有关问题与“”的区别问题(判断正误):char c=“China”;char c=China;“China”占几个字节?141占几个字节?0等于十进制等于十进制数数97即字符即字符a2.6 变量赋初值变量名必须符合标识符命名规则变量必须先定义后使用 int a;a=3;定义变量时可以对变量初始化 int a=3;例:b=(a=3+5)a=b=c=d=3+5 (结果均为8)例:int a=b=c=d=3+5 (语法错误,除非b,c,d定义过)正确:int a,b=a=3+5;例:c=3+(a=5)*6 结果:c=33,a=5(一个语句可以有
18、几个赋值运算)2.7 数据间的转换(混合运算)数据的类型级别 P54图3.10 Double float Long Unsigned Int char,short高低基本规则q不同类型运算量参加运算,遵守“向高看齐”的类型一致化规则:将长度较短的运算量转换为长度较长的运算量,以保证不丢失信息。q注:向左为必定转化方向例:int i;float f;double d;long e;10+a+i*f-d/e 判断运算后的数值类型2.8 强制类型转换 P56 例一:(int)3.5 的值是多少?例二:main()int x=5;float y=3.5;printf(“%d”,(int)y+x);结果
19、是什么?8一般形式:(类型名)(表达式)转换后表达式的数据类型为新的类型,但表达式中变量本身类型不变。3程序执行后y的类型是什么?2.9 算术运算符和算术表达式C语言运算符 P551、算术运算算术运算符 +*/%例:14%(-4)=2 -14%(-4)=-2 20.4%2(出错)例:若int a=7;float x=2.5,y=4.7;则表达式 x+a%3x+a%3*(int)(x+y)%2/4(int)(x+y)%2/4 的值是什么?2.500000 (1/4为0)例:float x,y;x%y;(出错)自反算术赋值运算符(复合的赋值运算符)P62+=-=*=/=等 解法:将b*=看作b=b
20、*(),其余类推 例:c=b*=a+3 相当于(1)a+3 (2)b=b*(a+3)(3)c=b 例:若 i、j 的初值分别为3和4,则执行 j+=i-=1 后i、j 的值为多少?解题步骤:解题步骤:i=i-1=3-1=2 j=j+i=4+2=6结果:i=2,j=6关于优先级和结合方向:P56 C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行。如果在一个运算对象两侧的运算符的优先级别相同,则按规定的结合方向处理。(各种运算符的优先级和结合性见P375附录)【例】设i、j初值分别为3和4,则执行 j+=i-=1;后 i,j的值为多少?【例】若x=7;则x+=x
21、-=x+x的值是多少?(i=2,j=6)(-14)解法:从右到左,先做x=x-(x+x)=-7,再做x=x+x=-14自加、自减运算符 P57+(自加运算符)-(自减运算符)用法:+1 -1 运算 a、前缀形式 intint i=5;x=+i;y=i;i=5;x=+i;y=i;(x=6,i=6,y=6)intint i=5;+i;y=i;i=5;+i;y=i;(i=6,y=6)b、后缀形式 intint i=5;x=i+;y=i;i=5;x=i+;y=i;(x=5,i=6,y=6)intint i=5;i+;y=i;i=5;i+;y=i;(i=6,y=6)若对某变量自加/自减而不赋值,结果都是
22、使该变量自身1;若某变量自加/自减的同时还要参加其他运算,则前缀运算是先变化后运算,后缀运算是先运算后变化。注意注意:运算对象只能是变量运算对象只能是变量,5+或或(x+y)+均为错均为错例一:main()int a=100;printf(“%dn”,a);printf(“%dn”,+a);printf(“%dn”,a+);printf(“%dn”,a);运算结果:100 101 101 102例二:若 int x=3,y;求下列运算后y和x的值 y=x+-1;(2 4)y=+x-1;(3 4)y=x-+1;(4 2)分析思路:先对右边的表达式进行扫描,如果x+,先取x值完成表达式运算后再让x
23、自加1,如果+x,则先将x自加1后再代入表达式进行其他运算逗号运算P63-64C语言中逗号可作分隔符使用,将若干变量隔开 如 int a,b,c;又可作运算符使用,将若干独立的表达式隔开,并依次计算各表达式的值。其一般形式 表达式1,表达式2,表达式n;逗号表达式的求解过程:先求表达式1的值,再求表达式2的值,最后求表达式n的值。整个逗号表达式的值是最后一个表达式n的值。在C语言所有运算符中,逗号表达式的优先级最低。【例一】main()int x,a;x=(a=3*5,a*4,a+5);printf(“x=%d,a=%dn”,x,a);【例二】main()int x,a;x=(a=3*5,a*
24、4),a+5;printf(“x=%d,a=%dn”,x,a);运算结果:x=20,a=15 运算结果:x=60,a=15【例三】main()int a,b,x;x=(a=8,b=15,b+,a+b);printf(“a=%d,b=%d,x=%dn”,a,b,x);运算结果:a=8,b=16,x=24 第三章 顺序程序设计程序 数据描述:定义数据类型和数据初值 数据操作:对数据进行加工,由语句 实现目的要求:掌握算法的基本概念 掌握结构化程序设计的基本概念 了解C的语句组成及分类 掌握C语言常用的输入/输出方式。重点难点:各种格式字符的输出格式 地址的含义及取地址符号&的用法 算法的概念及几个
25、简单算法的表示3.1 C语句概述C语句:以“;”作分隔符,编译后产生机器指令.C语句分类v控制语句if()else switchfor()while()dowhile()continuebreakgotoreturn分支循环辅助控制v表达式语句:表达式加分号构成。v函数调用语句v空语句v复合语句:用 括起来的一组语句一般形式:数据说明部分;执行语句部分;说明:“”后不加分号语法上和单一语句相同复合语句可嵌套3.2 数据的输入输出标准输入输出库函数 putchar(输出字符)getchar(输入字符)printf(格式输出)scanf(格式输入)puts(输出字符串)gets(输入字符串)标准输
26、入输出库函数标准输入输出库函数 stdio.h#include 或#include“stdio.h”一、字符数据的输入输出1、字符输出函数 P71 格式:putchar(c)其中 c为字符型或整型的常量、变量及其表达式 功能:每次向屏幕输出一个字符供显示。【例】求以下程序运行结果#include main()char x=a;putchar(x);putchar(b);putchar(x+2);putchar(b+2);结果:abcd2字符输入函数 格式:getchar()功能:从键盘上读入一个字符,getchar()包含在stdio.h中,【例一】#include main()char a,
27、b;a=getchar();b=getchar();printf(“a=%c,b=%cn”,a,b);运行时,如果 输入:Student 输出结果为 a=S,b=t二、格式输入输出1.格式输出函数格式:printf(“格式控制串”,输出表列)功能:按指定格式向显示器输出数据输出表列:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符d,ix,Xoucse,EfG,g%格式字符格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短
28、一种百分号本身int a=567;printf(“%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+002567.789000567.789
29、%l说明u除x、e、g外,其它格式字符要用小写u格式字符与输出项个数应相同,按先后顺序一一对应 格式字符与输出项类型不一致,自动按指定格式输出.n对实数,指定小数点后位数(四舍五入)对字符串,表示截取字符个数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0 x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型lu附加格式说明符(修饰符)int x=1,y=3;printf(“x=%d y=
30、%d*sum*=%dn”,x,y,x+y);int x=7281;printf(“x=%3d,x=%6d”,x,x);long a=135790;printf(“%ld,%8ld”,a,a);int x=-1;printf(“%x,%o,%d,%12x”,x,x,x,x);main()printf(“n*s1=%15s*”,”chinabeijing”);printf(“n*s2=%-5s*”,”chi”);printf(“n*s3=%15.3s*”,”chinabeijing”);printf(“n*s4=%.4s*”,”chinabeijing”);printf(“n*s5=%-15.3s
31、*”,”chinabeijing”);main()float a=123.444;printf(“%fn”,a);printf(“%14.3fn”,a);printf(“%6.4fn”,a);printf(“%.4fn”,a);例题例题:例 int a=1234;float f=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“0+10.2fn”,f);例 int a=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);2.格式输入函数格式:scanf(“格式控制串”,地址表
32、)功能:按指定格式从键盘读入数据,存入地址表指 定的存储单元中,并按回车键结束v地址表:变量的地址,常用取地址运算符&v格式字符:d,i,o,x,u,c,s,f,el修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量v附加格式说明符(修饰符)输入分隔符的指定输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符 间字符,输入时应原样输入 例:“%d%d%d”格式控制 3_ _ 4 _ _
33、5 3 4 _ 5 3(tab)_ _ 4 5 scanf(“%d,%d”,&a,&b);scanf(“%d:%d”,&a,&b);scanf(“%d_ _%d”,&a,&b);scanf(“a=%d,b=%d”,&a,&b);可以指定输入数据的列数,系统自动按它截 取所需数据scanf(“%3d%3d”,&a,&b);scanf(“%3c”,&ch);scanf(“%2d_%*3d_%2d”,&a,&b);123456abc12_345_67scanf(“%7.2f”,&a);若%后有一个“*”,表示跳过指定列数输入时不能规定精度说明:用“%c”格式符时,空格和转义字符作为有效字符输入sca
34、nf(“%c%c%c”,&c1,&c2,&c3);scanf(“%d%c%f”,&a,&b,&c);输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入例 输入三角形边长,求面积#include#include main()float a,b,c,s,area;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,s=%7.2fn,a,b,c,s);printf(area=%7.2fn,area);文件包含预处理命令变
35、量定义输入数据输出数据输入:3,4,6 输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.333.3 顺序结构程序设计举例例例 从键盘输入大写字母,用小写字母输出从键盘输入大写字母,用小写字母输出#include stdio.hmain()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97#include#include main()float a,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,&a,&
36、b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);输入:a=1,b=3,c=2 输出:x1=-1.00 x2=-2.00第四章 选择结构程序设计学习目的:掌握关系运算符和逻辑运算符的运算规则及优先级关系 掌握条件语句的语句格式和执行顺序 学会进行选择结构程序设计重点难点:条件语句的嵌套 选择结构程序的分析方法和设计方法 4.1 关系运算符和关系表达式关系运算符 =(优先级相同)高 =!=(优先级相同)低 算术运算符 (高)关系运算符 赋值运算符
37、(低)例:ca+bcb=a a=bc关系表达式 概念:由关系运算符将两个表达式连接起 来的式子 如:d+ab+c (ab)(cd)关系表达式的值 真 以1代表 假 以0代表例:当a=3,b=2,c=1 求 f=abc的值 当a=5,b=4,c=2 求ab!=c的值4.2 逻辑运算符和逻辑表达式逻辑运算符&(逻辑与)|(逻辑或)!(逻辑非)逻辑运算符的运算规则优先级:!&|(高)(低)!(高)算术运算符关系运算符&和|赋值运算符 (低)例 (ab)&(xy)(a=b)&(xb)逻辑表达式逻辑运算结果 逻辑值:真(1)假(0)运算量的判断:假(0)真(非0)例:a=6,b=4,c=2,求表达式!(
38、a-b)+c-1&b+c/2的值 4.3 if 语句if 语句 的三种形式形式一 格式:if(expression)statement 执行过程:exprstatement非0=0例:if(xy)printf(“%d”,x);形式二 格式:if(expression)statement1 else statement2执行过程:执行过程:exprstatement1statement2非0=0例:if(xy)max=x;else max=y;形式三:格式:执行过程:if(expr1)statement1else if(expr2)statement2else if(expr3)statemen
39、t3.else if(exprm)statementm else statementnexpr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0例:if(salary1000)index=0.4;else if(salary800)index=0.3;else if(salary600)index=0.2;else if(salary400)index=0.1;else index=0;说明:uif后面的表达式类型任意u语句可以是复合语句u if(x)if(x!=0)if(!x)if(x=0)如:if(a=b&x=y)prin
40、tf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);Compile Error!例:求一个数的绝对值#include main()int x,y;printf(Enter an integer:);scanf(%d,&x);y=x;if(yabsolute value:%dn,x,y);运行:Enter an integer:-12 in
41、teger:-12-absolute value:12 比较两个数,求其中的大者 main()int a,b;printf(Enter integer a:);scanf(%d,&a);printf(Enter integer b:);scanf(%d,&b);if(ab)printf(“the max number is:%d”,a);else printf(“the max number is:%d”,b);求y=x(x+2)2x=10 2x -1x=2 x-1 x2&x-1&x=2)y=2*x;else if(xb)c=1;else if(a=b)c=0;else c=-1;printf
42、(“%d”,c);对函数y=-1 (x0)编程序,输入x的值,输出y的值程序1:程序2:main()int x,y;scanf(“%d”,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;printf(“x=%d,y=%dn”,x,y);程序3:程序4:main()int x,y;scanf(“%d”,&x);y=-1;if(x!=0)if(x0)y=1;else y=0;printf(“x=%d,y=%dn”,x,y);main()int x,y;scanf(“%d”,&x);y=0;if(x=0)if(x0)y=1;else y=-1;printf(“x=%d
43、,y=%dn”,x,y);读程序写结果main()int a=1,b=3,c=5,d=4;if(ab)if(cd)x=1;else if(ac)if(b60n”);break;.例 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:printf(“Fail!”);default :printf(“data error!”);运行结果:score为5时,输出:Very good!Good!Pass!Fail!data error!例 main()int x=1
44、,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“na=%d,b=%d”,a,b);运行结果:a=2,b=1例 根据输入字母输出字符串#include main()int c;printf(Enter m or n or h or other:);c=getchar();switch(c)case m:printf(nGood morning!n);break;case n:printf(nGood night!n);brea
45、k;case h:printf(nHello!n);break;default:printf(n?n);break;4.6 条件运算符一般格式 表达式1?表达式2:表达式3 说明:执行顺序 优先级 结合方向 表达式的类型例:设int x=1,y=0;x-(y+x)?10:12.5y+?A:Z例:int x=0,y=1;x+*x-!=y?8-4:y 4.7 程序举例:例1 写一个程序,判断某一年是否闰年Year被4整除Year被100整除Year被400整除YLeap=1NLeap=0YNLeap=1YNleap=0YN输出闰年输出非闰年leapmain()int year,leap;scanf
46、(“%d”,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;else leap=0;else leap=1;else leap=0;if(leap)printf(“%d is”,year);else printf(“%d is not“,year);printf(“a leap year.n”);程序:程序:例2:求ax2+bx+c=0方程式的根main()float a,b,c,disc,x1,x2,real,imag;else scanf(“%f,%f,%f”,&a,&b,&c);real=-b/(2*a);printf(“the
47、 equation”);imag=sqrt(-disc)/(2*a);if(fabs(a)=1e-6)printf(“has complex root:n);printf(“is not a quadraticn”);printf(%8.4f+%8.4fin,real,imag);else printf(%8.4f-%8.4fin”,real,imag);disc=b*b-4*a*c;if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(“has distinct real roots:%8.4f and%8.4fn”,x1,x2);运输公司对用户计算运费。标准如下:s250km 没有折扣250=s500 2%的折扣500=s1000 5%的折扣1000=s2000 8%的折扣2000=s3000 10%的折扣3000=3000)c=12;else c=s/250;f=p*w*s*(1-d/100.0);switch(c)printf(“freight=%15.4f”,f);case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9: