《C语言程序设计》自学指导书_第1页
《C语言程序设计》自学指导书_第2页
《C语言程序设计》自学指导书_第3页
《C语言程序设计》自学指导书_第4页
《C语言程序设计》自学指导书_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计自学指导书自学学时:64学时推荐教材:C语言程序设计 陈宝明等主编,人民邮电出版社,2009年1月第1版参考资料:1、C程序设计(第三版) 谭浩强主编,清华大学出版社出版社2、C语言程序设计教程 李明主编,上海交通大学出版社3、C语言程序设计教程 张基温主编,高等教育出版社4、C语言程序设计 何钦铭等主编,浙江科技出版社考核方式:平时作业×30笔试(闭卷)×70第一章 C语言概述一、本章自学内容及要求:1、了解C语言的发展及特点。2、理解和掌握C语言源程序书写规则。3、掌握C语言源程序在Turbo C、Visual C+或者C-Free环境中的上机步骤。二、重

2、点与难点:本章重点在于了解并掌握C语言程序的上机操作步骤,难点在于把握C语言源程序的结构和书写规则。三、学习方法指导:选择并熟悉一个C语言程序运行环境,掌握C语言程序的编辑、编译、连接和运行等步骤。四、典型例题介绍:1、C语言的程序由 一 个主函数和 若干 个子函数组成。程序的执行总是从 主 函数开始,不管它放在哪个位置。2、简述C语言程序的开发和运行步骤。答:C语言程序的开发和运行步骤包括编辑、编译、连接和运行等几个步骤,如下图所示。编辑startf.c编译语法错?f.obj连接、运行逻辑错?f.exeendSourceObjectExecutable有有无无五、复习思考题:教材C语言概述章

3、节习题。第二章 C语言程序设计基础一、本章自学内容及要求:1、熟悉C语言的3种基本数据类型(整型、实型、字符型)常量的表示和变量的定义与使用。2、掌握标准格式输入输出函数和字符输入输出函数的使用。3、了解各种常用运算符与表达式,掌握各类数据的混合运算规则。4、掌握赋值运算特点和复合赋值表达式等。(1)数据类型了解C语言的数据类型分类,掌握常用的3种基本数据类型整型、实型和字符型。(2)常量与变量a、常量与变量的概念b、3种基本数据类型常量的表示c、3种基本数据类型变量的定义与输入输出(3)运算符与表达式a、了解各种常用的运算符及运算特点,注意与数学中的运算区别b、掌握表达式的概念及其表达式的求

4、值(4)数据运算注意数据在运算过程中类型的转换。二、重点与难点:重点:3种基本数据类型常量和变量的使用,各种类型数据混合运算规则和常用运算符的运算特点。难点:各种类型数据的混合运算以及根据要求进行格式输入和输出。三、学习方法指导:通过上机实验,掌握C语言基本数据类型与运算以及格式输入输出函数的使用。四、典型例题介绍:1、若有以下类型说明语句: int a; char ch1; float b;则表达式 a+ch1-b的结果的类型是( D )。A. char B. int C. float D. double2、 下面正确的字符常量是( B )。 A. “x” B. y C. /” D. 3、

5、在C语言中,要求运算对象或运算量必须是整型的运算符是( D )。 A. / B. * C. != D. % 4、 设a,b都是整型变量,为了使a=4,b=8。函数scanf(“a=%d,b=%d”,&a,&b)执行时,正确的数据输入是( C )。 A. a=4 b=8 B. a=4,8 C. a=4,b=8 D. a=b=4,8 5、设a,b都是整型变量,且a=5,b=10,则函数printf(“%d,%dn”,a+,+b)的输出结果是( B )。A. 5,10 B. 5,11 C. 6,10 D. 6,116、字符串常量是用一对 双引号 括起来的字符序列。7、设x是int型变

