C语言程序设计试验_第1页
C语言程序设计试验_第2页
C语言程序设计试验_第3页
C语言程序设计试验_第4页
C语言程序设计试验_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计实验Visual C+ 6.0上机指南 1 Visual C+概述Visual C+提Microsoft公司推出的基于Windows平台的可视化编程环境,它不仅提 供了控制台应用程序来学习和运行标准C程序,而且还提供了 “可视”的资源编辑器与MFC 类以及应用程序向导,为快速高效地开发Windows应用程序提供了极大的方便,此外,还 可进行Internet、数据库及多媒体等多方面的程序开发。由于其功能强大、灵活性好、完 全可扩展,以及具有强有力的Internet支持,成为目前最为流行的C+语言集成开发环境。Visual C+6.0分为标准版、专业版和企业版三种,但其基本功能是相同

2、的。下面以 企业版为编程环境,对就如何在Visual C+环境下调试和运行标准C程序进行简单的介绍。图2-1创建新的工程文件2进入Visual C+图2-1创建新的工程文件一、建立个人子目录:第一次上机时先在本地盘(如E:盘)上建立一个以自己学号命名的文件夹,如: 030340136。然后按以下步骤进行操作;二、启动 Visual C+ 6.0:双击Windows桌面上的Visual C+ 6.0图标或单击Windows桌面上“开始”按钮,在 “程序,中选择“Visual C+ 6.0”运行即可。3编辑、编译、运行标准C程序一、创建一个新的工程文件(Project file)1、在Visual

3、 C+的主菜单中单击“文件”菜单,在其下拉菜单中选择“新建”,屏幕上出 现一个“新建”对话框,在该对话框中选“工程”标签,出现“工程”对话框,如图2-1 所示。2、选择工程类型为“Win32Console Application,这时,在 右边的“平台”选框中就会出现 Win 32。3、输入工程名字。在“工程”选 框中输入所指定的工程文件名字, 例如:testl。4、输入路径名。在“位置”选框 中,输入你将要把所建立的工程文 件放人何处的路径名。例如,要将工程文件放在E:盘下已建立好的子目录E:030340136 子目录中,所以该选取路径为:E:030340136test1。选择“确定”按钮,

4、该工程文件已 建立。5、在出现的 “Win32 Console Application” 对话框中选择An Empty project”,建立 一个空的工程文件,并点击“完成”按钮。如图2-2所示;6、系统弹出“新建工程信息”对话框,如图2-3所示,点击“确定”按钮,即可完成工程的创建。一碗走,匚曲不金曲II:tifitCJriCaUQnS:工程目录:* Wo 6、系统弹出“新建工程信息”对话框,如图2-3所示,点击“确定”按钮,即可完成工程的创建。一碗走,匚曲不金曲II:tifitCJriCaUQnS:工程目录:* Wo HhE wHI be eiN0巾 ?r 步*hd to ihe 喷口加

5、I* EwifitypipNcflllvn.二、建立源文件再次选择“File”菜单中的“New”选项,出现如图2-4所示的对话框,在四个标签 中选择“文件”标签,在其中的对话框选项中,选择“C+SourceFile”,并在右边的“添 加工程”的选择框内打勾,激活其下面的选项,然后在“文件”框内输入源文件名(如1st), 单击“确定”按钮,出现编辑屏幕(如图2-5所示),即可在编辑窗口中编写程序。三、编译连接和运行源程序程序编好后要进行编译连接和运行,步骤如下: 1、选择“编译”菜单,单击下拉菜单中的“编译1st.cpp,这时系统开始对当前的源程 序进行编译,在编译过程中,将所发现的错误显示在屏

6、幕下方的“编译”窗口中,如图2-5 所示。根据错误提示,修改程序后再重新编译,如还有错误,再继续修改、编译,直到没有错误为止。2、编译无误后进行链接,这时选择“编译”菜单中的“构件test1.exe”选项。同样, 对出现的错误要进行更改,直到编译链接无错为止。这时,在“编译”窗口中会显示如下 信息:test1.exe- 0 error(s), 0 warning(s),如图2-6所示,说明编译链接成功,并链接信息区图链接信息区图2-6编译链接生成以工程文件名为名字的可执行文件test1.exe。3、运行程序,选择“编译”菜单中的“!执行test1.exe”选项。这时,会出现一个MS-DOS”

