



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 9PAGE 86C语言程序设计课程自学辅导资料二八年四月C语言程序设计课程自学进度表教材:新编C语言程序设计教程教材编者:林碧英 出版社:电力出版社 出版时间:2005年周次学习内容习题作业测验作业学时自学重点、难点、基本要求1C程序的结构;数据类型的定义;常量与变量;算术运算表达式;14C程序的结构;掌握算术运算表达式;各种不同进制的表示形式;各种运算符特别是组合运算符;输入、输出函数的正确调用;关系运算与逻辑运算;关系表达式与逻辑表达式。循环语句及循环方式;典型算法的程序实现;用字符数组处理字符串;数组名与地址的关系;用字符数组表示字符串。指针的概念;指针与地址运算符的关系;指针
2、的各种运算;形参与实参之间的传递方式;子程序设计方法;结构体的定义和引用;指向结构的指针;文件类型指针;C文件的概念;理解有关文件的操作。 2C的数据类型;数值型数据混和运算时的优先级与结合性;第二章习题103输入、输出函数的调用;顺序程序设计的方法;第三章习题64关系运算与逻辑运算;关系表达式与逻辑表达式; ifelse语句的三种表达形式;Switch语句的结构。第四章习题105while 循环语句; dowhile循环语句; for循环语句;第五章习题126break语句和continue语句;前四章复习67数组的定义方式;一维数组的程序实现;88二维数组处理方式及数组名与地址的关系;用字
3、符数组处理字符串。第六章习题89指针的概念;指针与地址运算符的关系;指针的各种运算;810用指针处理数组的方法;字符指针与字符串。第七章习题811函数的定义与调用方式;形参与实参间的传递方式;1012指针型函数;递归函数;局部变量与全局变量;第八章习题813结构体的定义和引用;指向结构的指针;814结构在函数之间传递;共用体介绍。第九章习题615C文件的概念及;文件的打开与关闭;文件的读写;文件的定位。第十章习题616 总复习12注:期中(第10周左右)将前半部分测验作业寄给班主任,期末面授时将后半部分测验作业直接交给任课教师。总成绩中,作业占15分。 C语言程序设计课程自学指导书第一章 C语
4、言的结构一、 本章的核心、重点及前后联系 (一) 本章的核心1. 掌握C程序的结构一个标准的C程序一般由以下几部分组成:1)基本字符集 字母:大/小写字母各26个 数字:09共10个 特殊字符:控制字符,分隔符,运算符等2)标识符:只能由字母、数字和下划线组成 3)关键字:也称保留字,包括 类型说明符:用于定义变量、函数或其他数据结构的类型,如int。 语句定义符:用于表示一个语句的功能,如if和else。 预处理命令:如include, define。4)语句 选择语句if、else 循环语句for,while,do-while 转移语句break,continue,return,goto
5、表达式语句/ 复合语句/ 函数调用语句/ 空语句5)库函数 由C编译系统提供的可以直接使用的函数,如scanf()和printf()函数。C程序构成形式一般为:预处理命令返回值类型 main(参数说明) /*主函数说明*/ 变量定义 /*主函数体*/ 执行语句组返回值类型 子函数名1(参数说明) /*子函数说明*/ 变量定义 /*子函数体*/ 执行语句组返回值类型 子函数名N(参数说明) /*子函数说明*/ 变量定义 /*子函数体*/ 执行语句组各部分有如下要求:函数是C程序的主要组成部分,一个C程序必须有且仅有一个主函数,名称为main。无论main 函数出现在代码的任何位置,C程序总是从m
6、ain函数开始执行。main函数中可以调用C语言提供的库函数或用户自定义的其他函数。各函数是并列关系。C语言中的函数由函数头和函数体组成,函数头包括函数类型、函数名、函数参数和参数类型说明等部分。函数体:函数头下面的由一对花括号括起来的部分。通常包括数据说明部分和语句部分。数据说明部分:定义函数内部将要使用的变量。 语句部分:规定函数要执行的动作。根据需要可以在程序中增加注释,注释由“/*”开头,以“*/”结尾。可以分多行书写,也可以在程序中任意位置出现。注释只是为了增强程序的可读性,并不执行。语句以分号结尾。2. 了解C语言特点C语言即具有高级语言的优点,又具有低级语言的特点,非常适合编写系
7、统软件。与其他计算机语言相比,C语言具有如下特点:1)语言简洁、紧凑,使用方便:32个关键字,9种控制语句;2)运算符丰富:34个运算符;3)数据结构类型丰富;4)结构化的程序设计语言。具有结构化的控制语句;用函数作为程序模块,实现了模块化;5)语法限制不太严格,程序设计自由度大;6)允许直接访问物理地址,能进行位操作,可以直接操作硬件;7)生成目标代码质量高,程序执行效率高。一般只比汇编程序生成的目标代码效率低1020%;8)程序可移植性好。3. 掌握C语言上机步骤一个C程序从设计到执行需要经过编辑、编译、链接和运行4个步骤,具体过程如图1。本课程选用微机上广泛使用的C语言集成开发环境Tur
8、bo C 2.0,熟悉并使用Turbo C 2.0包括以下几个步骤:Turbo C 2.0的安装。进入Turbo C 2.0集成开发环境的方法。认识Turbo C 2.0集成开发环境的主屏幕和菜单。学会Turbo C 2.0集成开发环境的配置。编辑源文件。编译和连接。运行并调试程序。YNNNYY连接开始编辑运行编译正确?正确?结果正确?开始源程序filename.c目标程序filename.obj库函数&其他目标程序可执行目标程序filename.exe本章重点掌握C语言上机步骤 (三) 本章前后联系本章是C语言程序设计的概述,主要介绍C语言的发展、特点、组成部分、构成形式和上机步骤,让学生对
9、C语言程序有一个概念上的认识,为以后各章节内容打基础。二、 本章的基本概念、难点及学习方法指导 (一) 本章的基本概念本章的基本概念主要包括:计算机语言、算法、C程序的结构、标识符、关键字、库函数等。(二) 本章难点及学习方法指导本章的难点主要是C语言上机步骤。对于没有接触过计算机语言编程的学生,一时无法理解程序从设计到执行的步骤,只能通过在Turbo C 2.0集成开发环境中执行一些简单而具体的C语言程序让他们慢慢对编程有一个整体上的认识。三、典型例题分析1.在Turbo C 2.0集成开发环境中建立并编辑如下代码,/* This is my first C program */ main(
10、) printf( Hello Word! n ); 将其保存为first.c文件,然后通过编译、连接和执行,让学生观察程序结果。可以对整个程序进行简单的分析,指出每行代码的作用,使学生初步了解编程的概念。四、思考题、习题及习题解答(一) 思考题、习题按照计算机语言的发展历史,计算机语言大致可分为三类:机器语言,汇编语言和 。程序设计一般包含四个步骤,其中首先应该完成的是 。在结构化程序设计中,三种基本控制结构分别是 , 和 。在基本控制结构中,先执行后判断的循环结构称为 。在程序设计中,把解决问题确定的方法和有限的步骤称为 。 算法的 特征是指:一个算法必须在执行有限个操作步骤后终止。在程序
11、流程图符号中,注释框中填写的内容是 。N-S图与传统流程图比较,最主要的优点是_。C语言的主要特点是什么?C语言程序结构的特点是什么?由哪些基本部分组成?C语言以函数为程序的基本单位,这有什么好处?何谓标识符?命名规则是什么?标识符有何限制?指出下列符号中哪些是语言标识符?哪些是关键字?哪些既非标识符亦非关键字? stru au_to _auto sizeof 3id file m_i_n -min call .menu hello A BC SIN90 n*m x.y x1234 until cos2x 1234 1234hello s+3 s_3读入一个整数n,判断它能否同时被3和7整除,
12、如果能就输出”YES”,否则输出”NO”。读入3个数分别赋给变量a,b和c,求方程ax2+bx+c=0的根,分别考虑判别式b2-4ac大于等于0和小于0的情况。输入三个数a,b,c,要求经过一定的处理后,使得a的值是三个数中最小的,c的值是三个数中最大的,然后输出a,b,c的值。输入正整数N,求N!的值。求某门课程全班同学的平均成绩。编写任意两数交换的C程序,要求分别输出交换前的两数及交换后的两数。上机运行该程序。(二) 习题解答(只解答难题)无。第二章 数据类型及其运算一、 本章的核心、重点及前后联系 (一) 本章的核心1掌握C语言中几种基本数据类型在C语言中,用数据类型来描述程序中的数据结
13、构、数据表示范围和数据在内存中的存储等。C语言的数据类型可分为:基本数据类型、构造数据类型、指针类型和空类型。基本数据类型又可细分为:整型、实型、字符型和枚举型,而构造类型可细分为:数组类型、结构体类型和共用体类型。整型、实型和字符型数据的声明、引用和内存存储是最为核心的内容2. 理解常量与变量常量是在程序运行过程中,其值保持不变的量,其类型根据字面形式可将常量区分为不同的类型:整型常量、实型常量和字符型常量。变量是在程序执行过程中,其值可以被改变的量。3. 掌握算术运算表达式运算符是完成特定运算功能的符号,而表达式是由运算符和运算对象组成的字符序列。重点掌握算术运算符的结合性和优先级以及算术
14、表达式的使用。4. 掌握各种不同进制的表示形式C语言程序设计中主要涉及二进制、八进制、十进制、十六进制的表示及相互转换,要理解转换的规则和方法。5. 掌握各种运算符特别是组合运算符掌握赋值运算符、关系运算符、逻辑运算符、自增自减运算符的结合性、优先级和操作对象数量等。(二) 本章重点1)掌握C语言中几种基本数据类型;2)理解常量与变量;3)掌握算术运算表达式(三) 本章前后联系本章是C语言程序设计的最为重要的部分,是后续各章节的基础。二、 本章的基本概念、难点及学习方法指导 (一) 本章的基本概念本章中的基本概念有:常量、变量、整型数据、实型数据、字符型数据、运算符、表达式。(二) 本章难点及
15、学习方法指导本章中的难点主要有以下几个:1)各种不同进制的表示形式。在自然语言中,各种数据绝大多数都是十进制,而在计算机语言中,二进制、八进制和十六进制数据广泛被使用。要想掌握各种进制的表示及其转换方法,需要清楚地理解每种进制的定义。2)各种运算符特别是组合运算符。组合运算符由于涉及的操作过程较为复杂,因此掌握起来有一定难度。在学习这些运算符时,需要严格遵循运算符的使用方法,遇到连续的多个运算符时,根据优先级确定执行顺序。3)理解数值型数据混合运算时的优先级与结合性多种数据类型混合运算时,需要按照预定的方向进行数据类型转换。在转换过程中,要掌握转换的方向与内存存储形式的关系,转换的目标是防止数
16、据丢失。三、典型例题分析1. #include #define PI 3.14159 /*宏定义*/main(void ) /*主函数*/float c, s, i;printf(输入圆的半径:);scanf(%f, &i);c=2.0*PI*i;s=PI*i*i;printf(圆的周长:%fn, c):printf(圆的面积:%fn, s);通过这个程序掌握常量和算术表达式的使用方法。2. #include main(void)int a,b;a=32767;b=a+1;printf(“a=%d,b=%d”,a,b); 通过这个程序掌握整型变量在内存中的存储形式。3. /*改正*/#incl
17、ude main(void)long a,b;a=32767;b=a+1;printf(“a=%ld, b=%ldn”,a,b); 通过这个程序掌握int和long型数据的区别。4. #include main(void)char c1,c2; c1=a; c2=A; printf(“c1=%c,c2=%cn”,c1,c2); printf(“c1=%d,c2=%dn”,c1,c2);通过这个程序掌握字符型变量的使用方法。5. #include main ( ) float x; int i; x = 3.6; I = (int) x; Printf (“x = %f, i =%d” ,x ,
18、i ) ; 通过这个程序掌握单精度实型和整型数据之间的转换过程。6. # include main (void) int x, a = 3;float y;x = 20+25/5*2; printf (“x = %dn”, x);x = 25/2*2; printf (“x = %dn”, x);x = -a+4*5-6; printf (“x = %dn”, x);x = a+4%5-6; printf (“x = %dn”, x);x = -3/4%-6/5; printf (“x = %dn”, x);x = (7+6)%5/2; printf (“x = %dn”, x);y = 25
19、.0/2.0*2.0; printf (“y = %fn”, y); 通过这个程序掌握整型数据之间的各种运算的结果,尤其是/和%的使用方法。7. # include main ()int a,b,c;a = 9;b = +a;printf (“(1)a = %d*b = %dn”, a, b);a = 9;b = a+;printf (“(2)a = %d*b = %dn”, a, b); 通过这个程序掌握自增和自减运算符的使用方法。8. void main (void)int year, leap;printf (“input your year:n”);scanf (“%d”, &year
20、);leap = year%4 = 0&year%100! = 0|year%400 = 0;if (leap)printf (“%d is a leap year.n”, year);elseprintf (“%d is not a leap year.n”, year);通过这个程序掌握关系运算符和逻辑运算符的使用方法。四、思考题、习题及习题解答(一) 思考题、习题1.写出以下程序的输出结果:main() int m = 12, n = 34; printf ( %d%d, m+, +n ); printf ( %d%dn, n+, +m ); 2. C语言可以使用哪些数据类型?3. C语
21、言规定对程序中所用的变量必须“先定义,后使用”,这样做有什么好处?4. 字符常量和字符串常量有什么区别?5. 请写出如下变量的类型定义。x,y,z为单精度实型。i,j,k为整型,j的初值为1。ch1为字符型。w为长整型。d1,d2为双精度型,初值都为0。6. 运算符的优先级和结合性的含义是什么?优先级相同的运算符的结合性也相同吗?(二) 习题解答(只解答难题)无第三章 顺序结构程序设计一、 本章的核心、重点及前后联系 (一) 本章的核心1输入、输出函数的调用C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的,包括格式化输出函数、格式化输入函数、字符输出函数和字符输入函数。2顺序程序设
22、计的方法在顺序程序中,需要注意以下几个部分:1)程序开头的编译预处理命令;2)顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:变量类型的说明,提供数据语句,运算部分,输出部分;3)顺序结构程序要有良好的书写风格。(二) 本章重点1输入、输出函数的调用2. 顺序程序设计的方法 (三) 本章前后联系本章中的顺序结构程序设计是三种程序结构中最简单的,是学好C语言程序的良好开端。输入、输出函数是C语言程序的最为常用也最为重要的部分,一个C语言程序必须包含输入或者输出语句,否则就失去意义。因此本章内容对后续各章节来说非常重要,是学好后续章节内容的基石。二、 本章的基本概念、难点及学习方
23、法指导(一) 本章的基本概念本章的基本概念包括:顺序程序设计、输入函数和输出函数。(二) 本章难点及学习方法指导本章的难点是输入、输出函数的正确使用,尤其是格式化输入、输出函数。在学习这部分内容时,首先应掌握各输入、输出函数的参数含义,明确每个参数的书写格式;其次要记住格式控制字符的使用方法及其含义;最后通过多个例子强化学习效果。三、典型例题分析1. # include main() char a, b, c; a = M; b = A; c = P; putchar (a); putchar (b); putchar(n); putchar (c); 通过这个例子掌握字符输出函数的使用方法。
24、2. # include main() char c; c = getchar (); putchar (c); putchar ( getchar ( ); printf (“%c”,getchar ( );通过这个例子掌握字符输入函数的使用方法。3. main() int a = 3, b = 4; unsigned int u = 65535; printf ( “%d %dn”, a, b ); printf ( “a = %d, b = %dn”, a, b ); printf ( ”u = %u, u=%dn, u, u );通过这个例子掌握格式化输出函数的使用方法和格式控制字符的
25、含义。4. main() int a = 1234; float f = 123.456; char ch = a; char s = “Hello, world!” printf ( “%8d, %2dn”, a, a); printf ( “%f,%8f, %8.1f, %.2fn”, f, f, f, f); printf ( “%e,%10e, %10.3e,%.3e,%-10.3en”, f, f, f, f, f); printf ( “%-3c, %3cn”, ch, ch); printf ( “%sn%15sn%10.5sn%2.5sn%.3sn”, s, s, s, s,
26、s);通过这个例子掌握格复杂的式化输出函数的使用方法和格式控制字符的含义。5. scanf ( “%d, %d”, &a, &b ) 输入 3, 4则3 a, 4 bscanf ( “a = %d, b = %d, c = %d”, &a, &b, &c );输入 a = 12, b = 24, c = 36 scanf ( “%c%c%c”, &c1, &c2, &c3 ); 若输入 abc 则a c1, 空格 c2, b c3通过这些程序片段掌握格式化输入函数的使用方法。6.输入三角形边长,求面积根据以上公式可以求出三角形的面积,因此程序如下:# include # include mai
27、n () 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) ;7. 从键盘输入大写字母,用小写字母输出大写字母和小写字母之间的ASCII码相差32,可以根据此规律编程为:# include main() char c1,c2;
28、 c1 = getchar () ; /*or scanf( “%c”, &c1 ) */ printf ( %c,%dn, c1, c1 ) ; c2 = c1+a-A; /*or c2 = c1+32*/ printf ( %c,%dn, c2, c2 ) ;8. 求 方程的根。a,b,c由键盘输入,设根据此原则,可以编程为:# include main() float a, b, c, disc, x1, x2, p, q ; scanf ( %f, %f, %f, &a, &b, &c ) ; disc = b*b-4*a*c ; p = -b/(2*a) ; q = sqrt(dis
29、c)/(2*a) ; x1 = p + q; x2 = p-q ; printf ( “n%dx2+%dx+%d = 0”, a, b, c ) ; printf ( “nx1 = %5.2f, x2 = %5.2fn, x1, x2 ) ;四、思考题、习题及习题解答(一) 思考题、习题1编写程序,输入9时23分并将其转换成分钟后输出。2设圆半径r = 1.5,圆柱高h = 3,求圆周长、圆面积、圆柱体积、输出计算结果(小数点后保留2位)。3编写程序,读入3各整数,给a,b,c,然后交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。4用getchar函数读入两个字符给c1、c2,然后
30、分别用putchar函数和printf函数输出这两个字符。5编写程序,分别转换摄氏温度-100C、150C、340C为华氏温度。6我国的硬币体系包括6种面值1,2,5,10,50,100,从键盘读入一种商品的价格,输出最少用多少枚硬币正好买下,各为多少?要求输出格式如下所示。当输入8.79输出应为:价格1元5角1角5分2分1分8.79812120硬币总数:14(二) 习题解答(只解答难题)2. # define PI 3.14main()float r, h ;printf (nPlease input the cylindricals radius : ) ;scanf ( %f, &r )
31、 ;printf ( Please input the cylindricals height : ) ;scanf ( %f, &h ) ;printf ( nThe perimeter of the cylindricals bottom is %.2fn, 2*PI*r ) ;printf ( The area of the cylindricals bottom is %.2fn, PI*r*r ) ;printf ( The volume of the cylindrical is %.2fn, PI*r*r*h ) ;3main()int a, b, c, t;printf ( n
32、Please input 3 numbers (a, b, c) : ) ;scanf ( %d, %d, %d, &a, &b, &c ) ;t = a ;a = b ;b = c ;c = t ;printf ( nThe 3 numbers after exchange are ( a, b, c ) : %d, %d, %dn, a, b, c ) ;6. main()float price ;int p ;printf ( nPlease input the price : ) ;scanf ( %f, &price ) ;p = ( int ) ( price*100 +0.5 )
33、 ;printf ( npricet1 yuant50 fent10 fent5 fent2 fent1 fenn ) ;printf ( %.2ft%4dt%4dt%4dt%4dt%4dt%4dn, price, p/100, p%100/50, p%50/10, p%10/5, p%5/2, p%5%2 ) ;第四章 选择结构一、 本章的核心、重点及前后联系 (一) 本章的核心1.if-else语句的三种表达形式在C语言中选择结构可以用if语句实现,if语句是用来判定所给定的条件是否满足,根据判定的结构决定程序的执行流程。If语句可以分为单分支if语句、双分支if语句、多分支if语句和各种
34、if语句的嵌套。2.Switch语句的结构。Switch语句直接处理多分支选择,其基本结构为:switch (表达式) case E1: 语句组 1; case E2:语句组 2; . case En:语句组 n; default:语句组 n+1; (二) 本章重点1.ifelse语句的三种表达形式2.Switch语句的结构。 (三) 本章前后联系本章内容是三种程序结构种的选择结构程序,属于基础部分,是后续章节的预备知识。二、 本章的基本概念、难点及学习方法指导(一) 本章的基本概念本章的基本概念包括选择结构、关系运算、逻辑运算、关系表达式和逻辑表达式。(二) 本章难点及学习方法指导本章的难点
35、有:1)switch语句的使用。Switch语句是目前接触的最复杂的语句,使用时需注意的问题较多。表达式允许为任何类型;Case语句后面为常量,如果一个case后面的语句中没有break语句,执行完后,流程控制转移到下一个case继续执行。2)if语句的嵌套使用。If语句嵌套使用时,要注意if和else的匹配关系,并且if语句括号后面没有分号。三、典型例题分析1. main()float x, y, z, temp ;printf ( Please input three numbers:n ) ;scanf (%f %f %f, &x, &y, &z ) ;if ( x y ) temp =
36、 x; x = y; y = temp; if (x z) temp = x; x = z; z = temp; if (y z) temp = y; y = z; z = temp; printf ( Output: %5.2f, %5.2f, %5.2f n, x, y, z ) ; 通过这个程序掌握单分支if语句的使用方法2. main()int year;printf (Please input the year:n);scanf (%d, &year);if ( year%4 = 0 & year%100! = 0 ) | ( year%400 = 0 )printf ( %d is
37、 a leap!n, year ) ;elseprintf ( %d is not a leap!n, year ) ;通过这个程序掌握双分支if语句的使用方法。3. main() int x, y ; scanf ( %d,%d,&x,&y ) ; if ( x y ) x = y; y = x ; else x+; y+; printf ( %d, %dn, x, y ) ;通过这个程序掌握,if和else语句后面的复合语句的使用方法。4. # include main()char c;printf ( Please input a character: ) ;c = getchar ()
38、 ;if (c = 0 & c = A & c = a & c 100 | score = 90 )grade = A ;else if ( score = 75 )grade = B;else if ( score = 60 )grade = C ;elsegrade = D ;printf ( The grade is: %cn, grade ) ; 通过这个程序掌握嵌套if语句的使用方法。6. main()float score ;printf ( Please input the score:n ) ;scanf ( %f, &score ) ;switch ( ( int ) sco
39、re / 10 )case 9 : case 10:printf ( An ) ; break ;case 8 :printf ( Bn ) ; break ;case 7 :printf ( Cn ) ; break ;case 6 :printf ( Dn ) ; break ;default :printf (En ) ; main()char c1, c2; printf ( Please input the word: ) ;scanf ( %c%c, &c1, &c2 ) ;switch ( c1) case i:if ( c2 = s ) printf ( isn ) ; els
40、e if ( c2 = t ) printf ( itn ) ; else printf ( Non ) ; break ; case a: if ( c2 = m ) printf ( amn ) ;elseif ( c2 = t ) printf ( atn ) ; elseprintf ( Non ) ; break ; default:printf ( Non ) ; 通过这两个程序掌握switch语句的使用方法,尤其注意条件表达式和case的使用。四、思考题、习题及习题解答(一) 思考题、习题1. 输入三个整数,输出最大数和最小数。2. 计算器程序。用户输入运算数和四则运算符,输出计
41、算结果。3. 编程实现:十进制数和十六进制数之间的转换。4. 有4个圆塔,圆心分别为(2,2)(-2,2)(-2,-2)(2,-2),半径为1,圆内塔高为10m,其余坐标的高为0,试输入任一点圆心坐标,输出合适的高值。5. 写一程序,从键盘上输入1年份year(4位十进制数),判断其是否闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。6. 由键盘输入3个整数a,b,c,输出其中最大的数。7. 输入一个字符,判断其输入字符的种类(字母、数字字符或者其他字符)。8. 由键盘输入3个整数a、b、c,将其按升序排列输出。9. 给一个少于5位的正整数,要求:1)求出它是几位数;2
42、)分别打印出每位数字;3)按逆序打印出各位数字,如原数为123,则输出321。10. 输入两个整数,若他们的平方和大于100,则输出该平方和的百位数以上的各位数字,否则输出真个整数的和。11. 加密数据,方法:对给定的一个不超过4位的正整数,每位数字均加2,且在0,9范围内,若加密后某位数字大于9,则取其被10除的余数。如6987加密后为8109。12. 编写一段程序,要求用输入星期几的第一个字母来判断是星期几,如果第一个字母相同,则继续判断第二个字母。13. 编写一段程序,要求输入一位学生的生日(年:y0,月:m0,日:d0),并输入当前的日期(年:y1月:m1:d1),输出该生的实际年龄。
43、(二) 习题解答(只解答难题)1. main() int a, b, c, max, min ; printf ( “Input a b c: ) ; scanf ( %d%d%d, &a, &b, &c ) ; if ( a b ) max = a ; min = b ; else max = b ; min = a ; if ( max c ) min =c; printf ( max = %d nmin = %d n, max, min ) ;2. main() float a , b; char c; printf ( 输入表达式 a + ( -, *, / ) b: n ) ; sc
44、anf ( %f%c%f, &a, &c, &b ) ; switch ( c ) case +: printf (%f n, a + b); break ; case -: printf ( %f n, a-b ); break ; case *: printf ( %f n, a*b ); reak; case /: if (b! = 0) printf ( %fn, a / b) ; else printf ( “分母为0, 无法计算a / b! ” ) ; break ; default: printf ( 输入错误! n ) ; 3. main() int value, choice
45、 ; printf (菜单 : n); printf ( 1: 十进制数转换为十六进制数 n ) ; printf ( 2: 十六进制数转换为十进制数 n ) ; printf (输入选择: ) ; scanf (%d, &choice ) ; if (choice = 1 ) printf ( 输入一个十进制数: ) ; scanf ( %d, &value ) ; printf ( %d 转换成十六进制数是:%x, value, value ) ; If ( choice = 2 ) Printf ( 输入一个是十六进制数: ); scanf ( %x, &value); printf (
46、 %x转换成十进制数是:%d, value, value ) ; 4. main( ) int a1, a2, a3, a4 ; float x, y, h ; printf ( 输入x y: ) ; scanf ( %f%f, &x, &y ) ; a1 = ( x 2 ) * ( x 2 ) + ( y 2 ) * ( y 2 ) = 1; a2 = ( x + 2 ) * ( x + 2 ) + ( y - 2 ) * ( y 2 ) = 1; a3 = ( x + 2 ) * ( x + 2 ) + ( y + 2 ) * ( y + 2 ) = 1; a4 = ( x 2 ) * (
47、 x 2 ) + ( y + 2 ) * ( y + 2 ) =A & ch=a & ch=0 & ch=9)printf(number!n);elseprintf(else charactor!);11. main()int x, y, a,b,c,d;printf(nPlease input the data : );scanf(%d, &x);if (x=10000)printf(nThe data (%d) is incorrect!n, x);elsea = x / 1000;b = x % 1000 / 100;c = x % 100 / 10;d = x % 10;if (a)y
48、 = (a+2)%10 * 1000 + (b+2)%10 * 100 + (c+2)%10 * 10 + (d+2)%10;elseif (b)y = (b+2)%10 * 100 + (c+2)%10 * 10 + (d+2)%10;elseif (c)y = (c+2)%10 * 10 + (d+2)%10;elsey = (d+2)%10;printf(nThe encryption of the word is : %dn, y);13. main()int s_year, s_month, s_day, b_year, b_month, b_day;printf(nPlease i
49、nput your birthday (yyyy-mm-dd) : );scanf(%d-%d-%d, &b_year, &b_month, &b_day);printf(Please input the system date (yyyy-mm-dd) : );scanf(%d-%d-%d, &s_year, &s_month, &s_day);printf(nYou are );if(b_months_month | b_month=s_month & b_day=s_day)printf(%dn, s_year-b_year);elseprintf(%dn, s_year-b_year-
50、1);第五章 循环结构一、 本章的核心、重点及前后联系 (一) 本章的核心1while 循环语句While循环的执行过程为先判断条件表达式,当条件表达式为真时进入循环体,标准的while语句为:while(条件表达式) 循环体;2do-while循环语句do-while循环的执行过程为先执行一次循环体,然后再判断条件表达式,当条件表达式为真时再次进入循环体,标准的do-while语句为:do循环体;while (条件表达式);3for循环语句C语言中的for语言使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句和
51、do-while语句。标准的for语句为:for (表达式1; 表达式2; 表达式3)循环体;4break语句和continue语句以及在循环中的作用和区别。在循环语句中,break语句用于跳出并终止循环体。break只能终止并跳出最近一层的结构,break不能用于循环语句和switch语句之外的任何其它语句之中。continue语句用于结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断,continue语句只能用于循环语言中。(二) 本章重点1.while 循环语句2.do-while循环语句3.for循环语句。 (三) 本章前后联系本章内容是三种程序结构种的循环结构程
52、序,是一种较为复杂的程序结构,是C语言编程的核心内容。二、 本章的基本概念、难点及学习方法指导(一) 本章的基本概念本章中的基本概念是循环结构。(二) 本章难点及学习方法指导本章的难点主要有:1)for循环语句。for语句是最为灵活的循环语句,它可以有多种变形,如省略表达式1、省略表达式2、省略表达式3或同时省略2个、3个表达式。在学习for语句时,应理解for语句的执行过程,明确3个表达式语句的执行顺序及其作用。2.break语句和continue语句。这两个语句都是用于中断循环程序,不同的是break语句终止所有循环过程,而continue是终止本次循环,继续下次执行下次循环。要注意区分两
53、者的作用。三、典型例题分析1. main() int i=1,sum0,n; printf(“输入一个整型数据n:”); scanf(“%d”,&n); while(in) sum=sum+i*i; i+; printf(“i=%d,n=%d,sum=%dn”,i,n,sum); 通过这个例子掌握while语句的使用方法。2. main() int i=1, sum=0; do sum=sum+i; i+; while ( i=100 );printf(%d,sum);通过这个例子掌握do-while语句的使用方法。3. main() int i, sum=0; for(i=1; i=100;
54、 i+) sum=sum+i; printf(%d,sum);通过这个例子掌握for语句的使用方法。4. main() int i, j, k; printf(i j kn); for (i=0; i2; i+) for(j=0; j2; j+) for(k=0; k100) break; sum=sum+i; printf(%d,sum);通过这个例子掌握break语句的使用方法。6. main()int n;for(n=100; n=200; n+)if (n%3=0)continue;printf(%5d, n);通过这个例子掌握continue语句的使用方法。7. #include “
55、stdio.h”main()int c; /*或用char定义 */ c=getchar(); while(c!=#) putchar(c); c=getchar(); 通过这个例子掌握如何使用getchar函数与while语句相结合的使用方法。8. #define M 20main() int i,k,n1=0,n2=0,n3=0; char ch;printf(“输入数字字符20个:n”);for (k=1;k=M;k+) scanf(“%c”,&ch); i=ch-0; if (i=0) n3+; /*零*/ else if(i%2=0) n1+; /*偶数*/ else n2+; /*
56、 奇数*/ printf(“有 %2d 个偶数, %2d 个奇数, %2d 个零”,n1,n2,n3); 通过这个例子掌握如何使用scanf函数与for语句相结合的使用方法。9. main() long f1=1, f2=1; int i; for(i=1; i=20; i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; 通过这个例子掌握斐波那契数列的计算过程。10. #include main()int m, i, k; scanf(%d, &m); k = sqrt(m); for(i=2; i=k
57、; i+)if( m%i=0 ) printf(%d is not a prime number, m); break;else if (i=k) printf(%d is a prime number, m);通过这个例子掌握素数的求解过程,及如何使用for编程。11. #include main()int m, i, k, n=0; for (m=101; m=200; m=m+2)k=sqrt(m);for (i=2; ik) printf(%5d, m);n=n+1; if (n%10=0)printf(n);通过这个例子掌握两重循环的使用方法。四、思考题、习题及习题解答(一) 思考题
58、、习题1. 输入一个正整数,要求逆序输出该数,例如:输入12345,输出54321。2. 输入学生成绩,将及格者的成绩打印出来。 3. 用 公式求 的近似值,直到某一项的绝对值小于 为止4. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如153是以水仙花数,因为153=13+53+33。5. 求1-3+5-7+20的值。6. 任意输入10个数,计算所有正数的和、负数的和以及这10个数的总和。7. 两个乒乓球队进行比赛,各出3人。甲队为a、b、c3人,乙队为x、y、z3人,已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x、y
59、比,请编程找出3对赛手名单。8. 输入10各整数,求其中正数的个数及其平均值。9. 将一个正整数分解为质因数,例如:输入90,打印出90=2*3*3*5。10. 输出所有大于1010小于10000的4位偶数,且改偶数的各位数字两两不相同。11. 有4名专家队4款赛车进行评论。 A说:2号赛车是最好的。 B说:4号赛车是最好的。 C说:3号赛车不是最好的赛车。 D说:B说错了。事实上只有一款赛车是最好的,且只有一名专家说对了,其他3人都说错了,编程输出最好的赛车编号。12. 输入6个学生的5门课成绩,分别求出每个学生的平均成绩。13. 求两个整数的最大公约数和最小公倍数。(二) 习题解答(只解答
60、难题)1. main()int n;printf (Input the number:);scanf (%d, &n); while ( n != 0 )printf(%d, n%10); n = n/10; /* number缩小10倍 */2. main() int n,i;float score;printf(“输入学生总数: ”); /*输入学生总数*/scanf(“%d”,&n);for(i=1;i=60.0)printf(“第 %d 学生的成绩是 : %fn”,i,score);3. #include main() int s; float n,t,pi; t=1; pi=0; n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二级MySQL数据清理与维护技巧试题及答案
- 二级MySQL数据结构与查询试题及答案
- 四级软件测试考试常见误区试题及答案
- 提升测试文档准确性的有效方法与技巧试题及答案
- 电气行业法律法规解读考核试卷
- 教学地图绘制技术考核试卷
- 专注2025年软件测试核心试题及答案
- 网络技术考试的准备要点与建议试题及答案
- 数据库查询分析试题及答案解读
- 网络技术在项目中的应用试题及答案
- 《三毛流浪记》作者简介张乐平
- 2023年山西建设投资集团有限公司招聘笔试题库及答案解析
- 铁皮石斛的抗氧化、保湿功效研究和应用现状
- GB/Z 18620.4-2008圆柱齿轮检验实施规范第4部分:表面结构和轮齿接触斑点的检验
- GB/T 97.1-2002平垫圈A级
- 泊 秦 淮唐 杜牧
- GB/T 1871.1-1995磷矿石和磷精矿中五氧化二磷含量的测定磷钼酸喹啉重量法和容量法
- GB/T 1725-2007色漆、清漆和塑料不挥发物含量的测定
- 公路工程工作总结范文
- 初中物理杠杆滑轮课件
- 课件:第七章 社会工作项目结项(《社会工作项目策划与评估》课程)
评论
0/150
提交评论