6、量,且x=10,则表达式x*=3+4的值是 70 ,表达式x/=x+x的值是 0 。8、下面程序的输出结果是什么?#include <stdio.h>main()int i, j, m=0, n=0;i = 8;j = 10;m+= i+; n-=-j;printf(“i=%d,j=%d,m=%d,n=%d”, i, j, m, n);答:程序的输出结果是:i=9,j=9,m=8,n=-9五、复习思考题:教材程序设计基础章节习题。第三章 C语言程序控制结构一、本章自学内容及要求:1、了解利用一些基本要素(常量,变量,运算符,表达式等)构成程序的基本成份。2、掌握关系运算和逻辑运算的

7、特点。3、利用if语句和switch语句进行选择结构程序的设计。4、掌握循环结构的基本概念,利用3种循环语句进行循环结构程序设计。(1)算法及程序a、了解算法的概念b、掌握算法的流程图表示(2)三种基本结构a、了解结构化程序设计的特点b、掌握正确的逻辑表达方式c、熟练掌握if语句和switch语句的使用d、了解三种循环语句的特点,掌握用循环实现一些常用算法二、重点与难点:重点:逻辑表达式的组织;条件语句的格式和功能;循环语句的格式、功能以及特点。难点:算法的概念;建立正确逻辑思维能力,合理进行选择结构和循环结构程序设计。三、学习方法指导:复习相关的数学知识,通过习题和上机实验初步掌握C语言程序

8、设计。四、典型例题介绍1、程序填空。编程计算1到100之间的奇数之和及偶数之和。 #include <stdio.h> main() int even_sum,odd_sum,j,i; even_sum = odd_sum =0 ; for(i=0;i<=100;i+=2) even_sum +=i; _j=i+1_; odd_sum +=j; printf("sum of evens is %dn", even_sum); printf("sum of odds is %dn", odd_sum -101); 2、程序填空。从键盘上输

9、入两个正整数x,y,求它们的最大公约数。例如:如果从键盘上输入24,36,程序的输出应为:最大公约数是 : 12。 #include <stdio.h> main() int x,y,t,i; printf("Please enter two numbers:"); scanf("%d,%d",&x,&y); if(x < y) t = x; x = y; y = t; t = x % y; while( t!=0 ) x = y; y = t ; t = x % y; printf("最大公约数是: %d&q

10、uot;,_y_); 3、编程,统计1500之间能被2和3整除的数的个数。#include <stdio.h>main() int count=0,i; for(i=1;i<=500;i+) if(i%2=0&&i%3=0) count+;printf(" 符合要求的数有%d个。n",count);4、输入三角形的三条边a、b、c,如果能构成一个三角形,则计算并输出三角形的周长和面积(结果保留两位小数);否则输出“无效的边长!”。 三角形面积计算公式为:area=,其中s=(a+b+c)/2。#include <stdio.h>

11、#include <math.h>main() float a,b,c,s,area; printf(“Input a,b,c:”);scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%.2fn”,area);elseprintf(“无效的边长!”);5、编写程序,输入一个整数,求它的各位数字之和及位数。例如,34的各位数字之和是7,位数是2;-123的各

12、位数字之和是6,位数是3。#include <stdio.h>main()int x,m,n=0,s=0;printf(" x= ");scanf("%d",&x);if(x<0)x=-x;dom=x%10; /* 求出该数的个位数 */s=s+m;n+;x=x/10;while(x!=0);printf(" 位数是:%dn",n);printf(" 各位数字之和是:%dn",s);6、使用格里高利公式求的近似值,精确到最后一项的绝对值小于10-6。 #include <stdio.

13、h>#include <math.h>main( ) int s; float n, t, pi; t=1; pi=0; n=1.0; s=1; while(fabs(t) > = 1e-6)pi = pi+t; n = n+2; s = -s; t = s/n; pi=pi*4; printf(“pi=%10.6f n”, pi ); 7、中国古代数学史上著名的“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问翁、母、雏各几何?#include <stdio.h>main() int cock,hen,chicken; for(c