7、窗口,输出结果显示在该窗口中(如图2-7所示)。4、运行结束后,可以回到“文件”菜单,点击“关闭工作区”选项,关闭当前文件窗口。 若要编辑新的源程序,可以再次打开“文件”菜单,重新建立工程文件,步骤如上所述;也 可以点击“文件”菜单中的“打开工作区”选项,打开一个已经存在的源文件。图2-7图2-7程序运行的输出结果窗口结果实验一 C语言程序初步一、目的要求1、了解所用计算机系统的基本操作方法,学会独立使用该系统。熟悉C语言程序开 发环境。2、掌握在C语言开发环境中如何编辑、编译、链接和运行C语言程序。3、通过运行简单的程序,熟悉C语言的基本格式规范,并初步了解它的结构特点。二、预习内容1、熟悉

8、VC的编辑环境,了解开发环境中的编辑、编译、连接和运行。2、了解下列命令及函数:include、main、printf、scanf三、实验内容1、输入如下程序,学会在VC下,如何编辑、编译、运行C程序,以及如何查看运行 结果。# include main () printf ( “ & n ” );printf ( “ ” );printf ( “ Hello, this is a C program” );printf ( n” );printf ( “ & n ” );)2、阅读并输入如下程序,分析其功能,查看结果。# include main ( ) int a, b,c,s ;a =

9、5; b = 4; c = 6;s = (a+b + c) / 3;printf ( “ a = %d, b = %d, c = %d n s = %d ”,a, b, c, s );3、下面是一正方形面积的计算程序,通过输入不同的边长,求出不同的面积。# include main () int r, s ;scanf ( “ d ” ,&r );s = r * r ;printf ( “ s = %d ” , s );)注意:程序中含有输入语句,运行时将会停留在另一屏等待输入数据。4、修改以下C程序中的错误# include stdio.hmain ( )int a, b, c ; /* /

10、* a,b,c are sides , v is volume of cube a = 2 ; b= 3 ; c = 5 ;int v ;v = a*b*c ;printf ( “ v = %d ” , v );include main printf ( “* n ” );printf ( * * * n ) printf ( “* n ” );实验二数据类型、运算符和表达式一、目的要求1、掌握C语言数据类型的概念,熟悉如何定义一个整型、字符型、实型变量,以及 如何对它们进行赋值。2、掌握整型、字符型、实型变量数据输出时所用的格式转换符。3、学会使用C的有关算术运算符,正确使用由这些运算符构成

11、的表达式。4、进一步熟悉如何编辑、编译、连接和运行一个C程序。二、预习内容1、各种数据类型变量的定义形式,熟悉下列标识符的定义;int、 short int、 long int、 float、 double float、 char2、常量和变量的异同。三、上机内容1、阅读分析以下程序,上机运行验证结果。分析结果数据。注意:下面有些代码可读性不好,最好不要写这样的代码,当然可能二级考试比较注重这 些语法细节,但是自己写代码的时候,一定要把可读性放在重要的位置上,下面的一些代 码可读性就不是很好#include main () char s1 =3 , s2 =4, s3 =5 ;int c1 =

12、 101, c2 = 102 ; TOC o 1-5 h z printf(“3 %c t 4%ct 5%c n”,s1,s2,s3);printf(“s1= %d ts2= %dt s3= %dn,s1,s2,s3 );printf(“c1= %d t%c ”,c1,c1 );printf(“c2 = %d t %c ”, c2,c2 );)#include main ( ) float x = 8.3, y = 4.2, s;int a = 7;s = x + a % 5 * (int) (xy) % 2 / 3 ;printf ( “ s = %f ” , s ); )#include

13、main () int i, j, p, q;= 3 ; j = 6 ;p = i + + ; q =j ;printf ( %d, %d, %d, %d ” , i, j, p, q );p = i + 3 ; q = + + j 4 ; printf ( d, %d, %d, %d ” , i, j, p, q );)#include main ( ) int m = 15, n = 9, s ;m * = 3 + 2 ;printf ( “ d ” , m );n+= n= n * = n ;printf ( “ %d ”, n );/*逗号表达式的求解过程是:先求解表达式1,再求解表达

