收藏 分享(赏)

C语言程序设计学习手册.doc

上传人:11xg27ws 文档编号:7051767 上传时间:2019-05-04 格式:DOC 页数:60 大小:441KB
下载 相关 举报
C语言程序设计学习手册.doc_第1页
第1页 / 共60页
C语言程序设计学习手册.doc_第2页
第2页 / 共60页
C语言程序设计学习手册.doc_第3页
第3页 / 共60页
C语言程序设计学习手册.doc_第4页
第4页 / 共60页
C语言程序设计学习手册.doc_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、C 语言程序设计学习手册学号:_姓名:_班级:_老师:_2第一讲:c 语言概述 2第二讲:数据的存储与运算 .8第三讲:控制结构(一) (顺序、选择结构设计) .12第四讲:控制结构(二) (循环结构设计) .16第五讲:数 组 .21第六讲:函 数 .26第六讲:指针(一) .30第七讲:指针(二) .35第八讲:指针(三) .40第九讲:指针(四) .45第十讲:使用结构体类型处理组合数据-用户自定义数据类型 50第十一讲:文件处理 .55引 言本课程的教学目的在于使学生通过学习 C 程序设计的基本语言知识(数据类型、控制结构、语法规则等)和基本编程技术(程序分析、算法与编程、常用程序模块

2、等) ,对面向过程的高级语言程序设计技术有比较完整的理解,并形成程序设计的初步能力,能自己分析问题,按模块化程序设计的要求,编写结构完整、具有一定难度的控制和出错处理功能、由多个功能模块组合形成的小型程序。第一讲:c 语言概述一、学习目标: 了解 C 语言的简史、特点 熟悉 C 语言的开发过程 理解 C 语言程序的基本结构 熟练应用 printf()、scanf()函数的使用规则、转义符二、学习重点: C 语言程序的基本结构3 printf、scanf 函数的使用三、学习难点:printf、scanf 函数的使用四、课堂笔记:_五、上机试验:1 写出最简单的 C 语言程序 Hello,Worl

3、d!第一步、打开 VC+6.0 的集成环境中,点击菜单栏中文件菜单再选择新建一项,弹出如下对话框第二步:点击对话框文件选项,并选中“C+ Source File”一项,如图:4第三步:在右边文件框内键如本程序的文件名称“Hello.c” ,并可在下边目录文本框内,点击旁边带有省略号的按扭来选择文件存放的位置,最后点击确定按扭。弹出如下界面:5第四步:在右边的编辑器中键入以下代码:#includevoid main()printf(“Hello world!”);第五步:点击菜单栏中编译菜单中编译 Hello.c 一项,对该文件进行编译。第六步:点击菜单栏中编译菜单中构件 Hello.exe 一

4、项或在键盘上按 F7,对该文件进行连接。第七步:点击菜单栏中编译菜单中执行 Hello.exe 一项或在键盘上同时按住 Ctrl+F5,执行该文件,并观察结果。a 将 main 改为 Main(注意大小写) ,再看看程序是否还能运行?b 去掉 printf 函数后面的分号,程序还可以运行吗?c 将#include这句话去掉看是否能运行?2 把上述程序改成以下代码#includevoid main()printf(“hello, ”);printf(“world”);观察以上代码的运行结果是否会显示在同一行?3 转义字符的使用下列语句的运行结果:printf(“Im a studentt!you

5、 are teacher.n”);printf(“this is a bookn”);printf(“a basketballbb”);printf(“x64078087”);printf(“872”);printf(“872”);printf(“Some Num: %d%c”,081,B);4. 已知三角形边长求面积#include #include /*头文件 math.h 中含函数 sqrt()的定义*/ 6void main( ) double a,b,c,s,area; a=3; b=4;c=5; s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);