14、ock =0; cock <=20; cock +) for(hen =0; hen <=33; hen +) chicken =100- cock - hen; if(5* cock +3* hen + chicken /3)=100&&( chicken %3=0) printf("%5d%5d%5dn", cock, hen, chicken); 8、编程,求S=1!+3!+5!+11!。#include <stdio.h>main() double p,s=0; int i,j; for(i=1;i<=11;i=i+2)

15、 p=1; for(j=1;j<=i;j+) /* 求i! */ p=p*j; s=s+p; printf(“ s=%.2f”,s);*9、编程,打印输出以下图形:#include <stdio.h>main() int i,j,k; for(i=1;i<=4;i+) /* 控制输出前4行*号 */ for(j=1;j>=4-i;j+) /* 输出第一个*号前的空格 */ printf(" "); for(j=1;j<=2*i-1;j+); /* 输出*号 */ printf("*"); printf("n&

16、quot;); for(i=3;i>=1;i-) /* 控制输出后3行*号 */ for(j=1;j>=4-i;j+) printf(" "); for(j=1;j<=2*i-1;j+) printf("*"); printf("n"); 10、按如下形式打印九九乘法表的一部分。 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 #include <stdio

17、.h>main() int i,j,k; clrscr(); for(i=1;i<=4;i+) for(j=1;j<=i;j+) printf("%3d *%3d =%3d",i,j,i*j); printf("n"); 五、复习思考题:教材程序结构章节习题。第四章 数组一、本章自学内容及要求:1、掌握数组的概念,了解数组的特点。2、掌握一维数组的定义和引用,理解一些常用的算法,如排序、查找等。3、了解二维数组的定义和应用。4、理解字符型数组的意义和引用,熟悉常用的字符串函数。(1)数组的概念a、了解数组在程序设计中的作用b、理解数组的

18、概念,把握其特点(2)一维数组a、了解一维数组的定义与初始化b、理解常用的排序、求最大(小)值等算法c、掌握利用循环语句访问一维数组元素的方法(3)二维数组a、了解二维数组的定义与初始化b、理解二维数组表示矩阵进行的相关计算c、掌握利用二重循环语句访问二维数组元素的方法(4)字符数组a、了解字符、字符串和字符数组的联系与区别b、掌握字符数组的定义与初始化c、掌握常用的字符串处理函数的用法(5)数组应用举例a、熟悉数组应用的特点b、理解常用的算法,如排序、查找、求最大(小)值与统计等二、重点与难点:重点:数组的定义,赋初值以及数组与循环语句相结合进行的程序设计。难点:数组的存储形式,数组名的使用

19、,尤其是字符数组的引用。三、学习方法指导:复习第三章内容,通过习题和上机实验,掌握数组与循环结构紧密结合的程序设计特点。四、典型例题介绍:1、编程,用冒泡排序对10个整数进行降序排列。#include <stdio.h>main( ) int a10; int i, j , t; /*输入10个整数到数组a中*/printf ("Input 10 numbers:n"); for(i=0;i<10;i+) scanf("%d",&ai); printf ("n"); /*用冒泡排序法对数组a中的10个数进行降

20、序排序*/for(i=1; i<10; i+) for(j=0; j<=9-i; j+) /* a0到a9-i范围内的数进行一趟冒泡排序 */ if(aj<aj+1) t=aj; aj=aj+1;aj+1=t; /*依次输出排序后的10个整数*/printf ( "The sorted numbers are:n"); for(i=0;i<10;i+) printf("%d _ _",ai); 2、编程,用选择排序对10个整数进行升序排列。#include <stdio.h>main( ) int a10; int i

