C和C++的区别,c++主要是面向对象的,C主要是面向过程的。32AC++程序设计进阶教程——从C到 Visual c+运行结果如下1234本例输入中的(回车)对应 scanf("%d%d\n",8.a,8.b)语句的“\n。scanf("%d%d\n",8.a,8.b)语句中在“%d%d”之间没有非格式字符,因此在输入时要用一个以上的空格或回车键作为两个输入数之间的间隔scanf("%d,%d",8.c,8.d)语句中有非格式字符“,”在“%d,%d”之间作输入时的间隔,因此在输入时要用“’”作两个输入数之间的间隔。3.1.2格式化输出函数 printf(格式printf("控制字符串",输出项列表);功能:按控制字符串规定的格式,向标准输出设备(显示器)输出其后输出项列表的值。输出项列表:列岀要输岀的表达式(如常量、变量、运算符表达式、函数返回值等),且输出项的数据类型和个数要与格式字符相对应。控制字符串:由格式字符和普通字符两部分组成(1)格式字符般格式为:号[<修饰符>]<格式字符>格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。常用的格式字符如表3.2所示。表3.2常用格式字符格式字符意义d(或i)输出带符号的十进制整数按八进制整数输出(无符号)x(或X)按十六进制整数输出(无符号)按十进制整数输出(无符号)输出一个字符型输出一个字符串以小数形式输岀单、双精度数e(或E)以指数形式输岀单、双精度数g(或G)按e和f格式中较短的一种输出(2)修饰符常用的修饰符如表3.3所示第3章C程序的构成33(3)普通字符普通字符在输出时,按原样显示在屏幕上。主要用于输出提示信息等表3.3常用修饰符修饰符例说明意义以宽度m输岀十进制整型数,不足m位时,左补空格,超过m位时,以实际宽度输出bmd以宽度m输出整型数,不足m时,左补零%对实数以宽度m输出实型小数,小数位为n位对字符串以宽度m输出字符串,n表示截取的字符个数-10.4f左对齐,其默认方式是右对齐hhdshort(短)型格式输出数据long(长)型格式输出数据例3.2格式输出函数的使用。t include stdio. hmainint a=1float b=123.456;A';printf("十进制十进制5位宽度八进制十六进制\n");printf("a=%d,号5d,%o,号xn",a,a,a,aprintf("小数形式小数7位宽度2位精度\n");printf("b=3「,号7.2n",b,b)printf("字符形式字符8位宽度 ASCTT码\n")printf("d=号c,是8C;号d\n",C,C,C);运行结果如下十进制十进制5位宽度八进制十六进制普通字符原样显示在屏幕上a=18,18,22,12//5位宽度,前面三个空格小数形式小数7位宽度2位精度//普通字符原样显示在屏幕上b=123.456000,123.46//2位精度,后面小数去掉字符形式字符8位宽度 ASCII码//普通字符原样显示在屏幕上//字符'A'的ASCI码是65本例程序中,六条 printi(语句对应六行屏幕输出例如, printf("a=%d,%5d,%o,%xn",a,a,a,a)语句对应的屏幕输出是:a=18,18,22,12其中,屏幕输出中的a=是将 printf语句中a=这个普通字符原样显示在屏幕的结果3.1.3应用举例例3.3轴输人输出格式的使用。tt include"stdio. h344C++程序设计进阶教程——从C到 Visual c+nt d: float fscanf("号c+号d",Sc,&d)scanf("为d号d,号f",&a,b,&f)printf(printf("号0,号u,号xn",b,b,b);f("为5d,号5.2fprintf号2d,%2.1f\n",a,f)5c,号d\n",c,c);printf("%d, %c\n,d, d)printf("号s,号125,号8S,号12.8s\n"," LANGUAGE"," LANGUAGE"," C LANGUAGE"," C LANGUAGE")运行结果如下:W+119123-1,12.34567837777777777,4294967295, ffffffff123,12.35123,12.3119,WC LANGUAGE C LANGUAGE, C LANGUAGE C LANGUPress any key to continue本例程序中, scanf("%c+%d",8.c,8.d)语句的格式中含有非格式字符“+”,所以在键盘上输入“w+119”。 scanf("%d%d,%f",8.a,8.b,8.f)语句的格式中含有非格式字符“,”,所以在键盘上输入“123-1,12.345678”,123和-1之间用空格。输出中的fff是因为-1在内存中以补码的形式存在。而(111应一个十六进制数f。printf("%5d,%5.2八\n",a,f)语句对应的输出是“123,12.35”,%5d对应5位宽度,所以123前有2个空格。%5.2f对应5位宽度2位小数,所以12.35后面的部分四舍五入了。printf("%2d,%2.1f、n",a,f)语句对应的输出是“123,12.3”,因为当指定宽度小于数据的实际宽度时,对整数和字符串按该数的实际宽度输出。printf("%-5c,%dn",c,c)语句对应的输出是“w,119”,因为前边加“-”号,表示“左对齐”方式,不加表示“右对齐”12.8s格式对应的输出是“ C LANGU”,表示字符串以12位宽度输出,截取的字符个数是8个3.2语句C语句按功能分为执行操作的语句和控制流程的语句。3.2.1执行语句(1)表达式语句表达式语句由表达式加上分号“;”组成。其一般形式为第3章C程序的构成、35表达式;例如‖Y;W=4+6兴K;intx=5,Y=6,Z=7(2)函数调用语句函数调用语句由函数名、实际参数加上分号“;”组成。其一般形式为函数名(实际参数表)例如,“ printf("%d",X);”调用库函数,输出变量X的值(3)复合语句把多个语句用花括号{}括起来组成的一个“大”语句称为复合语句。在程序中把复合语句看成是一个整体例如y t za=b+cx&&a;是一条复合语句,它被看成是一个整体,而不是一条条的单语句。(4)空语句空语句是什么也不执行的语句,只由分号“;”组成。例如:3.2.2条件控制语句(1)if语句使用ⅱ语句来判定所给的条件是否满足,根据判定的结果决定执行某一语句序列。其语法形式如下:if(表达式)语句语句n;其语义是:如果表达式的值为真,则执行其后的语句1到语句n,假(0表达式否则不执行。如只有一条执行语句,可以省略花括号{}。其执行真(非0)过程可表示为图3.2所示。语句例3.4f语句的使用。井 include" stdio.h"main()图3.2i语句流程图36C++程序设计进阶教程——从C到 Visual c+printf("输入一个数,求其绝对值\n");if (a<0)a=-aprintf( "a=%d", a)运行结果如下输入一个数,求其绝对值8a=8(2)if-else语句使用if-else语句来判定所给的条件是否满足,根据判定的结果决定执行不同的语句序列。其语法形式如下:if(表达式)语句1语句2;其语义是:如果表达式的值为真,则执行语句1部分,否则执行语句2部分。如只有一条执行语句,可以省略花括号{}。其执行过程可表示为图3.3所示例3.5 if-else语句的使用,计算分段函数。2米X<0真Y=〈2+xX=0表达式一假x-2语句1语句2井 inc lude" stdio.h"int x,yi图3.3 if-else语句流程图if (x<0)y=2*xelse if(x=0)y=2+xiy= xprintf("\ny=号d",y)运行结果如下第8章C程序的构成37本例程序中,使用了两个 if-else语句,第二个 if-else语句嵌套在第一个if-else语句后面。当输入ⅹ=8时,第一个if-else语句判断为假,程序执行第一个else后面的语句,交给第二个if-clse语句来判断执行。(3) switch语句switch语句又称为开关语句,是一种多分攴语句。 switch语句将根据表达式的值决定执行不同的语句序列。其语法形式如下:switch(表达式)case常量表达式1:语句1;creakcasc常量表达式2:语句2;breakcase常量表达式n:语句n;breakdefault:语句n+1;其语义是:计算表达式的值,并逐个与其后的各个常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,直到遇到 break语句为止。如没有遇到break语句,则继续执行后面case后的语句。若表达式的值与所有case后的常量表达式的值均不相同,则执行 default后的语句。但 default部分不是必需的,可以没有case语句中的 break语句不是必需的, break语句只有关键字 break,没有参数。它是C语言提供用于跳岀 switch的语句。因此,通常在每一个case语句之后增加 break语句使每一次执行之后均可跳出 switch语句,从而避免输出不应有的结果。例3.6 switch语句的使用。井 include< stdio.h>t int scorescanf("号d",& score);switch(score)case 10case 9: printf("%d: A\n", score)i break;8case 7: printf("%d: B\n", score)i breakcase 6: printf("%d: C\n", score); break;default: printf("号d:D、n", score);运行结果如下8070:B38C++程序设计进阶教程——从C到 Visual c+在本例程序中,当输入80时,程序执行了case8:和“case7: printf("%d:B\nscore); break:”两条语句。当输入70时,程序执行了“case7: printf("%d:B\n", score);break;”这一条语句3.2.3循环控制语句循环是指在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。(1) while语句while语句的一般形式为:hile(表达式)语句;其语义是:计算表达式的值,当值为真(非0)时,执行循环体语句,否则,跳出循环,执行while语句的后续语句。其执行过程如图3.4所示。例3.7 while语句的使用。井 include< stdio.h>main()t int n-0while(nl= 10printf("号d",n++);运行结果如下0123456789在本例程序中, while循环执行了十次,直到n的值为10,使n!=10为假,从而结束循环。 while循环只有当条件为真时才执行,所以被称为当型循环。(2)do- while语句do-while语句的一般形式为:do语句hile(表达式)其语义是:先执行循环体语句一次,再判别表达式的值,若为真(非O)则继续循环,否则终止循环。 do while循环的执行过程可表示为图3.5所示表达式循环体语句非语句表达式>图3.4 while语句流程图图3.5do-whle语句流程图第3章C程序的构成39例3.8do- while语句的使用,对1+2+…+100求和。main()I int sum=0, i=1sum sum t lwhi1e(i<=100)printf(sum=%d, sum运行结果如下5050在本例程序中,循环执行了100次,直到i<=100为假。 do-while循环是先直接到达循环体执行,然后判断条件是否为真,所以被称为直到型循环(3)for语句for语句的一般形式为for(表达式1;表达式2;表达式3)语句;其语义是:①首先计算表达式1的值。②再计算表达式2的值,若值为真(非0),则执行循环体一次,否则跳出循环。③然后再计算表达式3的值,转回第②步重复执行。for循环的执行过程可表示为图3.6所示。例3.9for语句的使用,对1+2+…+100求和。求解表达式1t include stdio. h>main(表达式2假for(n=1;n<=10c;n++)语sum= sum t niprintf(sum=%d\n sum)求解表达式3运行结果如下sum=5050for语句的下一语句在本例程序中,for循环执行了100次,直到n<=100为假。for循环通常用表达式3来给循环计数,所以被称为计数型循环。图3.6for语句流程图