14、式2。整个逗号表达式的值是表达式2的值*/printf ( “ %d n ”, (s = 6*5 , m+n+s); printf ( %d n ” , s );)2、请改正以下程序的错误。# include # define MM 40 main ( ); int a = 3; b = 6; t ;t = MM / (3+6 );print ( %d ” , t ,MM );# include main () int m ; double x ; scanf ( “ %ld ” ,&m ); x = 3.14 * m * mprintf ( f ” , x ) ; /*double 类型记得

15、用lf,float 类型用*/ )#include main ( ) int m = 8 , n = 5 ; printf ( %d , m* = mn );/*注:下面的代码需要输出三个值,请修改*/printf ( %d ” , m = m+1, n1, m+n ) ; 3、如下程序将两个数a, b进行交换,请填空完整。#includemain ( ) int a = 9 , b = 5 ;a+= b ;/*执行完后,a的值是a+b*/b = ; /*执行完后,b的值是原本a的值*/a = ; /*执行完后,a中的值是原本b的值*/ printf ( %d %d ”,a,b );实验三顺序

16、结构和输入/输出方法一、目的要求1、掌握C语言中赋值语句的使用。2、掌握数据输入输出函数的使用,能正确使用各种格式转换符。3、熟悉顺序结构程序中语句的执行过程,并学会基本调试程序方法。4、能设计简单的顺序结构程序。二、预习内容1、赋值语句的使用2、scanf函数、printf函数的使用方法。三、上机内容1、改正以下程序的错误#include main () int m = 345 ;float n = 2.56 ;/*修改后输出m的值,n的值,n*100的值*/print ( “ m = %d, n * 100 = %d n, m, n, n*100 )#include main ( ) do

17、uble a, b, c,s,v ;/*输入语句中需要注意的问题*/ scanf ( %d %d %d ”,a,b, c );s = a * b ;v = a * b * c ;print ( %d, %d, %d ”, a, b, c );/*修改后能输出s的值,v的值*/printf ( s=%f n ” ,s,“ v = %d n , v ); )2、程序填空(1)按程序中注释的要求填输出语句。#includemain () int m, n ;float x = 3.5, y = 6.2 ;scanf ( %d , %d ”, &m, &n );printf ( , m, n );/*

18、每个数的输出宽度为6,两数之间逗号间隔。*/printf ( “x = , y = ”, ); /*每个数的输出宽度为7,小数位数为2 */)(2)要求运行时必须按如下格式输入数据,请填空。注:分析好下面的数据类型,然后进行scanf语句的设计下面第一行是int类型,第二行是float,第三、四行是long类型另外,第一行的输入格式不推荐使用,因为对用户并不友好,真正的输入方式应该是用printf语句打印出需要输入什么变量值,然后再进行输入的。 a = 4, b = 84.23, 5.7234567main ( ) int a, b;long m, n ;float p , q ;scanf

19、;scanf;scanf;printf ( “a = %d b = %d n m =%ld n = %ld n ” , a, b, m, n );printf ( “ p = %f, q = %f n ” , p, q );(3)程序编译成功,只是说明没有语法错误,但并不一定能得出正确结果。因 为有可能存在编程逻辑错误。这时候,我们需要跟踪变量、调试程序,找出问题 所在。VC中的调试方式:F9设置断点,F5进入单步调试,F10单步运行,F11单步运行。F10和F11的区别在于,F11能进入函数内部进行单步调试。单步运行如下程序,按要求进行变量踉踪,写出调试结果数据。#includemain (

20、) int i, j, k, ss, m = 1, n = 1;scanf ( “d%d”,&i,&j );/*察看变量i,j取值,读入数据是否正确? */m+ = i + + ;/*观察变量m,i结果值,为什么? */n * =j ;/*观察变量n,j结果值,为什么? */ss = ( k = m+2, n5, k+n );/*观察变量k的结果值*/printf ( “d ”,ss );/*查看最终结果,为什么? */)3、编写程序。用getchar函数读入两个字符c1,c2,然后分别用putchar函数和 printf函数输出这两个字符。并思考以下问题:(c1=getchar();)(1)