21、, j , p, temp; /*输入10个整数到数组a中*/printf ("Input 10 numbers:n"); for(i=0; i<10; i+) scanf("%d", &ai);for(i=0; i<9; i+)p=i; /* 从ai到a9范围内求最小元素的位置 */for(j=i+1; j<10; j+)if(aj<ap)p=j;if(p!=i) /* 若最小元素不是ai,则将其与ai交换 */ temp=ap;ap=ai;ai=temp; printf ("The sorted number

22、s are:n"); for(i=0; i<10; i+) printf("%d _ _”,ai);3、已知10个学生的英语成绩,从键盘输入1个成绩,查找是否有此成绩。如果找到,则输出找到的位置,否则输出“not found”。#include <stdio.h>main( ) int a10, x;int i;/*输入10个学生成绩到数组a中*/printf ("Input 10 scores:n");for(i=0; i<10; i+)scanf("%d", &ai);/*输入待查找的成绩到变量x中

23、*/printf ("Input x:n");scanf("%d", &x);/*在查找表中顺序查找x*/for(i=0; i<10; i+)if(ai= = x) break;/*输出查找结果*/if(i<10)printf("%d is in %dn",x,i);elseprintf("not foundn");4、已知10个学生的高考总成绩,输出最高分。#include <stdio.h>main( ) float score10, maxscore;int i;/*输入10个

24、学生的高考总成绩到数组score中*/printf ("Input 10 scores:n");for(i=0; i<10; i+)scanf("%f", &scorei);/*变量maxscore赋值为第一个学生的成绩*/maxscore=score0;/*求最高分*/for(i=1; i<10; i+)if( scorei>maxscore) maxscore=scorei;/*输出最高分*/printf("maxscore=%6.1fn",maxscore);5、输入20个学生的成绩,要求统计并输出优秀

25、(大于等于85)、及格(6084)和不及格(小于60)的学生人数。#include <stdio.h>main( )int mark20, g, p, f,i;g=p=f=0; printf("Enter scores:n");for(i=0; i<20; i+)scanf ("%d", &marki); /*统计优秀、及格和不及格的学生人数*/for(i=0; i<20; i+) if(marki >= 85) g+; else if (marki >= 60) p+; else f+;/*输出统计结果*/p

26、rintf("优秀人数:%dn", g);printf("及格人数:%dn", p);printf("不及格人数:%dn", f);6、从键盘任意输入一行字符(不超过80个),统计其中的英文字母、数字、空格以及其它字符的个数。#include <stdio.h>main( )char string80;int letter, digit, blank, other, i;letter=digit=blank=other=0; /*输入一行字符*/printf("Enter string:n");gets

27、(string);/*按要求统计各类字符的个数*/for(i=0; stringi!= '0' i+)if('a'<=stringi&& stringi<= 'z'|'A'<=stringi&& stringi<= 'Z')letter+;else if('0'<=stringi&& stringi<= '9')digit+;else if(stringi= ' ') /*当前字符为空

28、格*/blank+;elseother+;/*输出统计结果*/printf("英文字母个数:%dn", letter);printf("数字个数:%dn", digit);printf("空格个数:%dn", blank);printf("其它字符个数:%dn", other);7、求一个5*5矩阵主对角线和副对角线元素总和。#include <stdio.h>main( ) int i,j;int a55,sum=0;/*输入5*5矩阵*/printf("Input 25 numbers:n

29、 ");for(i=0; i<5; i+) for(j=0; j<5; j+) scanf("%d", &aij);/*求主对角线和副对角线元素总和*/ for(i=0; i<5; i+)sum+=aii+ ai4-i;/*输出求和结果*/printf("The sum is: ");printf("%dn",sum-a22);8、输入一个以回车键结束的字符串(少于80个字符),删除其中除英文字母和数字字符以外的其它字符。#include <stdio.h>main()char str8

