C语言程序设计实验教案c语言程序设计实验四_第1页
C语言程序设计实验教案c语言程序设计实验四_第2页
C语言程序设计实验教案c语言程序设计实验四_第3页
C语言程序设计实验教案c语言程序设计实验四_第4页
C语言程序设计实验教案c语言程序设计实验四_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、本文格式为Word版,下载可任意编辑 C语言程序设计实验教案c语言程序设计实验四 高级语言程序设计 测验指导书 测验一 依次布局程序设计 一、测验目的及要求 1. 掌管C语言中使用最多的一种语句赋值语句的使用方法。 2. 掌管各种类型数据的输入输出的方法,能正确使用各种格式转换符。 二、测验学时 4学时 三、测验任务 1.以下程序多处有错。要按下面指定的形式输入数据和输出数据时,请对该程序做相应的修改。 #include void main ( ) double a,b,c,s,v; printf(input a,b,c:n); scanf(%d%d%d,a,b,c); s=a*b; v=a*

2、b*c; printf(%d %d %d,a,b,c); printf(s=%fn,s,v=%dn,v); 当程序执行时,屏幕的显示和要求输入形式如下: input a,b,c:1.0 2.0 3.0 此处的1.0 2.0 3.0是用户输入的数据 a=1.000000 b=2.000000,c=3.000000 此处是要求的输出格式 s=2.000000,v=6.000000 相关学识: 检查程序错误时应留神几点: a)有时程序中一个错误会引发一系列错误信息,工作中不应被这种处境所迷惑,改正了一些错误后应实时对源程序重新举行编译; b)假设修改错误时增删了行,或是一个行里有多个错误,更正前面错

3、误时增删了字符,就可能导致系统对错误定位不准,此时理应重新编译; c)系统给出的警告信息一般都说明程序中有问题,由于系统察觉了可疑处境。对于警告信息同样要逐个留心分析。除非明确认定不是问题,否那么绝不能简朴地认为不是错误而不予理睬。实际上,好多警告都是由于程序中切实有严重的隐含错误。 d) 在连接中察觉新错误也需要留心检查和修改程序。连接时察觉的错误一般是由于函数名或外部变量名字写错,或者一些函数、外部变量没有定义引起的。系统不能对连接错误给以自动定位,只能供给有关的名字信息等。对于这类问题,可以借助编辑器的字符串查找命令举行定位。 正确调用scanf函数和printf函数构成输入和输出语句。

4、 2.有以下程序 #include void main() char c1,c2; int n1,n2; c1=getchar(); c2=getchar(); n1=c1-0;n2= n1*10+(c2-0); printf(%dn,n2); 程序运行时输入:12,执行后输出结果是什么? 相关学识:getchar()函数用来输入两个字符分别赋给变量c1和c2; n1=c1-0相当于n1=1 -0,字符1的ASCII码值比0大一,所以n1中的值为1,c2-0相当于2 -0; 把字符串转换为多位数的算法。 3.若有以下程序 #include void main() int i,j; int x,