21、变量c1,c2应定义为字符型或整型?还是二者皆可?(2)若要求输出c1和c2的ASCII码的十进制值,应如何处理?用putchar函 数还是printf函数?4、编写程序。读入三个数给a,b,c,然后交换它们的取值,把a中原来的数给b, 把b中原来的数给c,把c中原来的数给a。提示:用一个中间变量记录其中某个元素的值。5、.计算定期存款本利之和设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital 元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n 和存款本金capital均由键盘输入提示1:银行定期存款为复利,计算公式为:d

22、eposit = captial义(1+ rate)n提示2:使用函数pow,具体见如下从帮助文档中的摘录double pow(double x,double y);Parametersx : Base.y : Exponent.Example/ crt_pow.c#include #include int main( void )double x = 2.0, y = 3.0, z;z = pow( x, y );printf( %.1f to the power of %.1f is %.1fn”, x, y, z ); )Output2.0 to the power of 3.0 is

23、8.0实验四逻辑运算和选择控制一、目的要求1、掌握C语言表示逻辑量的方法(以0代表“假”,以1代表“真”);2、能够正确使用逻辑运算符和逻辑表达式。3、学会运用逻辑表达式或关系表达式等表示条件。4、熟练掌握if语句和switch语句。5、进一步练习跟踪调试程序,针对具体数据组织输入测试数据,观察程序运行能否 得到预期的输出结果。二、预习内容1、熟悉逻辑运算符和逻辑表达式、关系运算符和关系表达式。2、 熟悉下列语句:if、if 一 else、switch、break、条件运算符?:三、上机内容若a和b均是正整数变量,请改正下列程序段中错误的switch语句。注意:如 果要上机检测,需先编写一简单

24、程序,定义变量,将下列程序段嵌入其中。switch ( a / b )case0 :case5:y = a - b;case1 :case3:y = a + b;break ;)switch ( a*a + b*b ); case 3 :case 1 : y = a + b ; break ;case 0 : y = b - a ; break;)c. switch a default :x = a+b ;:y = a - b ; break ;:x = a *d ; break;)d. switch ( a+b )( case10: x = a+b ;break;casell: y = ab

25、 ;break ;)2、有一函数如下:广 x( 5 x 0 )y = x - 1( x = 0 )J x+1( 0 x 10 )要求输入乂的值,求出y值。下面分别用(1)不嵌套的if语句 (2)嵌套的 if语句编写了程序,请填空将程序完整。注意:写语句的时候,不要这样写if(-5x-5&x0)(1)不嵌套的if语句#includemain() int x, y;scanf(“d”, &x); TOC o 1-5 h z if y=x ;if y=x1;if y=x+1;printf(“d”,y);)(2)嵌套的if语句注意:下面的写法虽然能实现功能,但是,不是好的写法。规范的程序写法应该 是在

26、适当的地方加上大括号,即使是只有一条语句,这样程序的可读性才好#includemain() int x, y ;scanf(“d”,&x);if(x5)&(x0) ;else if y = x 1 ; y = x+1 ; printf(“d”,y);)3、如下程序运用条件运算符求变量的绝对值,请填空将程序完整。#includemain () int a , M ; scanf ( “ d ”, &a );M = ? : ; printf ( “ abs (a) = %d ” , M );)4、已知三个数a,b,c,编写程序找出最大值,放于max中。输入下列几组数据分 析调试程序,观察程序执行顺

27、序并写出运行结果。 TOC o 1-5 h z a=1,b=2,c=3a=2,b=1,c=3a=3,b=2,c=1a=3,b=1,c=2a=3,b=3,c=2a=2,b=1,c=2 5、编程题:从键盘输入三个数,分别让它们代表三条线段的长度,请编写程序,判断由这三条线段所组成的三角形将属于什么类型(不等边,等腰,等边或不构成三角形)。6、(选做题)编程:定义一个不多于4位的正整数,要求:求出它是几位数; 按逆序打印出每一位数字,例如原数357输出753。提示:(这道题用循环做比较方便,否则结构比较混乱)(1)判断位数:方法一:使用循环判断数字位数,循环体内使用除法,每次除以10,得到商,当商为