6、/*函数 sqrt()用于求一个数的平方 */printf(“%4.1f, %4.1f, %4.1f,area is %4.2fn“,a,b,c,area); 5.键入以下代码#includevoid main()printf(“This prints a character,%cn a number,%dna floatingpoint,%f”,z,123,456.789);观察输出结果。 (提示:printf()函数占了两行,在第一行末尾使用了一个反斜杠( )指出字符串将延续到下一行,因此编译器将把这两行代码视为一行)六、作业:1 printf 和 scanf 函数的详细使用方式答案:_2

7、.写出 C 语言程序的开发过程答案:_3.写出语句 scanf(“yy-mm-dd=%d - %d - %d”,从键盘上的输入形式。答案:_4.指出下列程序的错误并改正。#includevoid main();double dbPi , dbR ;dbArea;dbPi= 3.14159;dbR=10;dbArea=dbR* dbR* dbPi;dbL=2* dbR * dbPi;printf(“nate=%d,cir=%fn,dbArea,dbL);7#includevoid main()int nA;printf(nplease intput a integrate:);scanf(“%d

8、”,nA);if(nA0) printf(“nA0n”);else printf(“nAvoid main()short int sX;signed char cCh;sX=32767; cCh=127;printf(“X=%d,Ch=%d”,sX,cCh);sX=sX+1; cCh=cCh+1;printf(“X=%d,cCh=%d”,sX,cCh);2.变量的初始化方式int nA=096;char nB=028;int nC=987654321;int nD=987654321Ldouble dbE=123.456;int nX=nY, nY=6;在我们编写程序时,如果按以上方式编写,会

9、出现什么问题?3.从键盘输入一个整数,以十进制、八进制、十六进制的形式输出:#include void main( )int nA,nB,nC,nM,nN;nA =11;nB =011;nC=0x11;nM=65;nN=97;10printf(“十进制 11 等于%d, 八进制 11 等于%d, 十六进制 11 等于%d,n“, nA,nB,nC);printf(“十进制 八进制 十六进制 字符n“);printf(“ 65 %o %x %c,n“,nM,nM,nM);printf(“ 97 %o %x %c,n“,nN,nN,nN);4. 强制类型转换:运行如下程序段的观察输出结果:char

10、 cM=100,cCh=a;int nA=5,nB=3;double dbC=2.5,dbD;dbD = nB/2 + (int)(nA/2.0 + cM/062 +cCh*2) / 2.0cCh= cCh + b/1.5;printf(“dbD=%d,cCh=%cn”,dbD,cCh);5.输入下列程序,用于输入一个学生的姓名、学号、英语、数学、计算机成绩,输出学生姓名、学号和平均成绩。#include void main( ) char cName31; /*数组 cName31最多可以放 30 个字符或 15 个汉字*/int nEng,nMath,nComp,nNum;double d

11、bAver;printf(“Please input the students name:“);scanf(“%s“,cName); /*字符串用格式符“%s“,并且数组名 cName 前不需要取址符 “scanf(“%d“, printf(“Please input scores (English math computer):“);scanf(“%d%d%d“,dbAver=(nEng+nMath+nComp)/3.0;printf(“the students named is %s , his ID is %d ,his average score is %.1f n“,cName,cN

12、um,dbAver); 11六、作业:1. 请写出 C 语言中基本的数据类型已经它们在内存中所占的字节数。答案:_2. 请问 char cA=a与字符串 ”a”在内存中是否有区别?如有请写出它们的区别。答案:_3. 请问在编程过程中什么时候用自动类型转换,什么时候用强制类型转换?答案:_4. 编写输出字符 0、9、A、 Z、a、z 的 ASCII 码的十进制、八进制和十六进制的表示形式的程序。5. 参考上机试验中例 5 编写一个程序,输入 2 个学生的姓名、学号、英语、数学、计算机成绩,输出这两个学生的姓名、学号和平均分。选做题:6编写一个程序输出 5!、10!的结果七、经验积累序号 问 题

13、描 述 经验级别1 2 3 4 5 6 7 8 129 10 第三讲:控制结构(一) (顺序、选择结构设计)一、学习目标: 了解程序设计的一般方法、结构化程序设计 熟悉顺序结构、简单程序流程图的画法 熟练应用 if 语句的使用规则以及相应的程序流程 熟练应用 switch 语句的使用规则及相应的程序流程二、学习重点: if 语句的使用规则以及相应的程序流程 switch 语句的使用规则及相应的程序流程三、学习难点: if 语句的嵌套的应用四、课堂笔记:_13_五、上机试验:1. 求 ax*x+bx+c=0 方程的解。a、b、c 由键盘输入,且 b*b-4ac0。#include #includ

14、e void main() float a,b,c,p,x1,x2;scanf (“a=%f,b=%f,c=%f“,p=sqrt(b*b-4*a*c);x1=(-b+p)/(2*a);x2=(-b-p)/(2*a);printf(“x1=%6.2f, x2=%6.2fn“,x1,x2);2. 编写程序,输入一个 x,按照函数要求输出 y 值。#include void main() int x,y;scanf (“%d“,if (x 6) printf(“*n”);if(nY = 3) printf(“#n”);else if(nZvoid main()int nX = 1,nY = 2;sw

15、itch(nX)case 1:switch(nY)case 1: printf(“aaaaaan”); break;case 2: printf(“bbbbbbn”); break;case 2:switch(nY-1)case 1: printf(“ccccccn”); break;case 2: printf(“ddddddn”); break;default: printf(“nX = %dn, nY = %d”, nX, nY);6. 由键盘输入的一个字符,判断是数字、英文字符还是其它字符#include void main( ) char cCh; scanf(“%c“,/*在 C

16、中“ 并且“ 含义即“逻辑与“用“elsenZ=nB;答案:_2. 考虑下面程序输出结果:void main() int nX=100, nA=10,nB=20;int nTemp1=5,nTemp2=0;if(nAvoid main() int sum,counter;sum=0;counter=1;dosum=sum+counter;counter=counter+1; while (countervoid main()int nX,nY;for(nY=0,nX=1;nX 3) break;printf(“x = %dn”,nX);if(nY = 4) continue;nX- -;whi

17、le(!nX);5. 统计各个数字、空白符及其他字符出现的次数#includevoid main()int nCh, nI, nWhite,nNother;int nDigit10; /变量 nDigit 声明为有 10 个整形数构成的数组nWhite= nNother=0;for(nI=0;nI=0for (n=1;nvoid main() int nNum,nI;for (nNum=3;nNum=nNum) printf(“%dt“,nNum);六、作业:1.请写出 break 语句和 continue 语句的区别。答案:_2.计算 Fibonacci 数列的前 30 项,并输出。3.求水

18、仙花数。如果一个三位数的百位数、十位数和个位数的立方和等于这个数则该数为水仙花数。4.从键盘输入一个数,求出这个数的阶乘(10 的阶乘即为 10*9*8*2*1)5.设计程序,在屏幕上输出如下图形:*6.求输入的十个整数中正数的个数及其平均值7.设计程序,计算公式的值:1/1 + 2/(1+2) + 3/(1+2+3) + + 10/(1+2+3+10)七、经验积累21序号 问 题 描 述 经验级别1 2 3 4 5 6 7 8 9 10 第五讲:数 组一、学习目标: 熟悉一维数组的定义和初始化 理解一维数组的存储方式 熟悉一维数组的引用 熟悉二维数组的定义和初始化 理解二维数组的存储方式 熟

19、悉二维数组的引用 熟练应用数组作为函数参数时的传参方式:数组元素作参数;数组名作参数二、学习重点: 一维数组的定义和初始化 二维数组的定义和初始化 二维数组的存储方式22 函数参数时的传参方式:数组名作参数三、学习难点:二维数组的存储方式函数参数时的传参方式:数组名作参数四、课堂笔记:_五、上机试验:1. 将数字 04 放入一个整型数组,并逆序输出数组。#include void main() int i,a5;/*给数组中元素赋值*/for (i=0;i=0;i-)printf (“%3d“,ai);printf(“n“);2. 输入 10 个整数,输出最大数。#include void m

20、ain() int i,array10,big;/*给数组中所有元素赋值 */for(i=0;ibig) big=arrayi;printf (“The biggest is %3dn“,big);233.求 Fibonacci 数列的前 20 项。#include void main( ) int i , f20=1,1; /*给出 Fibonacci 数列的前 2 项*/*根据公式由 Fibonacci 数列前 2 项求出其余 18 项*/for(i=2;iint sum(int nArray ,int n)int i,sum=0;for (i=0;ivoid main() int a34

21、=1,2,3,4,9,8,7,6,-10,10,-5,2;int i,j,row=0,colum=0,max;max=a00;for(i=0;imax) max=aij;row=i;colum=j;printf(“max=%d,row=%d, colum=%dn“,max,row,colum);六、上机作业:1如下代码有错吗?如果有错,错在哪里?如果正确,写出数组中所有元素的值:int a5=1,2,3,4,5,6;int b2+3=1,2,3;int c5= , , 3, 4;int d3,3=1,2,3,4,5,6,7,8,9;int e23=1,2,3;int f32=1,2,3;int

22、 g23= , ,2,1,0,0;答案:_2用如下程序段对数组进行赋值,行吗?为什么?25int a5,b5,c5i;for(i=1;ivoid main()int Array10=1,2,3,4,5,6,7,8,9,0;int n,t;for(n=0; n /*文件包含编译预处理命令*/long sum(int nNum1, int nNum2); /*函数类型说明*/long factorial(int nN);void main() int nN1,nN2;long lSum;scanf(“%d,%d“,lSum=sum(nN1,nN2); /*函数调用*/printf(“sum=%1d

23、“,lSum);long sum(int nNum1, int nNum2) /*函数定义*/ long lTemp1,lTemp2;lTemp1=factorial( nNum1); /*函数调用*/lTemp2=factorial(nNum2);return(lTemp1+ lTemp2); /*函数返回值*/*求阶乘*/long factorial(int nN) long lRtn=1;int nI;for(nI=1;nIvoid fun()static int nS=6;int nX=3,nY=4;nS+=+nX;if(nS1)#include double q(double dbX

24、, int nNum)if (nNum=0) return 1.0;else if (nNum=1) return dbX;else return (2*dbX*q(dbX,nNum - 1)-q (dbX,nNum-2);void main()double dbX;int nI;scanf(“%f“,for(nI=0;nIint fun(int nX,int nY)if(nXnY) return nX;return nY;void main()int nX=2,nY=3;printf(“result=%dn”,fun(nX+,nY+=2);printf(“result=%dn”,fun(nY

25、+nX,nX=1);_5.编写一个能打印 1000 以内所有水仙花数的函数(比如水仙花数 153 具有的性质为:1*1*1+5*5*5 + 3*3*3=153)7. 编写一个函数,向该函数传入一个整数 n,则该函数打印 1+2+3+n 的值8. 如下是斐波纳契数列的前几项:1,1,2,3,5,8,13.,编写函数,要求向该函数传入一个整数 n,函数返回数列第 n 项9. 编写函数,打印如下形式的杨辉三角:11 11 2 11 3 3 11 4 6 4 13010. 使用递归算法编写计算 1+2+3+.m 的函数。七、经验积累序号 问 题 描 述 经验级别1 2 3 4 5 6 7 8 9 10 第六讲:指针(一)一、内容及目标:1. 理解地址和指针的概念2. 掌握变量的直接引用方式和间接引用方式3. 熟练应用指针变量的定义和引用4. 熟练应用指针变量作函数参数时的传参方式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报