30、0;int i,k=0;printf("Input a string:n");gets(str);/*删除字符串中除英文字母和数字字符以外的字符*/for(i=0; stri!='0' i+)if(stri>='a'&&stri<='z'|stri>='A'&&stri<='Z'|stri>='0'&&stri<='9')strk=stri; /* 保留字符串中的英文字母和数字字符

31、 */k+;strk='0'printf("Output new string:n");puts(str);9、有3 × 4矩阵,求出其中最大元素所在的行号和列号。#include <stdio.h>main( ) int i, j, r=0,c=0, max; int a34 = 1,2,3,4, 9,8,4,6, -10,10,-5,2 ; max=a00;for(i=0;i<=2;i+) for(j=0;j<=3;j+) if(aij>max) max=aij;r=i;c=j;printf(“max=%d,row

32、=%d, col=%dn”,max,r,c);10、打印以下的杨辉三角形(要求打印出10行)。 11 11 2 11 3 3 11 4 6 4 11 5 10105 1 #include <stdio.h>main()int a1010,i,j;/*第0列及主对角线上的元素值均赋为1*/for(i=0; i<10; i+)ai0=aii=1;/*计算下三角阵中除第0列及主对角线上元素以外的其他元素的值*/for(i=2; i<10; i+)for(j=1; j<i; j+)aij=ai-1j-1+ai-1j;/*输出杨辉三角形*/for(i=0; i<10;

33、 i+)for(j=0; j<=i; j+)printf("%4d",aij);printf("n"); 五、复习思考题:教材数组章节习题。第五章 函数一、本章自学内容及要求:1、理解函数的概念,了解模块化程序设计的特点。2、掌握函数定义的一般形式以及函数的调用。3、理解函数调用过程中参数传递的实质。4、明确变量的作用域与存储属性。(1)函数概述a、了解模块化程序设计的特点b、理解函数的概念(2)函数定义的一般形式a、掌握函数定义的一般形式b、了解函数的声明方式(3)函数的参数传递方式a、理解形式参数和实际参数的概念b、了解普通变量作实参时值传递的

34、方式c、了解数组元素作实参与数组名作实参的本质区别 (4)函数的调用a、掌握函数调用的方式b、了解函数调用的过程(5)函数的嵌套调用与递归调用 a、掌握函数的嵌套调用特点b、理解递归的特点c、了解函数的递归调用 (6)变量的作用域与存储类别 a、了解变量的作用域b、掌握局部变量与全局变量的特点c、了解变量的生存期d、掌握静态局部变量的特点二、重点与难点:重点:函数的定义和调用,变量的作用域与存储属性。难点:在函数调用过程中参数单向传值概念以及变量的作用域与存储属性。三、学习方法指导:通过一定数量的习题和上机实验,掌握函数的定义和调用,学习进行模块化程序设计。通过运行程序及程序验证,掌握局部变量

35、与全局变量的使用,并了解静态局部变量的存储属性。四、典型例题介绍:1、编写一个求圆面积的函数Area,该函数有一个形式参数r,类型为float,返回值类型也为float。在主函数中输入一个圆的半径,调用Area函数求出该圆的面积并输出。#include <stdio.h>float Area(float r) float s; s=3.14*r*r; return s;main( ) float a,b; printf("请输入一个圆的半径:"); scanf("%f",&a); b=Area(a); printf("该圆的

36、面积=%.2fn",b); /*保留2位小数*/2、输入x,计算并输出下列分段函数f(x)的值。可以调用数学库函数:平方根函数sqrt(),绝对值函数fabs()和幂函数pow()。 | 2x+5| x<0 f(x)= (x+1)1/2 0<=x<2 (x+2)3 x>= 2#include <stdio.h>#include <math.h>float f(float x);main( ) float x; printf("请输入一个数:"); scanf("%f",&x); print