28、0的时候,可以知道循环结束,得到该正整数的位数方法二:因为题目条件,不多于4位数,所以可以直接进行判断,比如如 果在100到999之间的数就是3位数(2)按逆序打印出每一位数字:使用%运算符,可以逆序分离出每个数字(每次除以10得到的余数)实验五循环结构一、目的要求.练习并掌握利用while语句、for语句、do_while语句实现循环结构的方法;.掌握循环结构和选择结构的嵌套设计方法,以及多重循环的设计方法;.掌握控制语句break、continue语句的使用方法。二、预习内容.循环结构语句while语句、for语句、do_while语句等的基本使用方法;.循环和选择结构的嵌套方法、及多重循

29、环的设计方法;.控制语句break、continue语句的使用方法;.循环结构中的循环起始终止条件以及循环变量的使用;三、上机内容.调试以下程序,分别输入5和6,以单步跟踪的方式运行程序,观察循环中命令 的执行及转向情况,并记录程序的运行结果。#includemain() int n;/*永循环,一般永循环中应该有break语句用于在适当的时候结束循环*/while (1) printf(Enter a number:);scanf(%d,&n);if (n%2=1) printf(I said);continue;)break;)printf(Thanks. I needed that!);

30、).以下程序的功能是:假设树高k厘米,小蚕每天白天向上爬m厘米,每天晚上因睡 觉向下滑n厘米,爬到顶后不再下滑(nmk)。计算小蚕需要多少天才能爬到树顶?请勿改动程序中现有的任何内容,在花括号中注明处补充编写若干语句,使程序完整。 要求使用循环语句完成。(编写程序的时候要注意,小蚕是白天爬上去的,只要爬到顶了, 晚上就不会再滑下来,所以,最后一天,不用再减去晚上滑下的距离了!因此爬到顶后, 回顾一下,会发现爬的天数比滑下来的天数要多一的)测试数据:若分别给k、m、n输入253、71、29,则输出结果应为6。若分别给k、m、n输入72、71、29,则输出结果应为2。若分别给k、m、n输入100、

31、120、90,则输出结果应为1。#include main()int k, m, n, day=0;printf(nPlease enter 3 numbers:);scanf(%d%d%d, &k, &m, &n );/*在此处编写若干语句,使程序完整*/)printf( nFor %d days, worm will be at the top.”,day);).使用循环语句编程,输出下三角形状的九九乘法表(见下图)。*12345678911224336944812165510152025661218243036771421283542498816243240485664991827364

32、554637281九九乘法表注意:双重循环,并且可以用%5d这样的格式控制进行输出控制实验六数组一、目的要求.掌握一维数组与二维数组的定义、使用及初始化方法。.学习数组作为函数参数的用法。.掌握字符数组和字符串函数的使用方法。.掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。二、预习内容.一维数组与二维数组的定义、使用及初始化方法;.字符数组和字符串函数的使用方法;三、上机内容.以下程序的功能是:设数组xx(有n个元素),求出其中偶数和奇数的个数分别是 多少。.以下程序的功能是:对a数组中n种商品价格进行分段统计,商品各段价格的数 目存到b数组中;其中:价格为100元以下的个数存

33、到b0中,价格为100元到199 元的个数存到b1,价格为200元到299元的个数b2,价格为300元到399元的 个数存到b3,价格为400元到499元的个数存到b4,价格为500元以上的个数b5 中。例如,当 a 数组中的数据为:90、180、270、380、590、530、140、750、380 时;调用该函数后,b中存放的数据应是:1、2、1、2、0、3。请勿改动程序中原有的任何内容,仅在花括号中注明处编写若干语句使程序完整。 提示:(1)涉及到数组,肯定要考虑到用循环使程序的编写简单,而有固定次数的循环用for 比较方便(2)分析该题要求,给b数组元素进行赋值的时候,可以用if语句做

34、简单的判断,这 是一种想法,没有问题,但是不够简洁。经过分析,可以发现,只有b5比较特殊,别的 都可以用将价格除以100,得到的商就决定了其价格区间。比如299/100得到的商是2,就是要给b2+,因此代码可以在用if语句排除b5后,简单的写为bai/100+;由于b数组是作为累加存在的,所以,不要忘记为其里面的每个元素赋初值为0。#include main() int i, a100 = 90, 180, 270, 380, 590, 530, 140, 750, 380, b6;/*在此处编写若干语句,使程序完整*/printf(The result is:);for (i=0; i6;

