作业与实验参考答案.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 实验 参考答案
- 资源描述:
-
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,作业与实验参考答案,夏英杰,程序是如何,炼,成的?,程序设计四步曲:,变量定义,输入,处理,/,计算,输出,需要注意的问题:,需要存放哪些值?并判断需要定义几个变量?,每个变量需要定义为何种类型?,需要输入几个值(判断哪些值是根据输入数据计算出来的,这些值不需要输入),经过哪些处理?如何处理?,输出对象是谁?在何处输出?,输入输出语句的格式!,-,定义在本函数中用到的变量,-,输入待处理的数据,-,对输入的数据进行各种运算,-,输出计算结果,作业二,1,、输入一个华氏温度,要求输出摄氏温度。公式为:,#include,void main(),变量定义,输入,处理,输出,float C,F;,scanf(%f,C=,5.0/9,*(F-32),;,printf(%fn,C,);,5/9.0*(F-32),5.0/9.0*(F-32),5*(F-32)/9,#include,void main(),float C,F;,printf(Input,F:);,scanf(%f,&F,);,C=5.0/9*(F-32);,printf(,C,=%.2f,n,C);,注意:,变量的类型,。,除法运算符的使用;数学公式的表示。,输入输出有文字说明。,2、编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。(提示:同一个字母的大写比小写小32),#include,void main(),变量定义,输入,处理,输出,char,ch,;,scanf(%c,&ch,);,ch,=ch+32;,printf(“,ch,=%,c,n,ch,);,#include,void main(),char,ch,;,printf(Input,ch,:);,scanf(%c,&ch,);,ch,=ch+32;,printf(“,ch,=%,c,n,ch,);,注意:,变量的类型,。,同一个字母的大写比小写小,32,。,输入输出有文字说明。,3,、编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积,。,#include,void main(),变量定义,输入,处理,输出,#include,void main(),float a,b,h,area;,printf(Input,a,b,h:);,scanf(%f%f%f,area=(a+b)*h/2;,printf(area,=%.2fn,area);,实验三,1,、编写程序,输入圆半径,r,,,求圆周长、圆面积、圆球表面积、圆球体积。,#include,void main(),变量定义,输入,处理,输出,#define PI 3.1415926,float r,L,s1,s2,V;/,不能写成以下形式,s,1,s,2,s,表,s,scanf(%f,/,注意,scanf,函数的格式,L=2*,PI,*r,;,s1=,PI,*r*r,;,s2=4*,PI,*r*r,;,V=,4.0/3,*,PI,*r*r*r,;,printf(%f,%f,%f,%fn,L,s1,s2,V);,还可以写成:,4/3.0*PI*r*r*r,4.0/3.0*PI*r*r*r,4*PI*r*r*r/3,#include,#define PI 3.1415926,void main(),float r,L,s1,s2,V;,printf(Input,r:);,scanf(%f,L=2*,PI,*r;,s1=,PI,*r*r;,s2=4*,PI,*r*r;,V=,4.0/3,*,PI,*r*r*r;,printf(L,=%,.2,f,s1=%,.2,f,s2=%,.2,f,V=%,.2,fn,L,s1,s2,V);,printf(L,=%,.2,fn,2*,PI,*r);,printf(s1=%,.2,fn,PI,*r*r);,printf(s2=%,.2,fn,4*,PI,*r*r);,printf(V,=%,.2,fn,4.0/3*,PI,*r*r*r);,注意:,#define,命令的使用。,变量的类型,;,变量名不能带下标或汉字,如,s,1,、,s,表,、,s,。,scanf,、,printf,函数的格式。,除法运算符的使用;数学公式的表示。,输入输出有文字说明,尽量不要使用汉字。,2,、有三个电阻,r1,、,r2,、,r3,并联,编写程序计算并输出并联后的电阻,r,。,已知电阻并联公式为:,#include,void main(),float,r,r1,r2,r3;,/,不能写成下标的形式,r,1,r,2,r,3,scanf(%f%f%f,/,scanf,函数的格式,r=1/(1/r1+1/r2+1/r3);,printf(r,=%.2fn,r);,1/r,=1/r1+1/r2+1/r3;,r=1/(1/r1+1/r2+1/r3);,t=1/r1+1/r2+1/r3;,r=1/t;,r=r1*r2*r3,/,(r2*r3+r1*r3+r1*r2);,#include,void main(),float r,r1,r2,r3;,printf(Input,r1,r2,r3:);,scanf(%f%f%f,r=1/(1/r1+1/r2+1/r3);,printf(r,=%.2fn,r);,注意:,变量的类型,;,变量名不能带下标或汉字。,scanf,、,printf,函数的格式。,数学公式的表示(不能赋值给表达式)。,输入输出有文字说明;且尽量不要使用汉字。,3,、由键盘输入一个,10-99,之间的整数,将该数分解,分别输出其个位数字和十位数字。例如,输入,85,,输出:,5,,,8,。,提示:用算术运算中的整除和取余运算实现。,#include,void main(),int,x,a,b,;,scanf(%d,a=x%10;,printf(“a,=%d,b=%,dn,a,b);,b=x/10;,作业四,1,、编写程序,输入三角形的三条边,计算并输出三角形的面积。(注意输入的三条边必须要能构成一个三角形)求三角形的面积公式为:,其中,s=(a+b+c)/2,。,#include,#include,void main(),float,a,b,c,s,area;,scanf(%f%f%f,s=(a+b+c)/2;,area=,sqrt,(,s,*(s-a)*(s-b)*(s-c),),;,printf(area,=%.2fn,area);,#include,void main(),变量定义,输入,处理,输出,注意:,变量的类型,本题应该是,float,或,double,。,scanf,、,printf,函数的格式:,scanf(%f%f%f,&a,&b,&c,);/,双引号间不要加其它任何符号,scanf(%lf%lf%lf,&a,&b,&c,);/double,型输入时应使用,%lf,printf(area,=%.2fn,area);/,printf,函数中常加其它说明字符,3.,数学函数的使用方法;同时需加上,#include,double,pow(double,x,double y);,程序最前面写上:,#include,#include,求得的函数值的类型,参数的类型,a=pow(3.2,5);,double,sqrt(double,x);,area=,sqrt(s,*(s-a)*(s-b)*(s-c);,4.,计算的顺序,:,先计算,s,,,再计算,area,。,-,后面用到的,值必须先计算,s=(a+b+c)/2;,area=,sqrt(s,*(s-a)*(s-b)*(s-c);,printf(area,=%.2fn,area);,5.,输入提示语句,printf,必须在,scanf,函数之前,:,printf(Input,a,b,c:);,scanf(%f%f%f,&a,&b,&c,);,6.,是否三角形的判断:任意两边之和大于第三条边,a+bc,b+ca,a+cb,&,&,&,a0,&,b0,&,c0,if(),s=(a+b+c)/2;,area=,sqrt(s,*(s-a)*(s-b)*(s-c);,printf(area,=%.2fn,area);,复合语句,#include,#include,void main(),float a,b,c,s,area;,printf(Input,a,b,c:);,scanf(%f%f%f,s=(a+b+c)/2;,area=,sqrt,(,s,*(s-a)*(s-b)*(s-c),),;,printf(area,=%.2fn,area);,输入提示语句应放在,scanf,函数之前,if(a+bc,&,b+ca,&,a+cb),s=(a+b+c)/2;,area=,sqrt(s,*(s-a)*(s-b)*(s-c);,printf(area,=%.2fn,area);,else,printf(It,is not a triangle!n);,2,、周期为,T,秒的人造卫星离地面,的平均高度,H,的计算公式为:,其中:,M=610,24,kg,是地球质量,,R=6.37110,6,m,是地球半径。,编写程序,输入人造卫星的周期,T,,,计算并输出人造卫星离地面的高度,H,。,算法提示:求,x,y,结果的数学函数是,pow(x,y),1.,变量的类型及个数:,double T,H;,2.,输入语句:,scanf(“%,lf,”,/,注意需要输入几个值,3.,数学表达式的写法:,x=,6.67E-11*M*T*T,/,4*PI*PI,;,x=,6.67E-11*M*T*T,/,(,4*PI*PI,);,x=,6.67E-11*M*T*T,/,4,/,PI,/,PI,;,H=,pow(x,1.0/3,),-R;,x=pow(,6.67E-11*M*T*T,/,(,4*PI*PI,),1.0/3);,4.,输出语句:,printf(%.2,E,n,H);/,较大的值用,%E,输出,#include,#include,#define PI 3.1415926,void main(),double M=,6E24,R=,6.371E6,T,H,x;,printf(Input,T:);,scanf(,%lf,&T,);,x=6.67E-11*M*T*T,/,(,4*PI*PI,),;,H=pow(x,1.0/3,)-R;,printf(H,=,%.2E,n,H);,#include,#include,#define PI 3.1415926,#define M 6E24,#define R 6.371E6,void main(),double T,H,x;,printf(nInput,T:);,scanf(%lf,&T,);,x=6.67E-11*M*T*T/(4*PI*PI);,H=pow(x,1.0/3)-R;,printf(H,=%.2En,H);,Input T:,86400,H=3.59E+007,注意,:,变量的数据类型,double,型数据的输入,实型常量的表示方法,数学函数的使用,3,、,求任意三个整数的平均值。要求:输入数据与输出结果都应有相应的提示信息。且输出数据取小数点后两位数字显示。,#include,void main(),printf(“Input,3 numbers:”),;,scanf(%f%f%f,ave,=(a+b+c)/3;,printf(“average,=%.2fn,ave,);,#include,void main(),变量定义,输入,处理,输出,float,a,b,c,ave,;,实验五,1,、,输入一个字符,并输出。其中有一个条件是如果该字符是小写的英文字母,则需把它转换成大写字母再输出。,问题:如何判断,小写的英文字母,?,小写字母:,ch,=,a,&,ch,=97&,ch,=122,#include,void main(),char,ch,;,printf(Input,ch,:);,scanf(%c,&,ch,);,if(,ch,=,a&ch,=z),ch,=ch-32;,printf(%cn,ch,);,注意,:,如何判断,小写的英文字母,小写的英文字母比大写的英文字母,ASCII,值大,32,2,、输入年号,,,判断并输出该年是否为闰年,。,所谓闰年,是指能被,4,整除,但不能被,100,整除;或能被,400,整除的年份。,#include,void main(),int,year;,printf(Input,year:);,scanf(%d,if(),printf(,%d,is a leap year.n,year,);,year%4=0,year%100!=0,&,year%400=0,|,else,printf(%d,is not a leap year.n,year);,注意,:,如何判断一个数是否能被整除,逻辑表达式的使用,ifelse,语句的使用,2.Input year:2004,2004 is a leap year.,Input year:2100,2100 is not a leap year.,#include,void main(),int,year,a,b,c;,printf(Input,year:);,scanf(%d,a=year%4;,b=year%100;,c=year%400;,if(,a=0,&,b!=0,|,c=0,),printf(%d,is a leap year.n,year);,else,printf(%d,is not a leap year.n,year);,3,、编写程序,输入一个字符存入变量,ch,中,根据该字符的,ASCII,码值,判断并输出字符的类型,即字母,(alpha),、,数字,(numeric),或其他字符,(other),。,问题:如何判断一个字符的类型?,大写字母:,ch,=,A,&,ch,=65&,ch,=,a,&,ch,=97&,ch,=,0,&,ch,=48&,ch,=,A&ch,=,a&ch,=65&ch=97&ch=65&ch=122,65=,ch,=A,#include,void main(),char,ch,;,printf(Input,ch,:);,scanf(%c,&,ch,);,if (,ch,=,A,&,ch,=,a,&,ch,=,0,&,ch,=,48,&,ch,=,57,*/,注意,:,如何判断一个字符的类型,逻辑表达式的使用,ifelse,多分支语句的用法,if,的,表达式后面不能加分号“,;”,实验结果的写法:,3.Input,ch,:A,alpha,Input,ch,:=,other,/,printf(%sn,other,);,4,、有一个函数,编写程序,输入,x,的,值,计算并输出,y,值。,#include,void main(),变量定义,输入,处理,输出,if (,x-1,),y=x*x*x-1;,else if(,x=1,),y=-3*x+1;,/,-1=x=-1&x=1,else if(,x10),/,else if(x10),#include,#include,void main(),double x,y;,printf(Input,x:);,scanf(,%lf,if (,x-1,),y=x*x*x-1;,else if(,x=1,),y=-3*x+1;,else if(,x=-1,&,x1,&,x=10,*/,注意,:,各种数学函数的使用,ifelse,多分支语句中表达式的写法,if,的表达式后面不能加分号“,;”,double,型数据的输入应用,%lf,4.Input x:-1,y=-2.00,Input x:1,y=-2.00,作业六,1,、从键盘输入三个数,代表三条线段的长度。请编写程序,判断这三条线段组成的三角形是什么类型(等边、等腰、不等边或不能构成三角形)。,#include,void main(),float a,b,c;,printf(Input,a,b,c:);,scanf(%f%f%f,&,a,&,b,&,c,);,if,(,a+bc,&,b+ca,&,c+ab,),if,(,a=b,&,b=c,),printf(It,is a equilateral triangle!n),;,else if,(,a=b,|,b=c,|,c=a,),printf(It,is a isosceles triangle!n),;,else,printf(It,is a common triangle!n);,else,printf(It,is not a triangle!n),;,注意,:,判断的顺序,即按什么顺序判断才能使程序简洁?,判断原则:先判断特殊的,逻辑表达式的使用,if,语句的嵌套,问题,:请大家在学完,dowhile,语句后,限制输入的三条边长必须能构成三角形,否则要求重新输入。,1,、,#include,void main(),float a,b,c;,printf(Input,a,b,c:);,scanf(%f%f%f,&,a,&,b,&,c,);,if,(,a+b=c,|,b+c=a,|,c+a=b,),printf(It,is not a triangle!n),;,else if,(,a=b,&,b=c,),printf(It,is a equilateral triangle!n),;,else if,(,a=b,|,b=c,|,c=a,),printf(It,is a isosceles triangle!n),;,else,printf(It,is a common triangle!n);,注意,:,使用多分支语句时的判断顺序,两个实数是否相等的判断:,fabs(a-b,)c&b+ca&c+ab,),),2,、简单选择界面的编程,要求用,switch,实现多分支。从键盘输入整数,输出不同的字符串:,输入,1,,输出,Good morning,;,输入,2,,输出,Good afternoon,;,输入,3,,输出,Good evening,;,输入,4,,输出,Good night,;,输入其它数字,输出,Bye-bye,。,#include,void main(),int,x;,printf(Input,x:);,scanf(%d,if(x=1),printf(Good,morningn);,else if(x=2),printf(Good,afternoonn);,else if(x=3),printf(Good,eveningn);,else if(x=4),printf(Good,nightn);,else,default:,printf(Bye,byen);,2,、,用,switch,实现多分支,#include,void main(),int,x;,printf(Input,x:);,scanf(%d,switch(,x,),case 1:,printf(Good,morningn);break;,case 2:,printf(Good,afternoonn);break;,case 3:,printf(Good,eveningn);break;,case 4:,printf(Good,nightn);break;,default:,printf(Bye,byen);,3,、从键盘输入若干整数,以,0,结束,判断并输出其中的最大数。,分析:假定第一个数就是最大数,max,,,后面输入的每个数再与,max,比较,比,max,大则修改,max,的值,while(,x!=0,),if(xmax),max=x;,scanf(%d,&x,);,scanf(%d,&x,);,max=x;,int,x,max;,printf(max,=%dn,max);,#include,void main(),注意,:,在循环体最后读入新的,x,在,while,语句之前读入第一个数并赋值给,max,如何从多个数中找到最大数,?,while,的,表达式后面不能加分号“,;”,1.5 3 4 12 10 1 0,max=12,4,、输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数。,#include,void main(),变量定义,输入,处理,输出,while(,ch,!=,n,),if(,ch,=,A&cn,=,a&ch,=0&ch=9),d=d+1;,else,e=e+1;,/*,ch,=32*/,问题:,变量,ch,如何不断得到新值?,方法一:使用,scanf,函数,scanf(%c,&ch,);,/,读入第一个字符,while(,ch,!=n),if(),scanf(%c,&ch,);,/,读入其它字符,/,循环之前读入第一个字符,以便第一次判断表达式是否成立;循环体最后读入下一个字符,以便判断循环是否继续执行,方法二:使用,getchar,函数,while(,(,ch,=,getchar,(),),!=n),if(),/,每次判断表达式时,先读入一个字符,赋值给变量,ch,,,再判断,ch,是否等于,n,,,因此不需要在循环之前或循环体最后读入字符,4,、,#include,void main(),char,ch,;,int,a=0,b=0,c=0,d=0,e=0;,printf(Input,a string:);,while(,(,ch,=,getchar,(),),!=,n,),if(,ch,=,A&cn,=,a&ch,=0&ch=9),d=d+1;,else,e=e+1;,printf(%d,%d,%d,%d,%dn,a,b,c,d,e,);,注意:,循环结束的条件?,循环体要完成哪些操作?,每次判断表达式之前必须读入下一个值,是否等于空格的判断,while,的表达式后面不能加分号,实验七,1,、分别用,while,、,do-while,和,for,语句计算 (即求,1,!,+2,!,+3,!,+20,!),并试着简化程序。,分析:定义三个变量,i,:,循环控制变量,从,1,逐渐增加到,20,sum,:,存放累加和;,fact,:,存放,i!,while(,i=20,),fact=,fact*i;,sum+=fact;,i+;,i=1;sum=0;,fact=1;,int,i;,double,fact,sum;,printf(,%.0lf,n,sum);,#include,void main(),注意,:,在循环中逐步计算阶乘并求和,循环控制变量的值需要修改,在循环之前对某些变量赋值,fact,、,sum,的数据类型,3.2561327494111820300,2561327494111820313,1,、,do-while,语句:,int,i;,double,fact,sum;,i=1;sum=0;,fact=1;,do,fact=,fact*i;,sum+=fact;,i+;,while,(i=20);,printf(,%.0lf,n,sum);,#include,void main(),注意,:,do-while,语句中先执行循环体,后判断表达式,while,的,表达式后面需要加分号“,;”,在循环之前对某些变量赋值,1,、,for,语句:,#include,void main(),int,i;,double fact,sum;,sum=0;fact=1;,for(i=1;i=20;i+),fact*=i;,sum+=fact;,printf(,%.0lf,n,sum);,/for(,i=1,fact=1,sum=0,;i=20;i+),注意,:,for,语句的格式,在循环之前对某些变量赋值,2,、计算:,#include,void main(),int,n=1;,double sum=0;,while(n=10),sum+=,n*n+n-2.3,;,n+;,printf(%lfn,sum,);,for(i=1;i=10;i+),sum+=i*i+i-2.3;,注意,:,修改循环控制变量的值,在,while,语句之前对某些变量赋值:赋值语句、赋初值,3,、输出所有的水仙花数。水仙花数是指一个,3,位数,各位数字的立方和等于该数本身,例如,153=1,3,+5,3,+3,3,。,分析:对每一个,3,位数来说,分解出它们的个位、十位和百位,然后判断它们的立方和是否等于该数本身。,注意,:,使用哪种循环语句?,如何分解出它们的个位、十位和百位?,循环语句的格式,for(i=100;i=999;i+),a=,i/100,;,b=,i%100/10,;,c=,i%10,;,if(i,=,a*a*a+b*b*b+c*c*c),printf(%d,i);,#include,void main(),int,i,a,b,c;,printf(The,narcissus numbers are:);,3.,The narcissus numbers are:153 370 371 407,if(i!=),continue;,printf(%d,);,作业八,分析:逐步计算出每一项的分子、分母,再计算并相加。,注意,:,使用哪种循环语句?,如何计算下一项的分子、分母,?,第一项的值如何得到?,变量的类型?,1,、有一分数序列:求出这个数列的前,20,项之和。,#include,void main(),int,i;,double,a,b,sum=0;,a=2;b=1;,for(i=1;i=20;i+),printf(sum,=%lfn,sum);,sum+=a/b;,a=a+b;,b=a-b;,/*temp=a;,a=a+b;,b=temp;*/,1.,sum=32.660261,2,、用循环语句编写程序,输出如下图案:,*,*,*,*,*,*,分析:使用循环嵌套,注意,:,循环嵌套的应用,*,的对齐格式,如何在每行前面输出不同个数的空格,#include,void main(),int,i,j;,for(i=1;i=6;i+),/,输出一行,printf(n,);,for(j=1;,j=i-1,;j+),/,输出空格,printf,();,for(j=1;,j=7-i,;j+),/,输出*,printf,(*);,/,*,后有个空格,分析:使用循环语句,注意,:,选用何种循环语句较好?,如何得到各个加数?,变量应定义为何种数据类型?,a,和,n,的大小有什么要求?,3,、求 的值,其中,a,是一个数字,如,2+22+222+2222+22222,(此时,a=2,,,n=5,),,a,和,n,均由键盘输入。,#include,void main(),int,a,n,i;,double x=0,sum=0;,printf(Input,a,n:);,scanf(%d%d,&a,&n,);,for(i=1;i=n;i+),x=x*10+a;,sum+=x;,printf(sum,=,%.0lf,n,sum);,(,a,必须是非零个位数,,n,不能超过,double,型数据的有效数字位数,),4,、输出,3,100,之间的全部素数。,分析:使用循环嵌套,注意,:,循环嵌套的应用,判断素数的方法,#include,#include,void main(),int,m,k,i;,for(m=3;m=100;m+=2),k=,sqrt(m,);,for(i=2;i=k;i+),if(,m%i,=0)break;,if(i=k+1),printf(%-5d,m);,实验九,1,、从键盘输入,10,个整数存放在一个一维数组中,,,找出最大的数并输出该数及其下标。,注意,:,如何把输入的,10,个数存放在一维数组中?,如何找到最大数,?,#include,void main(),int,a10,i,max,k;,for(i=0;i10;i+),scanf(%d,&,ai);,max=,a0,;k=,0,;,for(i=1;i10;i+),if(,maxai,),max=ai;k=i;,printf(a,%d,=%dn,k,max);,1,、另解,#include,void main(),int,a10,i,k;,for(i=0;i10;i+),scanf(%d,k=0,;,for(i=1;i10;i+),if(,ak,ai),k=i;,printf(a%d,=%dn,k,ak,);,#include,void main(),int,a10,i,k=0,;,for(i=0;i10;i+),scanf(%d,if(,ak,ai),k=i;,printf(a%d,=%dn,k,ak);,2、设有一个已按从大至小顺序排好的数列存放在一维数组中,依次为81,76,66,61,54,47,36,30,22,16。现输入一个数,仍按原来的排序规律将其插入到数组中,试编程。,注意,:,如何查找插入位置?,如何移动元素?,#include,void main(),int,a11=81,76,66,61,54,47,36,30,22,16;,int,x,i;,scanf(%d,&x,);,for(i=9;i=0;i-),if(,ai,x),ai+1=,ai,;,else break;,ai+1=x;,for(i=0;i=10;i+),printf(%5d,ai);,、另解,#include,void main(),int,a11=81,76,66,61,54,47,36,30,22,16;,int,x,i,j,;,printf(Input,a number:);,scanf(%d,&x,);,for(i=0;i=9;i+),if(ai,=i;j-),aj+1=,aj,;,ai,=x;,for(i=0;i=10;i+),printf(%5d,ai);,3、从键盘输入N个数(在数组中从下标为0的位置开始存放),N由下面的符号常量定义。用冒泡法将下标为m到下标为n的数按降序排序。m和n通过键盘输入。假设0mN-1,mnN-1,#define N 15,#include,#define N 15,void main(),int,aN,i,j,t,m,n;,for(i=0;i,N;i,+),scanf(%d,&,ai,);,scanf(%d%d,for(i=0;,i,n-m,;i,+),for(j=,m;,j,n-i,;j,+),if(,aj,aj+1),t=,aj,;,aj,=aj+1;aj+1=t;,for(i=0;i,N;i,+),printf(%d,ai,);,4,、二分法又称为折半查找法,它用于在一个有序的序列上查找指定的数。其基本思路是:先确定待查元素的范围,将其分成两半,然后测试中间位置元素的值,如果相等,则找到待查元素。如果待查元素的值大于中间元素,就缩小待查范围,只测试中间元素之后的元素;反之,测试中间元素之前的元素,测试方法同前。试编写程序,应用折半查找法从存有,10,个整数的,a,数组中对输入的关键字,m,进行查找,若找到,输出其下标值;反之,输出提示。,#include,#define N 10,void main(),int,aN,=6,9,15,25,26,36,48,53,60,65;,int,low=0,high=N-1,mid,m,found=0;,printf,(,请输入查找数据:,);,scanf(%d,if(m=,alow,&m=,ahigh,),while(!found&low,amid,),low=mid+1;,else high=mid-1;,if(found),printf,(,元素值为,%d,的数组下标是,%d,。,n,m,mid);,else,printf,(,未找到。,n);,作业十,1,、输入一个,M,行,M,列的二维数组,计算两条对角线上的元素之和,(放在一个变量中,),。,M,由下面的符号常量定义:,#define M,注意,:,二维数组元素的访问方法,?,下标的变化范围,?,如何计算对角线上的元素之和?,1,、,#include,#define M 5,void main(),int,a,M,M,i,j,sum=0,;,printf(Input,array a:n);,for(i=0;iM;i+),for(j=0;jM;j+),scanf(%d,for(i=0;iM;i+),for(j=0;jM;j+),if(,i=j,|,i+j=M-1,),sum+=aij;,printf(sum,=%dn,sum);,for(i=0;iM;i+),for(j=0;jM;j+),scanf(%d,if(i=j,|,i+j=M-1),sum+=aij;,1,、输入一个,M,行,M,列的二维数组,,分别计算,两条对角线上的元素之和。,M,由下面的符号常量定义:,#define M,#include,#define M 5,void main(),int,a,M,M,i,j,sum1=0,sum2=0,;,/,输入,a,for(i=0;iM;i+),sum1+=,aii,;,sum2+=,aiM-i-1,;,printf(sum1=%d,sum2=%dn,sum1,sum2);,2,、输入一个,M,行,M,列的二维数组,计算四周元素之和。,M,由下面的符号常量定义:,#define M,注意,:,如何找到四周元素,?,四周元素的下标有何特点,?,#include,#define M 5,void main(),int,a,M,M,i,j,sum=0,;,printf(Input,array a:n);,for(i=0;iM;i+),for(j=0;jM;j+),scanf(%d,if(,i=0,|,i=M-1,|,j=0,|,j=M-1,),sum+=aij;,printf(sum,=%dn,sum);,3,、有一个班,有,4,个学生,,5,门课。,求各门课的平均分;,找出有两门以上课程不及格的学生,输出它们的学号和全部课程成绩及平均成绩。,找出平均成绩在,90,分以上或全部课程成绩在,85,分以上的学生,输出它们的学号和全部课程成绩。,注意,:,如何存放,4,个同学的学号及,5,门课程的成绩?,定义一个,4*6,的二维数组,每一行存放一个学生的信息,每行的第,0,列存放该学生的学号,其他每列存放一门课程的成绩(假设都是整数)。,分析:定义一个,4*6,的二维数组,每一行存放一个学生的信息,每行的第,0,列存放该学生的学号,其他每列存放一门课程的成绩。,#include,#define M 4,#define N 6,void main(),int,i,j,count,;float,sum,average,;,int,aMN,=1001,87,78,98,99,99,1002,80,87,68,85,90,1003,88,87,92,85,86,1004,68,65,60,56,36;,float averN,;,/,存放每门课程的平均分,/*,printf(Input,score:n);,for(i=0;iM;i+),for(j=0;jN;j+),scanf(%d,&aij,);,*/,/,调试时注释掉,以免每次运行都要输入大量数据,for(j=1;jN;j+),/,从,第,1,门课到第,N-1,门,课,sum=0;,for(i=0;iM;i+),/,从第,0,个学生到第,M-1,个,学生,sum+=,aij,;,averj,=,sum/,M,;,/,计算,第,j,门,课程的平均分,for(i=1;i,N;i,+),printf(The,%,dth,averScore,:%.2fn,i,averi);,for(i=0;iM;i+),count=0;,for(j=1;jN;j+),/,计算,60,分以下课程门数,if(,aij,60,),count+=1;,if(,cou展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




作业与实验参考答案.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/13090319.html