




已阅读5页,还剩95页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
作业与实验参考答案,夏英杰,程序是如何炼成的?,程序设计四步曲: 变量定义 输入 处理/计算 输出,需要注意的问题: 需要存放哪些值?并判断需要定义几个变量? 每个变量需要定义为何种类型? 需要输入几个值(判断哪些值是根据输入数据计算出来的,这些值不需要输入) 经过哪些处理?如何处理? 输出对象是谁?在何处输出? 输入输出语句的格式!,-定义在本函数中用到的变量,-输入待处理的数据,-对输入的数据进行各种运算,-输出计算结果,作业二,1、输入一个华氏温度,要求输出摄氏温度。公式为:,#include void main( ) ,变量定义 输入 处理 输出,float C,F; scanf(“%f“, ,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“, ,注意: 变量的类型。 除法运算符的使用;数学公式的表示。 输入输出有文字说明。,2、编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。(提示:同一个字母的大写比小写小32),#include void main( ) ,变量定义 输入 处理 输出,char ch; scanf(“%c“,#include void main( ) char ch; printf(“Input ch:“); scanf(“%c“, ,注意: 变量的类型。 同一个字母的大写比小写小32 。 输入输出有文字说明。,3、编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积。,#include void main( ) ,变量定义 输入 处理 输出,#include void main( ) float a,b,h,area; printf(“Input a,b,h: “); scanf(“%f%f%f“, ,实验三,1、编写程序,输入圆半径r,求圆周长、圆面积、圆球表面积、圆球体积。,#include void main( ) ,变量定义 输入 处理 输出,#define PI 3.1415926,float r,L,s1,s2,V; /不能写成以下形式s1 s2 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“, ,printf(“L=%.2fn“, 2*PI*r); printf(“s1=%.2fn“, PI*r*r); printf(“s2=%.2fn“, 4*PI*r*r); printf(“V=%.2fn“, 4.0/3*PI*r*r*r);,注意: #define命令的使用。 变量的类型;变量名不能带下标或汉字,如s1、s表、s。 scanf、printf函数的格式。 除法运算符的使用;数学公式的表示。 输入输出有文字说明,尽量不要使用汉字。,2、有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r。已知电阻并联公式为:,#include void main( ) ,float r,r1,r2,r3; /不能写成下标的形式r1,r2,r3,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“, ,注意: 变量的类型;变量名不能带下标或汉字。 scanf、printf函数的格式。 数学公式的表示(不能赋值给表达式)。 输入输出有文字说明;且尽量不要使用汉字。,3、由键盘输入一个10-99之间的整数,将该数分解,分别输出其个位数字和十位数字。例如,输入85,输出:5,8。 提示:用算术运算中的整除和取余运算实现。,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“, /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“,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“, ,输入提示语句应放在scanf函数之前,if (a+bc ,else printf(“It is not a triangle!n“);,2、周期为T秒的人造卫星离地面 的平均高度H的计算公式为:,其中:M=61024kg是地球质量,R=6.371106m是地球半径。 编写程序,输入人造卫星的周期T,计算并输出人造卫星离地面的高度H。 算法提示:求xy结果的数学函数是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(“%.2En“, H); /较大的值用%E输出,#include #include #define PI 3.1415926 void main( ) double M=6E24,R=6.371E6,T,H,x; printf(“Input T: “); scanf(“%lf“, ,#include #include #define PI 3.1415926 #define M 6E24 #define R 6.371E6 void main( ) double T,H,x; printf(“nInput T: “); scanf(“%lf“, ,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“, ,注意: 如何判断小写的英文字母 小写的英文字母比大写的英文字母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“, ,3、编写程序,输入一个字符存入变量ch中,根据该字符的ASCII码值判断并输出字符的类型,即字母(alpha)、数字(numeric)或其他字符(other)。,问题:如何判断一个字符的类型?,大写字母:ch=A & ch=65 & ch=a & ch=97 & ch=0 & ch=48 & ch=57,是否字母的判断: ch=A&ch=a&ch=65&ch=97&ch=65&ch=122 65=ch=90 /不能连写,必须写成逻辑表达式,关系表达式书写原则:变量名在前,常量在后。如ch=A,#include void main( ) char ch; printf(“Input ch: “); scanf(“%c“, ,/* ch=getchar( ); */,/* 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=-1&x=1 ,else if (x=10) y=3*exp(2*x-1)+5;,else y=5*x+3*log10(2*x*x-1)-13;,/ else (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=10) y=3*exp(2*x-1)+5;,else y=5*x+3*log10(2*x*x-1)-13;,printf(“y=%.2fn“, y);,/* x=-1 & 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“,if (a+bc & b+ca & c+ab),if (a=b,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“,if (a+b=c | b+c=a | c+a=b) printf(“It is not a triangle!n“);,else if (a=b,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)1E-10,/ if (!(a+bc&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“, ,2、用switch实现多分支,#include void main( ) int x; printf(“Input x: “); scanf(“%d“, ,3、从键盘输入若干整数,以0结束,判断并输出其中的最大数。,分析:假定第一个数就是最大数max,后面输入的每个数再与max比较,比max大则修改max的值,while (x!=0) if (xmax) max=x; scanf(“%d“, ,scanf(“%d“,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,else if (ch=a,else if (ch= ) c=c+1;,else if (ch=0,else e=e+1;,/* ch=32 */,问题: 变量ch如何不断得到新值?,方法一:使用scanf函数 scanf(“%c“, /读入其它字符 /循环之前读入第一个字符,以便第一次判断表达式是否成立;循环体最后读入下一个字符,以便判断循环是否继续执行,方法二:使用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 ,注意: 循环结束的条件? 循环体要完成哪些操作? 每次判断表达式之前必须读入下一个值 是否等于空格的判断 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(“%.0lfn“,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(“%.0lfn“,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(“%.0lfn“,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=13+53+33。,分析:对每一个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不能超过double型数据的有效数字位数),4、输出3100之间的全部素数。,分析:使用循环嵌套,注意: 循环嵌套的应用 判断素数的方法,#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“, ,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“, ,#include void main( ) int a10,i,k=0; for (i=0;i10;i+) scanf(“%d“, ,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“,for (i=9; i=0; i-) if (aix) 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“, ,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;iN;i+) scanf(“%d“, ,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“, ,作业十,1、输入一个M行M列的二维数组,计算两条对角线上的元素之和(放在一个变量中)。M由下面的符号常量定义: #define M ,注意: 二维数组元素的访问方法? 下标的变化范围? 如何计算对角线上的元素之和?,1、,#include #define M 5 void main( ) ,int aMM,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“, ,1、输入一个M行M列的二维数组,分别计算两条对角线上的元素之和。M由下面的符号常量定义: #define M ,#include #define M 5 void main( ) ,int aMM,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 aMM,i,j,sum=0;,printf(“Input array a:n“); for (i=0; iM; i+) for (j=0; jM; j+) scanf(“%d“, ,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“, */,/调试时注释掉,以免每次运行都要输入大量数据, 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;iN;i+) printf(“The %dth averScore: %.2fn“,i,averi); , for (i=0;iM;i+) count=0; for (j=1;jN;j+) /计算60分以下课程门数 if (aij60) count+=1; if (count2) /不及格课程小于2门(不包含2门) continue; printf(“No: %-8d“,ai0); /输出学号 printf(“Score: “); for (j=1;jN;j+) /输出各门课程成绩 printf(“%-5d“,aij); for (j=1,sum=0;jN;j+) /计算并输出平均分 sum+=aij; printf(“averScore: %.2fn“,sum/(N-1); printf(“n“); , for (i=0;i=85) count+=1; for (j=1,sum=0;jN;j+) /计算平均成绩 sum+=aij; average=sum/(N-1); if (count!=N-1 ,if (!(count=N-1|average=90) continue;,实验十一,1、有一个字符串str,编写程序,将str中第n个字符开始的全部字符复制到字符串std中。,注意: 如何找到位置n? 复制之后不能漏掉结束标志0,#include void main( ) ,char str80, std80; int i, n;,for(i=n;stri!=0;i+) stdi-n=stri; stdi-n=0;,printf(“Input string str:“); gets(str); printf(“Input n:“); scanf(“%d“,printf(“String std:“); puts(std);,2、编写程序求出字符串str中指定字符ch的个数,并返回字符个数。例如,若输入字符串str=“abEF123112“,则输出3。,#include void main( ) ,char str80, ch; int i, n=0;,for(i=0;stri!=0;i+) if(stri=ch) n+;,printf(“Input string str:“); gets(str); printf(“Input ch:“); scanf(“%c“,printf(“The number of %c is %d. n“,ch,n);,3、有一段文字,共有5行(请先存放在二维数组中),分别统计出其中英文大写字母、小写字母、数字、空格及其他字符的个数。,注意: 如何定义字符型二维数组? 如何存放输入的字符串?,3、,#include #define M 5 void main( ) ,char strM80; int i,j,a=0,b=0,c=0,d=0,e=0;,printf(“Input 5 string:n“); for (i=0; iM; i+) gets(stri);,for (i=0; iM; i+),for (j=0;strij!=0;j+) if (strij=A ,printf(“%d, %d, %d, %d,%dn“,a,b,c,d,e);,4、输入6个字符串,输出最大的字符串。,注意: 如何存放输入的字符串? 如何比较字符串的大小? 如何找到最大的字符串?,#include #include void main( ) char str680; int i,k; for (i=0;i0) k=i; printf(“str%d=%sn“, k,strk); ,作业十二,如何编写函数:,#include int max(int x, int y) int z; if (xy) z=x; else z=y; return(z); ,void main( ) int a,b,c; scanf(“%d%d“, ,函数名:必须符合标志符命名规则,最好“见名知义” 参数:用于从主调函数接收数据,无数据传输则不需要参数 参数个数及类型的确定:从主调函数接收数据的个数及类型 返回值:向主调函数返回计算结果;不需要返回则定义为void 主调函数:我们常见为main函数,有时候是其它函数,1、编写一个函数,输出语句:“I Love China!”;编写主函数调用该函数。,分析:本函数功能简单,仅输出一个语句。,注意: 函数的名字、有无参数? 参数的个数及每个参数的类型,是否有返回值? 主函数中应完成哪些功能?,#include ,void print( ) printf(“I love China!n“); ,void main( ) print( ); ,2、编写函数,计算下式前n项的和。注意,n在主函数中输入,计算结果在主函数中输出。例如,当n=10时,结果为0.909091。,注意: 函数的命名、参数个数及每个参数的类型、返回值的类型? 如何将主函数中的数据传到被调函数中? 如何累加得到S?,#include double fun(int n) void main( ) int n; printf(“Input n:“); scanf(“%d“, ,int i; double s=0; for (i=1; i=n; i+) s+=1.0/(i*(i+1); return(s);,3、编写函数,计算Fibonacci数列第n项的值,n在主函数中由键盘输入,结果在主函数中输出。已知:,分析:除main函数外,仅需再定义一个函数。,注意: 函数的名字、是否有参数? 参数的个数及每个参数的类型,返回值及类型? 函数的调用方法,int Fib(int n) ,int i,a=1,b=1,c=1; for (i=3;i=n;i+) return(c);,c=a+b; a=b; b=c;,#include int Fib(int n) void main() ,int i,a=1,b=1,c=1; for (i=3;i=n;i+) c=a+b; a=b; b=c; return(c);,int n,s; printf(“Input n: “); scanf(“%d“,/用递归函数实现:- 慎用 int Fib(int n) if (n=1|n=2) return(1); else return(Fib(n-1)+Fib(n-2); ,4、编写函数,根据公式计算值,并作为函数值返回,精确到10-8。,注意: 函数的命名、参数个数及每个参数的类型、返回值的类型? 如何将主函数中的数据传到被调函数中? 循环条件如何控制? 如何累加得到sum? 如何累乘得到f?,#include float pi() void main( ) printf(“%f“,pi(); ,int i; float sum=1, f=1; i=1; while(f1e-8) f=f*i/(2*i+1); sum=sum+f; i+; return 2*sum;,如果前面定义了float s;写成 s=i/(2*i+1); f=f*s; 对不对?,不对!,另解一: #include float pi() int i; float sum=1, f=1; for(i=1;f1e-8; i+) f=f*i/(2*i+1); sum=sum+f; return 2*sum; void main( ) printf(“%f“,pi(); ,另解二: #include float pi() int i, j; float sum=1, f=1; for(i=1,j=3;f1e-8;i+,j+=2) f=f*i/j; sum=sum+f; return 2*sum; void main( ) printf(“%f“,pi(); ,实验十三,1、有一个数列,包含20个整数,编写函数,将从指定下标位置m开始的n个数按逆序存放。,注意: 函数的命名、参数个数及每个参数的类型、返回值的类型? 数组名作为函数参数的使用方法 逆序的方法,#include #define N 20 void sort(int aN,int m,int n) void main( ) int aN,m,n,i; for(i=0;iN;i+) scanf(“%d“, ,void sort(int aN,int m,int n) int temp,i; for(i=0;in/2;i+) temp=am+i; am+i=am+n-1-i; am+n-1-i=temp; ,2、编写函数,将形参字符串中的全部大写字母变为小写字母。函数原型为:strlow(字符串)。,注意: 函数的命名、参数个数及每个参数的类型、返回值的类型? 数组名作为函数参数的使用方法,#include #define N 50 void strlow(char sN) void main( ) char sN; gets(s); strlow(s); puts(s); ,int i; for(i=0;si!=0;i+) if(si=A,3、编写函数,求1!+2!+n!。要求:编写两个函数,分别实现计算i!和1!+2!+n!功能,在主函数输入n值,并在主函数中输出计算结果。,分析:除main函数外,还需定义两个函数。,注意: 都需要定义哪些函数? 函数的名字、是否有参数? 参数的个数及每个参数的类型,返回值及类型? 函数的调用方法 n的取值范围?,double sumFact(int n) ,int i; double sum=0; for (i=1;i=n;i+) sum+=Fact(i); return(sum);,double Fact(int i) /计算i! int j; double p=1; for (j=1;j=i;j+) p*=j; return(p); ,double sumFact(int n) /计算1!+2!+n! int i; double sum=0; for (i=1;i=n;i+) sum+=Fact(i); return(sum); ,void main( ) int n; double sum; printf(“Input n: “); scanf(“%d“, ,#inclu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高级市场调研师模拟题集与答案详解
- 浙江农林大学《生物技术》2024-2025学年第一学期期末试卷
- 环境管理体系培训测试题(含答案)
- QC七大手法考试题(附答案)
- 2025年施工员之装修施工基础知识考试题库及参考答案(培优a卷)
- 2024年一级建造师练习题有参考答案
- 2025年财务会计招聘考试预测题及答案解析
- 2025年项目经理高级笔试预测题与答案解析
- 2025年人力资源师考试模拟试题及答案详解大全
- 昆明工业职业技术学院《大数据技术实验》2024-2025学年第一学期期末试卷
- 特殊人群服务管理制度
- 2025-2030中国磁悬浮离心鼓风机行业市场发展趋势与前景展望战略研究报告
- 临床执业医师资格考试《第四单元》真题及答案(2025年新版)
- 高等教育自学考试《00018计算机应用基础》模拟试卷一
- 2025年公共卫生检验士考试试题及答案
- 危化品泄漏的应急处置流程
- 中专入学班会课件
- 2025-2030中国机场酒店行业市场前瞻与未来投资战略分析研究报告
- 医保基金监管与支付资格管理专题培训
- 员工关系管理培训课件
- 2023秸秆类生物质能源原料储存规范第1部分:存放
评论
0/150
提交评论