35、i+) printf(%d , bi);printf(n);. a是一个M行N列的整数矩阵,编写程序求出此矩阵周边元素之和。 例如:矩阵的值为 TOC o 1-5 h z 13579a= 299946999813570则结果值为61。提示:(1)用二维数组arrMN存放该矩阵(2)在二重循环中将该矩阵读入(3)分别用四个一重循环,求出矩阵四个边的和,再累加就可以了实验七函数一、目的要求.掌握C语言中定义和调用函数的方法。.理解和掌握多模块的程序设计与调试的方法。.掌握函数嵌套调用和递归调用的方法。.掌握函数实参与形参的对应关系以及通过“值传递”调用函数的方法。.理解变量作用域和存在期的概念,掌

36、握全局变量和局部变量的定义和使用方法。二、预习内容. C语言中定义和调用函数的方法;.函数嵌套调用和递归调用的方法;.函数实参与形参的对应关系以及通过“值传递”调用函数的方法;.全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法;.函数的单步调试。三、上机内容.输入以下程序并执行,观察程序的运行结果。#include int a=3,b=5;max(int a,int b)int c;c=ab?a:b;return (c);)main()printf(%dn”,max(a,b);)(1)在主函数的printf语句前加入int a=8;语句后重新执行,观察其运行结果。分析变量a的作用域

37、,程序修改前后两次调用max函数时的实参a是否为同一变量?(2)将int a=3,b=5;以及int a=8;语句删除,主函数改为: main()extern int a,b;printf(%dn”,max(a,b);)int a=3,b=5;运行并观察其结果。(3)若将关键字extern去掉再运行,观察结果有何变化?.编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是 素数的信息。要求:(1)编写一个函数prime(n),返回给定整数n是否为素数。(2)编写一个主函数,输入一个整数,调用(1)中的函数,判断此整数是否为素 数,并输出结果。实验八指针一、目的要求.掌握指针的

38、概念、指针变量定义格式和引用;.掌握指针的运算方法;.掌握数组的指针和指向数组的指针变量;二、预习内容指针变量的定义格式、赋值、各种操作(存储单元的引用,移动指针的操作,指针的 比较),取地址运算符(&)和间接运算符(*)的功能,数组元素的多种表示形式。指针是一种特殊的变量,它具有变量的三要素(名、值、类型),特别要注意指针的 值及(基)类型。指针的值是某个变量的地址值,它的(基)类型是它所指向的变量的类 型。-说明符,说明某一变量是指针 对变量取地址三、上机内容.改错,修改下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4 个数输出。(提示:应该先让p指向数组a的首地址)#inc

39、lude main() int j,k,a12,*p;for(j=0;j12;j+)scanf(“d”,p+);for(j=0;j12;j+) printf(“d”,*p+);if(j%4=0)printf( “n”);)写出运行结果:.上机验证下列程序的运行结果,使之具有如下功能:输入3个整数,按由小到大 的顺序输出。#include main() int n1,n2,n3;int *p1,*p2,*p3;printf( “input three integers n1,n2,n3:” );scanf(d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if

40、(n1n2) swap(p1,p2);if(n1n3) swap(p1,p3);if(n2n3) swap(p2,p3);printf(“Now,the order is: %d %d %d n”,n1,n2,n3);)swap(int *p1,int *p2) int p;p=*p1;*p1=*p2;*p2=p;)写出运行结果:.指出以下程序问题所在(程序功能:输出a数组的10个元素)。#include main()int a10;int *p,i;p=a;for(i=0;i10;i+)*p=i;p+;)for(i=0;i10;i+;p+)printf(“ d”,*p);)这道题输出结果不是

41、09,原因是指针变量P的初值为a的首地址,但经过第一循环 后,P已指向a数组末尾。因此,在执行第二个循环时,P的地址不再是&a0,修改应在 第二个循环前加上一句:将数组名a重新赋值给指针变量P (请自己用一条语句完成)。写出输出结果:.下面的程序是用来从键盘输入十个整数,然后求出其中的最小值。填写空缺部分。#include void lookup(int *t,int *a,int n) int k;*a=t0;for(k=1;kn;k+)if () *a=tk;)main()int table10;int k,min,*p=&min;for(k=0;k10;k+)scanf( “ %d”,t