5、y; scanf(i=%d,j=%d, scanf(%d%d, printf(i=%d,j=%dn,i,j); printf(%4d%4dn,x,y); 要求给i赋值为10,j赋值为20,那么理应怎样从键盘输入数字? 相关学识:在调用scanf()函数时在格式串中若包含有格式描述符之外的字符时,那么要求在输入数据时在对应的位置上输入完全匹配的字符; scanf()函数只包含格式描述符时可用跳格键Tab、空格和回车分隔数据; 在调用printf ()函数时在格式串中若包含有格式描述符之外的字符时,那么在输出数据时在对应的位置上输出完全匹配的字符,%d之类的格式符位置输出对应输出项的值; 故输出时

6、要留神插入适当的非格式符以便区分各个输出结果。 4. 计算定期存款本利之和 设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。 四、测验重点、难点 1. 符数据输入输出函数 2. 格式输入输出函数 五、操作要点 按Alt+R可进入Run菜单, 其中Run:运行由Project/Project name项指定的文件名或当前编辑区的文件。假设对上次编译后的源代码未做过修改, 那么直接运行到下一个断点(没有断点那么运行到终止)。否那么先举行编

7、译、连接后才运行, 其热键为Ctrl+F9。User screen:显示程序运行时在屏幕上显示的结果。其热键为Alt+F5。 六、留神事项 1. 输入输出的数据类型与所用格式说明符不一致 2. 输入变量时忘却使用地址符号 测验二 规律布局程序设计 一、测验目的及要求 1. 了解C语言表示规律量的方法(以0代表“假”,以非代表“真” )。 2. 学会正确使用规律运算符和规律表达。 3. 纯熟掌管if语句和switch语句. 4. 学习调试程序。 二、测验学时 6学时 三、测验任务 1 源程序中包含有一些错误,调试以下程序,使之具有如下功能:输入a、b、c三个整数,求最小值。 # include

8、“stdio.h” void main( ) int a,b,c; scanf(%d%d%d,a,b,c); if(ab) scanf(%d%d%d, if(max void main( ) int choice; int value; printf(Convert:n); /* 显示菜单 */ printf( 1:decimal to hexadecimaln ); printf( 2:hexadecimal to decimaln ); printf( 3:decimal to octaln ); printf( 4:octal to decimaln); printf(enter you

9、r choice: ); scanf(%d, switch (choice) case 1: /* 选中1时处理 */ printf(enter decimal value:); scanf(%d, printf(%d in hexadecimal is:%xn,value,value); break; case 2: /* 选中2时处理 */ printf(enter hexadecimal value:); scanf(%x, printf(%x in decimal is:%dn,value,value); break; case 3: /* 选中3时处理 */ printf(enter

10、 decimal value:); scanf(%d, printf(%d in octal is:%on,value,value); break; case 4: /* 选中4时处理 */ printf(enter octal value:); scanf(%o, printf(%o in decimal is:%dn,value,value); break; 相关学识:用switch语句实现菜单的方法; 数制转换的方法。 7. 模仿第6题,要求对输入的数字17转换成文字星期几,对其它数字不转换。例如,输入5时,程序理应输出Friday。 编辑、调试和运行该程序,然后输入4。其输出结果是什么

11、?为什么是这样的结果? 该程序有哪些错误?如何修改? 相关学识:switch语句的正确使用; break在switch语句中的作用。 四、测验重点、难点 1. 表达式 2. 选择型程序设计语句 3. 规律表达式 五、操作要点 按Alt+C可进入Compile菜单, Build all:重新编译工程里的全体文件, 并举行装配生成.EXE文件。该命令不作过时检查。 六、留神事项 1. 误把“=”作为关系运算符“等于” 2. 没有留神大写字母和小写字母代表不同的标识符 3. 当一个复合语句中使用多层括号时,常展现大括号不配对的现象。 测验三 循环操纵 一、测验目的及要求 1. 熟谙掌管用语句,语句和

12、语句实现循环的方法。 2. 掌管在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 二、测验学时 6学时 三、测验任务 1. 下面程序求1+100,填空,实现该功能。 #include void main() int s,i; s=0; /* 第5行 */ for( ) s=s+i; printf(1+.+100=%dn,s); 斟酌:(1)第5行能不能去掉?其作用是什么? (2)不用for语句,用while语句改写该程序,实现同样的功能。 2. 对比以下两个程序。(验证) #include void main() int i,n,sum=0; scanf(%d, n=i; w

13、hile(i void main() int i,n,sum=0; scanf(%d, n=i; do sum+=i; i+; while(i void main( ) long data; scanf(%ld, while(data) printf(%ld,data%10); data=data/10; 4. 下面程序实现求Fibonacci数列的前n个数。(验证、调试) 运行程序,写出运行结果; 采用单步跟踪技术运行该程序,查看一下变量的变化。 #include void main( ) long int f1, f2; int i,n; printf(Input n:); /* 第5行

14、*/ scanf(%d, /* 第6行 */ f1=f2=1; for(i=1;i void main( ) int i,j,x; for(i=0,x=0;i void main( ) int mark; int n=0 ; sum=0 ; int max=100 ; min=0 ; for ( ; ; ) ; scanf(%d, if ( mark 100 ) printf( Mark 100 , Please reinput n ); break; if ( mark=-1) break; n + ; sum=sum + mark ; if( mark max ) max = mark ;

15、 if( mark void main( ) int count1=0,count2=0,count3=0; int i,x; printf(“Please input 20 numbers:”); for(i=0;i void main( ) int i, x; printf(Enter one natural integer: ); scanf(%d , for(i=2;i #define N 10 void main( ) int i,aN,av; for(i=0; i void main( ) int i, a5, sum = 0; scanf(%d,%d,%d,%d,%d, a );

16、 for (i = 0; i void main( ) int i, j, row, colum, max; static int a34 = 1,2,3,4, 9,8,7,6, -10,10,-5,2; printf( Max = %d, Row = %d, Colum = %d n, max, row, colum); 编程点拨: 初始化row、colum及max。 使用for循环的双重循环逐行把元素值与max值举行对比,对比结果假设元素值比max值大,那么变更max值,同时变更row和colum的值。 结果输出max,row和colum的值。 相关学识:二维数组的定义和初始化; 使用二重

17、循环对二维数组元素的访问;求最值时相关变量初值的设定。 4.数组中已存互不一致的10个整数,从键盘输入一个整数,输出与该值一致的数组元素下标。 编程点拨:输入要查找的变量x的值; 使用循环将输入的数和数组元素逐个举行对比,若找到,那么提前退出循环;根据循环是正常终止还是提前终止来判断是否找到x。 片面源代码: #include void main( ) int i, x, a10=1,2,3,4,5,6,7,8,9,10; /*输入x变量的值 */ for ( i=0; i=k 找不到比k小的元素时也要退出循环 向右移动插入点后的元素; 先把a9移到a10,a8移到a9,ai移到ai+1,直到

18、把aj移到aj+1,即:i=j中断移动元素。 for(i=9;i=j;i- ) ai+1=ai; 20 18 16 14 12 10 8 6 4 2 a 0 1 2 3 4 5 6 7 8 9 下标= 10 k 15 插入。 片面源代码: #include #define N 11 void main() int i,j,aN; printf(“Please input 10 numbers:”); for (i=0; i void main( ) float x1000, sum=0.0, ave, a; int n=0, i; printf (Enter mark : n) ; scanf

19、(%f, while (a=0.0 xn= ; n+; scanf(%f, ave= ; printf (Output : n); printf (ave = %fn, ave); for (i=0; i #include void main() char a10,b10; int c,d,k,ch; scanf(%s, scanf(%s, printf(a=%s,b=%sn,a,b); c=strlen(a); d=strlen(b); if(cd) for(k=0;k #include void main( ) char s180, s240; int i = 0, j = 0; prin

20、tf( n Please input string1:); scanf(%s, s1); printf( n Please input string2:); scanf(%s, s2); while (s1i!= 0 ) i+; while (s2j!= 0 ) s1i+=s2j +; s1i= 0; printf(n New string: %s, s1); 编辑、运行该程序,然后分别输入Country 和side。请问: 程序执行的结果是什么? 该程序的功能是什么? 相关学识: 串终止符0; 自编写库函数。 11.填空完成下面程序,使其功能是对从键盘上输入的两个字符串举行对比,然后输出两个

21、字符串中第一个不一致字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,那么输出为-1。程序如下: #include void main ( ) char str1100,str2100; int i,s; printf(n Input string 1:n);gets(str1); printf(“n Input string 2:n”);gets(str2); i= (1) ; while(str1i=str2i) s= (3) ; printf(%dn,s); 12.填空完成下面程序,使其的功能是统计从终端输入字符中每个大写字母的个数。用#号作为输入终止标志

22、。程序如下: #include #include void main ( ) int num26,i; char c; for (i=0;i void main() void fun(int i, int j, int k); int x,y,z; x=y=z=6; fun(x,y,z); printf(%x=%d;y=%d;z=%dn,x,y,z); void fun(int i, int j, int k) int t; t=(i+j+k)*2; printf(t=%dn,t); 2. 阅读下面程序,留神在调试时F11和F10的识别,还要留神函数调用过程中形参、实参的关系。 #includ

23、e void main() int x=10,y=20; void swap (int ,int); printf(1)in main :x=%d,y=%dn,x,y); swap(x,y); printf(4)in main :x=%d,y=%dn,x,y); void swap (int m,int n) int temp; printf(2)in main :m=%d,n=%dn,m,n); temp=m;m=n;n=temp; printf(3)in main :m=%d,n=%dn,m,n); 把用户自定义函数swap()中的形式参数m和n对应改成x和y,使其与实参变量同名,再用F7

24、跟踪程序的运行,看看有什么变化。 相关学识:形参具有“用之那么建,用完那么撤”的特点。在函数定义时,函数名后面圆括号内的参数称为形参; 在函数调用时,函数名后面圆括号内的参数称为实参。对于实参,在调用函数中对其举行定义时,不仅指明它的类型,而且系统还为其调配存储单元。而对于形参,定义时仅仅只是指明它的类型,并不在内存中为它们调配存储单元,只是在调用时才为其调配临时存储单元,函数执行终止,返回调用函数时,该存储单元立刻撤销。 3. 下面程序是实现求素数的,请填空完成该程序,并上机运行测试。 #include #include void main() int m; ; /* 申明求素数函数 */

25、printf(Please input a data m=:); scanf(%d, ; /* 调用求素数函数 */ void prime(int n) int i,k; k=sqrt(n); for(i=2;i=k+1) printf(This is a prime number); else printf(This isnt a prime number); 4. 下面程序的功能是从键盘上输入的若干个数并求出最大值。请填空完成该程序。 #include void main( ) int i; int s10, max; /* Findmax()函数的申明 */ ; printf(Input

26、 10 number : n); /* 输入10个数据到s数组中 */ ; /* 调用Findmax函数 */ ; for (i=0;i void main( ) int i , k; float s100, j ; printf( Input number : n); for (i=0; scanf(%f, i+) si=j; sort(s, i); for (k=0; k void main( ) int m, k; void dtoo( int n ,int r ); printf(Pleae input the decimal number:); scanf(%d, printf( n

27、Please input a number in (2,8,16):); scanf(%d, dtoo(m,k); void dtoo( int n ,int r ) if(n=r) dtoo(n/r,r); printf(%d,n%r); 8.预习下面程序,写出预习结果,上机验证并写出分析。 变量的作用范围 # define LOW 10 # define HIGH 5 # define CHANGE 2 int i = LOW ; #include void main( ) int workover ( int i ) , reset ( int i ); int i = HIGH ; r

28、eset ( i / 2) ; printf( i = %d n , i ); reset ( i = i / 2) ; printf( i = %d n , i ); reset ( i / 2) ; printf( i = %d n , i ); workover ( i ); printf( i = %d n , i ); int workover ( int i ) i = ( i % i ) * ( i * i ) / ( 2 * i ) + 4) ; printf( i = %d n , i ); return ( i ); int reset ( int i ) i = i vo

29、id main( ) int i ; int f(int); for ( i = 1; i (y)?(x):(y) #define PR printf #include void main() int a,b,c,d,x; a=5;b=10;x=200; c=POWER(a+b); x=x/POWER(a+b); d=MAX(a+6,b); PR( c=%d,d=%d,x=%d n, c,d,x); 12.编写:输入10个学生的3门课的劳绩,分别用函数求: (1) 每个学生的平均分。 (2) 每门课的平均分。 (3) 按学生平均分降序排列输出学生信息。 (4) 统计不及格学生,输出其相应信息。

30、 (5) 编写一菜单主函数,菜单内容包括以上4片面。 分析:此题要求完成的操作有录入数据、求平均分、排序、统计。这些操作分别用函数来实现。先分析表示这些数据的数据布局,可用如下布局来表示学生的劳绩: 课程1 课程2 课程3 平均分 68 74 50 即10个学生的3门课程劳绩可以登记在一个二维数组中score104,其中结果一列用于保存平均分,学生的学号不单独记录,学生的序号用二维表的行号来表示。下面给出了主菜单的参考程序,其他功能的函数学生自己编写。 #include #define N 10 #define M 4 void main() int scoreNM; char choice=

31、1; void input(int ,int,int); void aver_stu(int ,int,int); void aver_cour(int ,int,int); void orde_aver(int ,int,int); void failed(int ,int,int); input(score,N,M); /*显示主菜单*/ while(choice!=0) clrscr(); printf( =the Score Processing System =n); printf(1.print each students averagen); printf(2.print eac

32、h courses averagen); printf(3.Order the students by students average decreasingly n); printf(4.print the failed student n); printf(0.Exit the system n); printf(=n); printf(Please choise (0-4): n); choice=getchar(); switch(choice) case 1: aver_stu(score,N,M); break; case 2: aver_cour(score,N,M); brea

33、k; case 3: orde_aver(score,N,M); break; case 4: failed(score,N,M); break; case 0: exit(0); default: printf(Choice Error,Please select again(0-4).); 四、测验重点、难点 1. 函数的定义 2. 函数的参数及返回值 3. 函数的调用 4. 数组作为函数参数 5. 局部变量和全局变量 6. 变量的存储类别 五、操作要点 按Alt+D可选择Debug菜单, 该菜单主要用于查错, 它包括以下内容 1. Evaluate 1) Expression要计算结果的

34、表达式。 2) Result显示表达式的计算结果。 3) New value赋给新值。 2. Call stack:该项不成接触。而在Turbo C debuger 时用于检查堆栈处境。 3. Find function在运行Turbo C debugger时用于显示规定的函数。 4. Refresh display假设编辑窗口偶然被用户窗口重写了可用此恢复编辑窗口的内容 六、留神事项 1. 所调用的函数在调用语句之后定义,但在调用之前没有说明 2. 误认为形参值的变更会影响实参的值 3. 函数的实参和形参类型不致。 测验六 指针 一、测验目的及要求 1. 通用测验进一步掌管指针的概念,会定义和使用指针变量; 2. 能正确使用数组的指针和指向数组的指针变量; 3. 能正确使用字符串的指针和指向字符串的指针变量; 4. 能正确使用指向函数的指针变量; 5. 了解指向指针的指针的概念及其使用方法。 二、测验学时 4学时 三、测验任务 编程序并上机调试运行程序(都要求用指针处理)。 1.上机验证以下程序的运行结果 #include void main() int i,j,*pi,*pj; pi= pj= i=5; j=7; printf(n%dt%dt%dt%d,i,j,pi,pj

温馨提示

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

评论

0/150

提交评论