37、f("y=%.2fn",f(x);float f(float x) float y; if (x<0) y=fabs(2*x+5); else if (x<2) y=sqrt(x+1); else y=pow(x+2,3) ; return y;3、编写一个函数power(x,n),求x的n次方,其中,x是实数,n为正整数。#include <stdio.h>double power(double x,int n);void main(void) int x,n; printf("请输入2个数:"); scanf("%f

38、%d",&x,&n); printf("%f的%d次方=%fn",x,n,power(x,n);double power(double x,int n) int i; double s=1; for(i=1;i<=n;i+) s=s*x; return s;4、编写一个函数prime(int n),判断一个整数是否是素数,若是素数,函数值返回1,否则返回0。利用该函数找出100-200之间的所有素数。素数是只能被1和自身整除的正整数,2是最小的素数。#include <stdio.h>#include <math.h>

39、int prime(int n);main( ) int i; for(i=100;i<=200;i+) if (prime(i) printf("%d ",i);int prime(int n) int i; for(i=2;i<=sqrt(n);i+) if(n%i=0) break; if(i>sqrt(n) return 1; else return 0;5、用递归法编写一个函数long fact(int n),求n!的值。#include <stdio.h>long fact(int n); main( ) int x; printf

40、("请输入一个整形数:"); scanf("%d",&x); printf("%d的阶乘为%ldn",x,fac(x);long fact(int n) long t; if(n=0|n=1) t=1; else t=n*fac(n-1); return t;6、分别利用递归法和数组法求Fibonacci数列的前40项,比较两种方法的运行效率。其中Fibonacci数列F(n)的定义为: F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)。(1)用递归法求Fibonacci数列的前40项源程序如下:#includ

41、e <stdio.h>long fib(int n);main( ) int i; for(i=1;i<=40;i+) printf ("%12ld",fib(i); if(i%5= =0) printf ("n"); long fib(int n) long f; if(n=1|n=2) f=1; else f=fib(n-1)+fib(n-2); return f;(2)用数组法求Fibonacci数列的前40项源程序如下:#include <stdio.h>main() int i,f40=1,1;for(i=2;i&

42、lt;40;i+) fi=fi-2+fi-1;for(i=0;i<40;i+) printf ("%12d",fi); if(i+1)%5= =0) printf ("n"); 从运行结果来看,两种方法的结果是一样的,但是用递归的运行效率要慢的多。五、复习思考题:教材函数章节习题。第六章 指针一、本章自学内容及要求:1、理解指针与指针变量的基本概念。2、掌握各种数据类型指针的定义和引用。3、熟悉地址运算和指针运算的特点。(1)指针的概念a、掌握指针与指针变量的概念b、了解指针变量的特点(2)指针变量与变量a、掌握指针变量的定义b、了解指针变量的引用

43、c、理解指针变量作函数参数的数据传递方式d、掌握用指针变量间接引用其所指向的变量(3)指针与数组a、了解指向数组的指针变量b、掌握用指针变量访问数组元素的方法c、进一步了解数组名作实参时函数调用的数据传递方式(4)指针与字符串a、了解指向字符串的指针变量的定义与引用b、明确字符型指针变量处理字符串与字符数组的区别(5)指针数组与指向指针的指针a、了解字符型指针数组的定义和引用b、了解指向指针的指针变量的定义和引用二、重点与难点:重点:各类指针变量的定义和引用。难点:指向数组的指针和指针数组的引用。 三、学习方法指导:结合第五章,通过上机实验,掌握指针变量的定义和引用;通过程序运行结果的比较,理

44、解普通变量作实参与指针变量作实参的区别。四、典型例题介绍:1、输入3个整数,按从小到大的顺序输出。#include<stdio.h>main() int a,b,c,temp; int *p1,*p2,*p3; p1=&a; p2=&b; p3=&c; printf(“input a,b,c:”); scanf(“%d%d%d”,p1,p2,p3); if(*p1>*p2) temp=*p1; *p1=*p2; *p2=temp;if(*p1>*p3) temp=*p1; *p1=*p3; *p3=temp;if(*p2>*p3) temp

45、=*p2; *p2=*p3; *p3=temp;printf(“a=%d,b=%d,c=%dn”,*p1,*p2,*p3);2、将具有10个元素的一维数组中的数据倒置。#include<stdio.h>main()int a10,i,t,*p=a,*q;printf(“input array a:n”);for(i=0;i<10;i+,p+)printf(“a%d=”,i);scanf(“%d”,p);p=a; /* p指向数组a的首地址,即元素a0的位置 */q=a+9; /* q指向数组a最后一个元素a9的位置 */for(;p<q;p+,q-)t=*p; /* 交

46、换指针变量p和q所指元素的值 */*p=*q;*q=t;printf(“output array a:n”);for(i=0;i<10;i+) printf(“a%d=%dn”,i,ai);3、写一函数,求一个字符串的长度。#include<stdio.h>#include<string.h>int strlength(char *p) int n;n=0; while(*p!=0) n+; p+;return n;main()int length;char s80;printf(“input string:”);gets(s);length=strlength(

47、s);printf(“The length is %dn”, length);4、由键盘任意输入一字符串str,再输入一字符ch,在字符串str中查找是否有此字符ch,若有,则将该字符从字符串中删除。如str为abcdefgh, ch为d,则删除后的str为abcefgh。#include<stdio.h>main() char str80,ch,*p,*q; printf(“input a character:”);scanf(“%c”,&ch);printf(“input string:”);scanf(“%s”,str);p=q=str;while(*p!=0) if

48、(*p!=ch) *q=*p; q+;p+;*q=0;printf(“The string is %sn”,str);5、输入一个月份号,输出该月份的英文月份名。如输入“6”,则输出“June”,如输入“11”,则输出“November”。#include<stdio.h>main() char *monthstr13=“ ”,”January”,”February”,” March”,” April”,” May”,” June”,” July”,” August”,” September”,” October”,” November”,” December”; int n; p

49、rintf(“input month:n”); scanf(“%d”,&n); if(n>=1&&n<=12) printf(“It is %sn”,*(monthstr+n); else printf(“Its wrong!n”);五、复习思考题:教材指针章节习题。第七章 编译预处理命令一、本章自学内容及要求:1、了解编译预处理的概念。2、掌握宏定义的使用,理解带参宏定义与函数调用的区别。3、了解文件包含预处理功能。(1)宏定义a、掌握宏定义的使用b、理解带参宏定义与函数调用的区别 (2)文件包含了解文件包含预处理命令的使用。二、重点与难点:重点:宏定义的

50、使用。难点:带参宏定义调用的特点。三:学习方法指导:通过习题与比较,掌握带参宏定义与函数调用的区别,了解文件包含命令的使用。四、典型例题介绍:1、给整数a定义一个宏,以判断该数是否为偶数。 #include<stdio.h>#define NUM(x) x%2=0main( ) int a; scanf("%d",&a); if(NUM(a) printf("%d 是偶数。n",a); else printf("%d 是奇数。n",a);2、分别用函数和带参数的宏,求三个数里面的最大值。(1)函数#include&

51、lt;stdio.h>int max(int a, int b, int c) int m; m=a>b?a:b; return(m>c?m:c); main() int x,y,z; printf("please input three number:"); scanf("%d%d%d",&x,&y,&z); printf("MAX=%dn",max(x,y,z); (2)带参数的宏 #include<stdio.h>#define MAX(a,b) (a)>(b)?(a):(b)void main() int x,y,z; printf("please input three numbers:n"); scanf("%d%d%d",&x,&y,&z); printf("MAX=%dn",MAX(MAX(x,y),z);五、复习思考题:教材第七章编译预处理章节习题。第八章 结构体与共用体一、本章自学内容及要求:1、了解结构体类型的特点。2、掌握结构体类型变量的定义以及结构体变量成员的引用。3、掌握结构体数组的定义和应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论