42、able+k);lookup(, ,10);printf( min=%dn” ,min);).选择填空,再上机验证。程序功能:建立一个如下所示的二维数组,并按以下格式输出。请从对应的一组选 择项中,选择正确的填入。 TOC o 1-5 h z 10001010100010001010#includemain()int a55 = 0,*p5,i,j;for(i=0;i5;i+) pi=;for(i=0;i5;i+)*(pi+)=1;/*从左上角到右下角的斜线*/*(pi+5-)=1;/*从左下角到右上角的斜线*/)for(i=0;i5;i+)for(j=0;j5;j+)printf(2d”,p

43、ij);printf(n);)A) &ai0B)&ai1C) &piD)&a0iA) 0B)1C) iD)(i+1)A) 0B)1C) iD)(i+1)的正确答案:的正确答案:的正确答案:实验九结构体与公用体一、目的要求(1)掌握结构体类型变量的定义和使用。(2)掌握结构体类型数组的概念和使用。(3)掌握公用体的概念与使用。二、实验内容(1)输入程序并运行,观察运行结果#include “stdio.h int main() struct cmplx int x;int y; cnum2 = 1 , 3 , 2 , 7);printf(“dn,cnum0.y / cnum0.x * cnum1

44、.x );return(0); )运行结果:6(2)输入程序并运行,观察运行结果union ks int a;int b;);unionkss4;unionks*p;#include stdio.hint main() int n=1, i;printf(n);for(i=0;ia);printf(d ,+ p-a);return(0); )运行结果:2, 3(3)编写程序有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学 生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3 门课成绩、平均分数)。要求用input函数输入10个学生数据;用a

45、verage函数求总平 均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输 出。/* Note:Your choice is C IDE */#define SIZE 10#define SIZE1 10#define P printf#define S scanf#include stdio.hstruct yeet long int a;char b8;float c;float d;float e;pcxSIZE;void input(struct yeet pcxSIZE,int n) int i;for(i=0;in;i+)P (请输入第(个人的学号n,

46、i+1);S(%ld”,&pcx.a);P (请输入第(个人的姓名n,i+1);S(%s”,pcx.b);P (请输入第%d个人的语文成绩n,i+1);S(%f”,&pcx.c);P (请输入第%d个人的数学成绩n,i+1);S(%f”,&pcx.d);P (请输入第%d个人的英语成绩n,i+1);S(%f”,&pcx.e); return;float average(float x,int y) float average;average=x/y;return(average);)int max(struct yeet pcxSIZE,int y) int i,t;float sumSIZE

47、,max=-32768;for(i=0;iy;i+)sum=pcx.c+pcx.d+pcx.e;for(i=0;imax) max=sum,t=i;return(t);)void main()int n,t,i;float aSIZE1,sum=0;P(请输入学生人数:n);S(%d,&n);input(pcx,n);for(i=0;in;i+)sum=sum+pcx.c;a0=average(sum,n);P(语文的平均成绩是%/,0);sum=0;for(i=0;in;i+)sum=sum+pcx.d;a1=average(sum,n);P(数学的平均成绩是%/,1);sum=0;for(

48、i=0;idata.num,,p-data.sex, p-data.phone,p-data.addr);InsertNode(head,p);break;printf(*n);printf(*通讯录信息的查询*n);printf(*n);p=ListFind(head);if (p!=NULL) printf (编号姓名性别联系电话地址n);printf(n);printf(%s,%s,%s,%s,%sn”,p-data.num,, p-data.sex,p-data.phone,p-data.addr);printf(n);)elseprintf

