版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言程序设计》
实验指导书丁丽郭萌萌张吉玲编目录TOC\o"1-5"\h\z\o"CurrentDocument"实验ー C程序的运行环境和运行C程序的方法 3\o"CurrentDocument"实验ニ数据类型、运算符和表达式 10\o"CurrentDocument"实验三 最简单的C程序设计 15\o"CurrentDocument"实验四逻辑结构程序设计 21\o"CurrentDocument"实验五循环结构程序设计 27\o"CurrentDocument"实验六数组 32\o"CurrentDocument"实验七函数 40\o"CurrentDocument"实验ハ编译预处理命令 46\o"CurrentDocument"实验九指针 51\o"CurrentDocument"实验十结构体和共同体 55\o"CurrentDocument"实验十一位运算 59\o"CurrentDocument"实验十二文件 62实验ーC程序的运行环境和运行C程序的方法ー、实验目的了解所用的计算机系统的基本操作方法,学会独立使用该系统。了解在该系统上如何编辑、编译、连接和运行一个C程序。(3)通过运行简单的C程序,初步了解C源程序的特点。二、实验内容(D检查所用的计算机系统是否已安装了c编译系统并确定它所在的子目录。(2)进入所用的集成环境。(3)熟悉集成环境的界面和有关菜单的使用方法。(4)输入并运行ー个简单的、正确的程序。(5)输入并编辑ー个有错误的C程序。(6)输入并运行ー个需要在运行时输人数据的程序。(7)运行一个自己编写的程序。题目是教材第1章的习题1.6。即输入a、b、c3个值,输出其中最大者。三、实验步骤和实验结果(D检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录。(2)进入所用的集成环境。如果用户计算机系统已经安装了TurboC编译系统,则在DOS命令状态下键入命令tc。进入TurboC集成环境后,首先在屏幕上显示TurboC主菜单窗口,如下图所示。
(3)熟悉集成环境的界面和有关菜单的使用方法。可以看出,在该窗口,有8个菜单条目。各菜单的意义:File处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS〇②Edit建立、编辑源文件。③Run控制运行程序。如果程序已经编译连接好,且Debug/SourceDebugging以及Option/Compiler/Codegeneration/OBJDebugInformation开关置为On,则可以用此菜单初始化调试阶段。©Compile编译并生成目标程序与可执行文件。⑤Project允许说明程序中包含哪些文件的管理条目。©Options可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录IncludeOutput及Library文件目录,保存编译任选项和从配置文件加载任选。⑦Debug检查、改变变量的值,査找函数,程序运行时査看调用栈。选择程序编译时是否在执行行代码中插入调试信息。⑧Break/Watch增加、删除、编辑监视表达式,及设置、清除、执行至断点。特别要指出的是,除了Edit项外,每ー个菜单又有对应的子菜单。而选择Edit项目后,只是进入编辑器。菜单的选择:为了从主菜单中选择所需要的功能,可以用以下两种方式之・•:①按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(一与f)选择需要的菜单,然后按回车(Enter)键。②直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,0,D,B),此时就会出现相应的子菜单。例如,按Alt+F表示选择文件子菜单(File)。当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(t与!)来移动该高亮度线,从而选择所需要的功能。在菜单调用时,按Esc键后将直接返回到活动窗口。(4)输入并运行ー个简单的、正确的程序。输入下面的程序(教材第1章例1.1):ttinclude<stdio.h>voidmain()I:print—Thisisacprogram.\n,z);本程序的作用是输出以下一行信息:Thisisacprogram.保存文件:输入完成之后,按F2键,弹出ー个对话框,在对话框中输入文件名,如:program1.〇〇②根据本书第二部分介绍的方法对源程序进行编译,观察屏幕上显示的编译信息如果出现“出错信息”,则应找出原因并改正之,再进行编译,如果无错,则进行连接。③如果编译连接无错误,按Ctrl+F9运行程序,如果没有报错,可以按Alt+F5査看运行结果,再按空格键回到编辑窗口。④退出TC程序:按Alt+X键,弹出对话框,提示是否真的要退出TC,如果输入Y就会退出TCo⑤打开已经存在的文件:按F3,弹出下列对话框。在该对话框中,输入文件名即可。(5)输入并编辑ー个有错误的C程序。①输入以下程序(教材第1章中例L2,故意漏打或打错儿个字符)。^include<stdio.h>voidmain(){inta,b,suma=123;b=456;sum=a+bprint(,zsumis%d\n",sum");②进行编译,仔细分析编译信息窗ロ,可能显示有多个错误,逐个修改,直到不出现错误。最后请与教材上的程序对照。③使程序运行,分析运行结果:本程序的作用是求两个整数a和b之和sum。第2行是声明部分,定义变量a和b,指定a和b为整型(int)变量。第3行是两个赋值语句,使a和b的值分别为123和456。第4行使sum的值为a+b,第5行中“%d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式(详见第4章),“%d”表示“以十进制整数形式输出”。在执行输出时,此位置上代以ー个十进制整数值。printf函数中括弧内最右端sum是要输出的变量,现在它的值为579(即123+456之值)。因此输出一行信息为sumis579(6)输入并运行ー个需要在运行时输人数据的程序。①输入下面的程序:#include<stdio.h>voidmain(){intmax(intx,inty);inta,b,c;printf(""inputa&b:");scanf("%d,%d”,&a,b);c=max(a,b);printf("max=%d\n〃,c);)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);②编译并运行,在运行时从键盘输入整数2和5,然后按“回车”键,观察运行结果(运行结果是max=5,输出两数中的较大数)。(7)运行一个自己编写的程序。题目是教材第1章的习题1.6。即输入a、b、c3个值,输出其中最大者。①输入自己编写的源程序。参考程序:#include<stdio.h>main(){inta,b,c,max;printf("inputa&b&c:");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(maxくc)max二c;printf("max二%d\n〃,max);)②检查程序有无错误(包括语法错误和逻辑错误),有则改之。③编译和连接,仔细分析编译信息,如有错误应找出原因并改正之。④运行程序,输人数据,分析结果。运行结果:inputa&b&c:6,5,1max=6⑤自己修改程序(例如故意改成错的),分析其编译和运行情况。⑥将调试好的程序保存在自己的用户目录中,文件名自定。⑦将编辑窗口清空,再将该文件读人,检查编辑窗口中的内容是否刚オ存盘的程序。⑧关闭所用的集成环境,用Windows的“我的电脑”找到刚オ使用的用户子目录,浏览其中文件,看有无刚オ保存的后缀为.c和.exe的文件。实验ニ数据类型、运算符和表达式ー、实验目的掌握C语言数据类型,熟悉如何定义ー个整型、字符型和实型的变量,以及对它们赋值的方法。掌握不同的数据类型之间赋值的规律。学会使用C的有关算术运算符,特别是自加(++)和自减(--)运算符的使用。了解包含这些运算符的表达式的运行结果进••步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容C语言的基本数据类型(整型、字符型和实型)变量的定义与赋值方法。C语言丰富的运算符及表达式三、实验步骤和实验结果.写出以下程序运行的结果。main()(charcl='a',c2=9b',c3='c',c4=9\101',c5='\116,;printf(,za%cb%c\tc%c\tabc\nz,,cl,c2,c3);printf(*\t\b%c%c^,c4,c5);)程序的运行结果为:aabbcccabcAN.写出程序的运行结果。
main()/*定义字符型变量main()charcl,c2;cl=97;c2=98;printf(,z%c%c\n”,cl,c2);printf(,z%d%d\n”,cl,c2);)运行结果:ab9798思考:可否改成intcl,c2;?可以,因为在可输出的字符范围内,/・向字符变量赋以整数*//・以字符形式输出・//・以整数形式输出・/用整型和用字符型作用相同。.要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此“China”应译为“Glmre”。请编ー程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为’C‘/・向字符变量赋以整数*//・以字符形式输出・//・以整数形式输出・/用整型和用字符型作用相同。c3、c4、c5分别变为‘G‘、T、‘m’、’r‘、‘e',并输出。main()charcl='C,c2='h',c3='i',c4='n',c5='a';/・字符型变量初始化*/cl+=4; /・字符型变量可与整数进行算术运算・/c2+=4;c3+=4;c4+=4;c5+=4;printf("Secretcode:%c%c%c%c%c\n",cl,c2,c3,c4,c5);).写出程序运行结果。main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d”,i,j,m,n);)运行结果:9,11,9,10思考:m=++i;与m=i++:的相同之处与不同之处?++i与i++的作用相当于i=i+1;但不同之处在于++i是先执行i=i+1之后,再使用i的值;而i++是先使用i的值后,再执行i=i+lo.下列程序的输出是main()(inta=7,b=5;printf(飞d\n",b=b/a); /・输出赋值表达式的值・/)输出结果是零。.下列程序的输出是main()inta=011; /・ハ进制整常量赋给a*/printf("刎、n”,++a); /・先自加,再使用a值・/)运行结果是10o.若int类型数据占两个字节,则下列语句的输出为main(){intk=—1;printf("%d,%u\n",k,k);)程序运行结果是T,65535思考:一1在内存中的存储形式?.下列程序的运行结果是#include<stdio.h>main(){printf("%d",null);)运行情况:因为变量null无定义,无法正确运行。思考:如将null改为NULL,则结果如何?.若k,g均为int型变量,则下列语句的输出为main()
intk,g;k=017intk,g;k=017;g=Ul;printf(*%d\t*printfC%x\n,z)运行结果为:166f/・此处为十进制常量・/++k); /・以十进制输出表达式++k的值・/g++); /・以十六进制输出表达式g++的值・/实验三最简单的C程序设计ー、实验目的(1)掌握c语言中赋值语句的使用方法。(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。二、实验内容(1)掌握各种格式转换符的正确使用方法。(2)编写习题3.7并上机运行。三、实验步骤和实验结果,若a=3,b=4,c=5,x=l.2,y=2.4,z=-3.6,u=51274,n=128765,cl=,a',c2=’ビ。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下:a=-3-b=_4一c=15x=l.200000,y=2.400000,z=-3.600000x+y=_3.60__y+z=-L20_z+x=-2.40u=151274一n=1_128765cl='a'„or„97(ASCII)c2='b'„or„98(ASCII)编程:main()(inta,b,c;longintu,n;floatx,y,z;charcl,c2;
a=3;b=4;c=5;x=l.2;y=2.4;z=-3.6;□=51274;n=128765;cl=,a,;c2='b,;printf("\n");printf(〃a=%2db=%2dc=%2d\n”,a,b,c);printf(〃x=%8.6f,y=%8.6f,z=%9.6f\nz/,x,y,z);printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n〃,x+y,y+z,z+x);printf(z/u=%61dn=%91d\n”,u,n);printf(zzcl=,%c'or%d(ASCII)\nzz,cl,cl);printf(〃c2='%c'or%d(ASCII)\nzz,c2,c2);)思考:程序最后两行的printf语句中,在〃〃内部即格式控制部分,哪些属原样输出的普通字符?哪些属要输出数据的格式说明?.请写出下面程序的输出结果:main()Iinta=5,b=7;floatx=67.8564,y=-789.124;charc='A';longn=1234567;unsignedu=65535;printf(zz%d%d\nzz,a,b);printf(zz%3d%3d\nzz,a,b);printf(〃証,printf(〃証,%f\nzz,x,y);/・以各种小数形式输出实数・/printf(*%—lOf,%—10f\n/z,x,y);printfC%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);printf(w%e,%10.2e\n/z,x,y); /・以指数形式输出实数・/printfC%c,%d,%〇»%x\n\c,c,c,c); /・以各种形式输出字符变量的值*/printf(*%ld,%lo,%x\n”,n,n,n);printf(z,%u,%o,%x,%d\n”,u,u,u,u); /・以无符号十进制、ハ进制、十六进制,带符号十进制形式输出u值・/printf("版,%5.3s\n","COMPUTER","COMPUTER");/・输出字符串・/)运行结果:57767.856400,-789.12402367.856400,-789.124023-789.12,67.856400,-789.124023,67.856400,-789.1240236.785640e+01,-7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER,COM思考:解释倒数第三个printf语句的输出结果。printf("%ld,%lo,%x\n",n,n,n);一句中格式控制符%Id指输出长整型数据(32位),即输出1234567;%1。指按照ハ进制输出长整型(无符号、32位),1234567转换成ハ进制即是4553207;%x是指将结果转换成十六进制输出,但要注意,这里少了修饰符1.所以是指将数据转换成十六进制(结果是12d687)后,只输出低16位(截断),即d687。3.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=7L82,cl='A',c2='a'。问在键盘上如何输入?main(){inta,b;floatx,y;charcl,c2;scanf(z,a=%db=%d〃,&a,&b);scanfC%f%e”,&x,&y);scanfC%c%c〃,&cl,&c2);printf(〃a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\n〃,a,b,x,y,cl,c2);)可按如下方式在键盘上输入:a=3b=7/8.571.82/Aa/a=3,b=7,x=8.500000,y=71.820000,cl=A,c2=a思考:为什么在第三个scanf函数双引号第一个字符为空格字符,如果没有这个空格字符,而写成:scanf(〃枇%c\&cl,&c2); 按以上的输入,输出将如何变化?答案:将变为:a=3,b=7,x=8.500000,y=71.820000,cl=,c2=A这是因为在输入完第二行数据后按的回车键被作为一个字符送到内存输入缓冲区中,因此第三个scanf函数中的第一个变量c!读入了回车符(实际上是回车符的ASCII码)。第三行输入的第一个字符A被c2读取,所以在执行printf函数输出cl时,就输出ー个回车符,输出c2时就输出字符A。我们在程序第三个scanf函数双引号中第一个字符处放了一个空格字符,这样第二行末尾输入的回车符就不会输入给C1,而是与该空格字符对应,第三行输入的第一个字符A就被cl读取。也可以不在scanf函数中加空格,而在第三个函数前加一个getchar函数:getchar();(注意要相应地在程序开头加:#include<stdio.h>)用它将前面的回车符“吃掉”。在一个函数中的如果有儿个scanf函数,在输入数据时往往会出现ー些想象不到的情况(例如前面碰到的情况),其中一个重要的原因就是由回车符引起的。C语言很灵活,书上不可能把一切细节都讲到,读者在遇到类似情况时,上机多试验•下就可以找出规律来。4.设圆半径r=L5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序。main()(floatpi,h,r,1,s,sq,vq,vz;pi=3.1415926;printf(/zinputr,h:\n"); /・输入半径和高・/scanf("%f,%f/z,&r,&h); /・求圆周长・/l=2*pi*r; /・求圆面积・/s=r*r*pi; /・求圆球表面积・/sq=4*pi*r*r; /・求圆球体积・/vq=4.0/3.0*pi*r*r*r; /・求圆柱体积・/vz=pi*r*r*h;printf(*1=%6.2f\n*»1);printf("s=%6.2f\n”,s);printf("sq=%6.2f\n”,sq);printf(*vq=%6.2f\n*,vq);printf(Z,vz=%6.2f\nzz,vz);)运行结果:inputr,h:1.5,3/1=9.42s=7.07sq=28.27vq=14.14vz=21.21实验四逻辑结构程序设计ー、实验目的⑴了解C语言表示逻辑量的方法(以〇代表"假",以非〇代表"真")。(2)学会正确使用逻辑运算符和逻辑表达式。(3)熟练掌握if语句和switch语句。(4)结合程序掌握ー些简单的算法。⑸学习调试程序。二、实验内容本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行。.有・函数:y=,写ー程序,用scanf函数输入x的值,求y值。.给出ー百分制成绩,要求输出成绩等级'A'、,B'、,C‘、’D‘、空’。90分以上为‘A',80~89分为‘B',7〇〜79分为‘C',6〇〜69分为‘D',60分以下为'E'。要求分别用if语句和switch语句实现。.给,ー个不多于5位的正整数,要求:①求出它是儿位数;②分别打印出每ー位数字:③按逆序打印出各位数字,例如原数为321,应输出123。三、实验步骤和实验结果.有一函数:y=,写ー程序,用scanf函数输入x的值,求y值。main(){intx,y;printf(,zinputx:つ;scanf("%d”,&x);if(x<l) /・当xVl时,求对应y值・/y=x;printf("x=%3d,y=x=%d\n”,x,y);elseif(x<10) /・当1くxVlO时,求对应y值・/(y=2*x—1;printf("x=%3d,y=2*x—l=%d\n”,x,y);)else /・当x210时,求对应y值・/(y=3*x—11;printfCx=%3d,y=3*x-ll=%d\nw,x,y);})运行结果:inputx:20/x=20,y=3*x-ll=49.给出ー百分制成绩,要求输出成绩等级‘A‘、,B‘、<‘、ヤ‘、空’。90分以上为‘A',80~89分为‘B',7〇〜79分为’C',6〇、69分为‘D',60分以下为'E’。要求分别用if语句和switch语句实现。用if语句实现:main()(intx;printf(,zpleaseinputyourgrade\nv);scanfぐ’%d",&x);if(x>=90&&x<=100)printf("A\n");elseif(x>=80&&x<=89)printf("B\n");elseif(x>=70&&x<=79)printf("C\n");elseif(x>=60&&x<=69)printf(〃D\n");elseif(x>=0&&x<60)printf;elseprintf("error\n");}用switch语句实现:mainO(inta,s;printf("pleaseinputyourgrade\n");scanf("%dzz,&s);if(s==100)a=9;elsea=s/10;switch(a)(case0:case5:printf(〃E\n〃);break;case6:printf(/zD\nzz);break;case7:printf(zzC\n,z);break;case8:printf(z,B\nzz);break;case9:printf(zzA\n,z);break;default:printf(zzerror\nzz);))运行结果:Pleaseinputyourgrade:91A3.给ー个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每ー位数字;③按逆序打印出各位数字,例如原数为321,应输出123。main()Ilongintnum;intindiv,ten,hundred,thousand,ten_thousand,place;printf(zzinput0—99999:〃);scanf("%ld〃,&num);if(num>9999)place=5;elseif(num>999)place=4;elseif(num>99)place=3;elseif(num>9)place=2;elseplace=l;printf(〃place=%d\n〃,place); /・输出位数・/printf("shuziis:");ten_thousand=num/10000;/・以下五行分别求万位、千位、百位、十位、个位数字・/thousand=(int)(num—ten_thousand*10000)/1000;hundred=(int)(num—ten_thousand*10000—thousand*1000)/100;ten=(int)(num—ten_thousand*10000—thousand*1000—hundred*100)/10;indiv=(int)(num—ten_thousand*10000—thousand*1000—hundred*100—ten*10);switch(place) /・根据位数判断应该输出哪儿位数字・/{case5:printf(z,%d,%d,%d,%d,%d〃,ten_thousand,thousand,hundred,ten,indiv);/・正序输出・/printf("\ninvertis:〃);printf(z/%d%d%d%d%d\nzz,indiv,ten,hundred,thousand,ten_thousand);/・逆序输出・/break;case4:printf(z,%d,%d,%d,%a,thousand,hundred,ten,indiv);printf(zz\ninvertis:zz);printf(zz%d%d%d%d\n,z,indiv,ten,hundred,thousand);break;case3:printf(,z%d,%d,%d〃,hundred,ten,indiv);printf("\ninvertis:〃);printf(〃%d%d%d\n〃,indiv,ten,hundred);break;case2:printf(〃%d,%d〃,ten,indiv);printf(zz\ninvertis:");printf("%d%d\n〃,indiv,ten);break;case1:printf(〃%d〃,indiv);printf(zz\ninvertis:");printf("%d\nzz,indiv);break;))运行结果:input0-99999: 98765/place=5shuziis:9,8,7,6,5invertis:56789实验五循环结构程序设计ー、实验目的熟悉掌握用循环语句:while语句,do-while语句,for语句实现循环的方法。掌握在程序设计中用循环的方法实现・・些常用算法(如穷举、迭代、递推等)。并且进ー步学习调试程序。二、实验内容编写程序并且上机调试运行.输入两个正整数机和〃,求它们的最大公约数和最小公倍数。.输入一行字符,分别统计出其中的英文字母、空格p数字邪其他字符的个数。/- ム+1=;(》“+一).用迭代法求スニノ。,求平方根的迭代公式为 2ム,要求前后两次求出的x的差的绝对值小于10-5〇.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下ー个桃子了。求第一天共摘了多少桃子。三、实验步骤及运行结果。.采用“辗转相除法”求最大公约数,始终用大数除以小数,然后用余数代替较小数,整除时的除数就是最大公约数;最小公倍数等于两数的乘积除以最大公约数。程序如下:main()(intp,r,n,m,temp;printf("请输入两个正整数scanf(n%d,%dn,&n,&m);temp=n;n=m;m=temp; /・把大数放在n中,小数放在m中・/)p=n*m; /・先将n和m的乘积保存在p中,以便求最小公倍数时用・/while(m!=O)/・求m和n的最大公约数・/(r=n%m;n=m;m=r;)printf("它们的最大公约数为:%d\n",n);printf("它们的最小公倍数为:%d\n",p/n);/*p是原来两个整数的乘积・/)运行情况:请输入两个正整数n,m:12,8它们的最大公约数为:4它们的最小公倍数为:24.程序如下:#include<stdio.h>main()(intword=0,space=0,num=0,other=0;charch;printf(“请输入一行字符:\n");ch=getchar();while(ch!二’\n')(if(ch>='A'&&ch<='Z'llch>='a'&&ch<='z')word++;elseif(ch=='')space++;elseif(ch>='0'&&ch<='9')num++;elseother++;ch=getchar();)printf("字母数=%d,空格数=%d,数字数=%d,其他字符数=%d\n",word,space,num,other);}运行情况:请输入一行字符:Myteacher'saddressis“#123BeijingRoad,Shanghai".字母数:38,空格数:6,数字数:3,其它字符数:6.用迭代法求平方根的算法如下:(1)设定一个ス的初值へ:(2)用上述公式求出ス的下ー个值再;(3)再将再代入上述公式,求出ス的下ー个值々;(4)如此继续下去,直到前后两次求出的x值(ム和“同)满足以下关系:lx„+1-x„klO-5为了便于程序处理,今只用变量X。和る,先令X的初值/=。/2(也可以是另外的值),求出玉;如果此时い"ハーム>1°-',则使〜つム,然后用这个新的“。求出下ー个司;如此反复,直到ス一“。k1°’为止。程序如下:#include<math.h>main()(floata,xO,xl;printf(MEnterapositivenumber:**);scanf(**%f**,&a);x0=a/2;xl=(xO+a/xO)/2;do(xO=xl;xl=(x0+a/x0)/2;}while(fabs(xO-xl)>=le-5);printf('*Thesquarerootof%5.2fis%8.5f\n'*,a,xl);)运行结果:Enterapositivenumber:2Thesquarerootof2.00is1.41421.程序如下:main()intday,xl,x2;day=9;x2=l;while(day>0)(xl=(x2+l)*2;x2=xl;day-;)printf("total=%d\n",x1);)运行结果:total=1534实验六数组ー、实验目的.掌握ー维数组和二维数组的定义、赋值和输入输出的方法:.掌握字符数组和字符串函数的使用;.掌握与数组有关的算法(特别是排序算法)。二、实验内容编写程序并且上机调试运行。用起泡法对10个数排序(由小到大)。将一个二维数组行和列元素互换,存到另一个二维数组中。例如:12314b=2545636输入一行字符,统计其中有多少个单词,单词之间用空格分隔开将两个字符串连接起来,不要用strcat函数。三、实验步骤及运行结果。1.起泡法的思路是:将相邻两个数比较,将小的调到前头。见图6.1。阳88888守阳55555阳44444牌”ハ22222臼ノ00000[0!;[91■■第1次第2次第3次第4次第5次结果图6.1图6.2若有6个数。第一次将8和9对调,第二次将第2和第3个数(9和5)对调……如此共进行5次,得到854209的顺序,可以看到:最大的数9己“沉底”,成为最下面一个数,而小的数“上升”。最小的数〇已向上“浮起”ー个位置。经第一趟(共5次)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较,见图6.20经过4次比较,得到次大的数80如此进行下去。可以推知,对6个数要比较5趟,才能使6个数按大小顺序排列。在第一趟中要进行两个数之间的比较共5次,在第二趟中比4次……第5趟比1次。如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。据此画出流程图(见图6.3)。根据流程图写出程序(今设n=10),定义数组长度为11,本例中对a[0]不用,只用a[1]到a[10],以符合人们的习惯。图6.3程序如下:main()(inta[11];inti,j,t;printf(ninput10numbers:\n");for(i=l;i<ll;i++)scanf(n%d\&a[i]);printf(M\nn);for(j=l;j<=9;j++)for(i=1;i<=10-j;i++)if(a[i]>a[i+1]){t=aEi];aEi]=a[i+1];aEi+1]=t;}printf(Mthesortednumbers:\n");for(i=l;i<ll;i++)printf("%d",a[i]);运行情况如下:input10numbers:1 0 4 8 12 65 -76 100 -45 123thesortednu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新课标人教版小学四年级数学下册练习题2021
- 2024年生物技术合同范本
- 2024年标准版离婚协议书样本
- 财务代建账户协议
- 人才就业保障协议书
- 海运进口集装箱货物报关代理协议
- 专业员工劳动合同合编
- 建房施工安全责任协议书2024年
- 钢筋混凝土房屋加固维修合同
- 投资方与初创企业利润分配协议
- 医院对口支援实施方案
- 辽宁交投物产有限责任公司招聘笔试题库2024
- 2024统编新版小学四年级语文上册第八单元:大单元整体教学设计
- 合肥包河区人力资源开发有限公司招聘笔试题库2024
- 4.2.2指数函数的图像和性质教学说课课件高一上学期数学人教A版
- 肺结节诊治中国专家共识(2024年版)解读
- GB/T 44464-2024汽车数据通用要求
- 2024-2025一年级上册科学教科版1.6《校园里的植物》课件
- 统编版(2024新版)七年级上册道德与法治第九课第一框《增强安全意识》教学设计
- 老旧小区整体改造施工投标方案(技术标)
- 新湘教版八年级上数学复习计划
评论
0/150
提交评论