您好,欢迎访问三七文档
计算机科学与技术系-基础教研室1第3章控制结构3.1C语言的基本语句3.2数据的输入与输出3.3基本控制结构与流程控制语句3.4选择结构控制3.5多分支选择控制switch语句3.6循环控制3.7辅助控制语句3.8程序设计举例计算机科学与技术系-基础教研室2计算机科学与技术系-基础教研室33.1.1说明语句3.1.2表达式语句3.1.3函数调用语句3.1.4空语句3.1.5复合语句#includestdio.hvoidmain(){intx,a,b;floatz,y;floatadd(floatm,floatn);x=10;y=a+b;;add(z,y);scanf(“%”,&x);printf(“%”,x);{intx,a=3,b=5;x=a;a=b;b=x;}}3.1C语言的基本语句计算机科学与技术系-基础教研室43.2数据的输入与输出3.2.1字符数据的输入与输出函数1.字符数据的输出函数putchar()函数原形:putchar();函数功能:在显示器上输出单个字符,并返回输出字符的ASCII编码值。函数的参数可以是字符常量、字符型变量或整形变量,即将一个整型数作为ASCII编码输出相应的字符。计算机科学与技术系-基础教研室5【例3.1】输出单个字符。/*源程序名:CH0301.C*//*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/inti=97;/*05*/charch='a';/*06*/putchar(i);/*07*/putchar('\n');/*08*/putchar(ch);/*09*/}计算机科学与技术系-基础教研室62.字符数据的输入函数getchar()函数原形:getchar();函数功能:从键盘上输入一个字符,函数的返回值是该字符的ASCII编码值。通常把输入的字符赋予一个字符变量,构成赋值语句。例如:charc;c=getchar();计算机科学与技术系-基础教研室7【例3.2】输入单个字符。/*源程序名:CH0302.C*//*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/intch;/*04*/ch=getchar();/*输入一个字符给变量ch*//*05*/putchar(ch);/*06*/}计算机科学与技术系-基础教研室83.2.2格式输出函数1.格式输出函数printf()函数原形:printf(格式控制字符串,输出项列表)函数功能:按用户指定的格式,把指定的数据显示到显示器屏幕上。2.格式控制字符串格式字符串的一般形式为:%[flags][width][.prec][F|N|H|L][type]即:%[标志][输出最小宽度][.精度][长度]类型其中方括号[]中的项为可选项。计算机科学与技术系-基础教研室93.输出项列表输出项列表中的数据项为表达式。输出项列表中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应,且输出项的数据类型要与格式字符相容,否则会导致执行出错。计算机科学与技术系-基础教研室10【例3.3】printf函数的使用。/*源程序名:CH0303.C*//*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/inta=15;/*05*/floatb=123.1234567;/*06*/doublec=12345678.1234567;/*07*/chard='p';/*08*/printf(a=%d,%5d\n,a,a);/*09*/printf(a=%o,%x\n,a,a);/*10*/printf(b=%f,%lf\n,b,b);/*11*/printf(b=%5.4lf,%e\n,b,b);/*12*/printf(c=%lf,%f\n,c,c);/*13*/printf(c=%8.4lf\n,c);/*14*/printf(d=%c\n,d);/*15*/printf(d=%8c\n,d);/*16*/}计算机科学与技术系-基础教研室113.2.3格式输入函数1.格式输入函数scanf()函数功能:按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。scanf函数的一般形式为:scanf(“格式控制字符串”,地址表列);2.格式控制字符串输入函数格式字符串的一般形式为:%[*][输入数据宽度][长度]类型%[*][width][F|N][h|l]type计算机科学与技术系-基础教研室123.地址列表地址列表是由若干个地址组成的列表,可以是变量的地址、字符串的首地址、指针变量等。各地址间以逗号间隔。变量的地址和变量值的关系如下:如:a=567;则a为变量名,567是变量的值,&a是变量a的地址。而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。计算机科学与技术系-基础教研室13【例3.4】scanf函数的使用。/*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/intx,y;/*05*/printf(Enterintegerx,y:);/*06*/scanf(%d%d\n,&x,&y);/*07*/printf(x+y=%d\n,x+y);/*08*/printf(x-y=%d\n,x-y);/*09*/printf(theend.);/*10*/}计算机科学与技术系-基础教研室143.3基本控制结构与流程控制语句3.3.1三种基本结构计算机科学与技术系-基础教研室153.3.2流程控制语句表3.1流程控制语句的分类分类名称控制语句可搭配的辅助控制语句选择条件分支if…elseBreak,return开关分支switch…casebreak,return循环当型循环whilebreak,continue,return直到循环do…whilebreak,continue,returnfor循环forbreak,continue,returngoto循环if…gotobreak,continue,return辅助控制语句中止switch语句,或循环结构break中止本次循环,继续下次循环continue返回调用者return计算机科学与技术系-基础教研室163.4.1if语句的形式1.单分支选择if语句计算机科学与技术系-基础教研室17【例3.5】求两个数中的最大值。/*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/inta,b,max;/*05*/printf(\ninputtwonumbers:);/*06*/scanf(%d%d,&a,&b);/*07*/max=a;/*08*/if(maxb)/*09*/max=b;/*10*/printf(max=%d,max);/*11*/}计算机科学与技术系-基础教研室182.双分支if语句双分支if语句的形式为:if(表达式)语句1;else语句2;计算机科学与技术系-基础教研室19【例3.6】求两个数中的最大值/*源程序名:CH0306.C*//*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/inta,b;/*05*/printf(\ninputtwonumbers:);/*06*/scanf(%d%d,&a,&b);/*07*/if(ab)/*08*/printf(max=%d\n,a);/*09*/else/*10*/printf(max=%d\n,b);/*11*/}计算机科学与技术系-基础教研室203.多分支选择结构多分支选择结构的一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…elseif(表达式m)语句m;else语句n;计算机科学与技术系-基础教研室21计算机科学与技术系-基础教研室22【例3.7】判断成绩的等级。3.4.2if语句的嵌套其一般形式可表示如下:if(表达式)if语句;或者为:if(表达式)if语句;elseif语句;计算机科学与技术系-基础教研室23【例3.8】比较两个数的大小关系。/*源程序名:CH0308.C*//*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/inta,b;/*05*/printf(pleaseinputA,B:);/*06*/scanf(%d%d,&a,&b);/*07*/if(a!=b)/*08*/if(ab)/*09*/printf(AB\n);/*10*/else/*11*/printf(AB\n);/*12*/else/*13*/printf(A=B\n);/*14*/}计算机科学与技术系-基础教研室24这种问题用if…elseif语句也可以完成voidmain(){inta,b;printf(pleaseinputA,B:);scanf(%d%d,&a,&b);if(a==b)printf(A=B\n);elseif(ab)printf(AB\n);elseprintf(AB\n);}计算机科学与技术系-基础教研室253.5多分支选择控制switch语句switch语句是另一种分支控制语句,其一般形式为:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;…case常量表达式n:语句n;default:语句n+1;}计算机科学与技术系-基础教研室26【例3.9】判断成绩的等级/*01*/#includestdio.h/*02*/voidmain()/*03*/{/*04*/intx;/*05*/chary;/*06*/printf(\nx:);/*07*/scanf(%d,&x);/*08*/switch(x/10)/*09*/{/*10*/case0:/*11*/case1:/*12*/case2:/*13*/case3:/*14*/case4:/*15*/case5:/*16*/case6:y='E';break;/*17*/case7:y='D';break;/*18*/case8:y='C';break;/*19*/case9:y='B';break;/*20*/case10:y='A';break;/*21*/default:y='';/*22*/}/*23*/if(y=='')/*24*/printf(Scoreerror!);/*25*/elseprintf(Grade=%c,y);/*27*/}计算机科学与技术系-基础教研室27在使用switch语句时还应注意以下几点:(1)在case后的各常量表达式的值不能相同。(2)在case后,允许有多个语句,可以不用{}括起来。(3)各case和default子句的先后顺序可以变动。(4)default子句可以省略。(5)多个case可以共用一组执行语句。(6)在执行了满足条件的case语句后,就要使流程跳出switch结构,而不执行其后的case语句。因此,必须在case语句后加上break语句。注意,因为default语句一般是switch结构的最后一个分支语句,所以其后面可以不加break语句。计算机科学与技术系-基础教研室283.6.1while语句while语句的一般形式为:while(表达式)循环体语句计算机科学与技术系-基础教研室29【例3.10】用while语句求/*01*/#inc
本文标题:第3章控制结构.
链接地址:https://www.777doc.com/doc-2155768 .html