49、(没有查到要查询的通讯者! n);break;printf(*n);printf(* 通讯录信息的删除*n);printf(*n);DelNode(head); 删除结点 break;printf(*n);printf(*通讯录链表的输出*n);printf(*n);printList(head);break;case 0:printf(t 再见! n);return;) TOC o 1-5 h z /*菜单选择函数程序*/int menu_select()int sn;printf(通讯录管理系统n);printf(=n);printf(1.通讯链表的建立n);printf(2.通讯者结点的

50、插入/);printf(3.通讯者结点的查询n);printf(-4.通讯者结点的删除n);printf(5.通讯录链表的输出n);printf(-0.退出管理系统n);printf(=n);printf(请选择 0-5: ”);for(;)scanf(%d”,&sn);if (sn5)printf(nt输入错误,重选 0-5:); elsebreak;) return sn;)/*用尾插法建立通讯录链表函数*/LinkList CreateList(void)/尾插法建立带头结点的通讯录链表算法LinkList head=(ListNode *)malloc(sizeof(ListNode)

51、; /申请头结点ListNode *p,*rear;int flag=0;结束标志置0rear=head; 尾指针初始指向头结点while (flag=0) p=(ListNode *)malloc(sizeof(ListNode); 申新结点printf(编号(4)姓名(8)性别电话(11) 地址(31)n);printf(n);scanf(%s%s%s%s%s”,p-data.num,,p-data.sex,p-data.phone, p-data.addr);rear-next=p;新结点连接到尾结点之后rear=p;尾指针指向新结点printf(结束建表吗?(1/

52、0):);scanf(%d”,&flag);)rear-next=NULL;终端结点指针置空return head;返回链表头指针)/*在通讯录链表head中插入结点*/void InsertNode(LinkList head,ListNode *p)ListNode *p1,*p2;p1=head;p2=p1-next;while(p2!=NULL & strcmp(p2-data.num,p-data.num)next; p2指向表的下一个结点)p1-next=p;插入p所指向的结点p-next=p2;连接表中剩余的结点)/*有序通讯录链表的查找*/ListNode *ListFind(

53、LinkList head)/有序通讯录链表上的查找ListNode *p;char num5;char name9;int xz;printf(=n); TOC o 1-5 h z printf(- 1.按编号查询n);printf( 2.按姓名查询n);printf(=n);printf(请选择:);p=head-next; 假定通讯录表带头结点 scanf(%d”,&xz);if (xz=1) printf(请输入要查找者的编号:); scanf(%s”,num);while (p&strcmp(p-data.num,num)next;if (p=NULL)|strcmp(p-data.

54、num,num)0;p=NULL;没有查到要查找的通讯者)elseif (xz=2) printf(请输入要查找者的姓名:);scanf(%s”,name);while(p&strcmp(,name)!=0) p=p-next;)return p;) TOC o 1-5 h z /*通讯录链表上的结点删除*/ /void DelNode(LinkList head)char jx;ListNode *p,*q;p=ListFind(head);调用查找函数if (p=NULL) printf(没有查到要删除的通讯者!n); return;)printf(真的要删除该结点吗

55、? (y/n) :);scanf(%c”,&jx);if (jx=y|jx=Y) q=head;while (q!=NULL) &(q-next!=p)q=q-next;q-next=p-next;删除结点free(p);释放被删结点空间printf (通讯者已被删除! n);) TOC o 1-5 h z /*通讯录链表的输出函数*/void printList(LinkList head)ListNode *p;p=head-next;printf(编号姓名 性别联系电话地址n);printf(n);while (p!=NULL) printf(%s,%s,%s,%s,%sn”,p-dat

56、a.num,,p-data.sex,p-data.phone,p-data.addr);printf(n);p=p-next;后移一个结点)附录实验报告编写规范实验报告是对实验工作的全面总结,如实记录实验的操作过程和实验中观测到的情 况,并分析实验的结果,要对实验的目的、原理、任务、设备、过程和分析等主要方面进 行明确的叙述。软件实验撰写实验报告的主要工作是如实记录实验的操作过程、程序源代码以及实验 测试时输入的数据和观测到的输出结果。为了保证整理后的数据的可信度,实验报告中必 须保留原始记录数据。止匕外,实验报告中还应包括实验中发现的问题、现象及对结果的分析、实验的收获和 心得体会,并回答思考问题。实验报告最重要的部分是实验总结,它是实验的成果。是对实验过程的分析和总结, 其中所作出的结论必须有科学根据和来自理论及实验的分析。1、验证性实验的实验报告编写规范,应该包括以下几部分内容:一、实验的目的和要求写明实验的目的及各项要求。二、实验内容、步骤及实验结果写明实验的题目内容、完成的步骤、编程思路的流程图以及部分核心源代码,并 附有程序段的简要注释,并如实记录实验测试用到的输入数据和运行结果的输出数据。 三、分析与总结认真对本此实验中的收获、存在的问题或观测到的结果进行分析,对整个实验进 行全面总结,并写出自己对本次实验的

温馨提示

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

评论

0/150

提交评论