《等级实验二(含答案)》由会员分享,可在线阅读,更多相关《等级实验二(含答案)(55页珍藏版)》请在金锄头文库上搜索。
1、,ftp:/222.18.75.21,September 18,一、实验目的 1、了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。 2、学会正确使用逻辑运算符和逻辑表达式。 3、熟练掌握if语句和switch语句。 4、掌握用while语句,do-while语句和for语句实现循环的方法。,1、 用C语言描述下列命题(int i;): (1) i小于j或小于k(2) i和j都小于k(3) i和j中有一个小于k(4) i是非正整数(5) i是偶数(i是奇数) (6) i不能被j整除,二、实验内容和步骤(一)完成以下判断条件的C语言表达。,answer,2、能被7或11整除但不能
2、同时被7和11整除 3、同时满足除以7余5、除以5余3、除以3余1 4、闰年的判断条件 5、100以内同构数的判断(所谓“同构数”,是这样一种数,它出现在它的平方数的右端。如52=25,5是25中右端的数,所以5是同构数),answer,6、条件“2x3或x-10” 7、 “整数x的绝对值大于5”时值为“真”的C表达式 8、字符ch是字母(非字母) 9、字符ch是大写字母(非大写字母) 10、字符ch是数字字符(非数字字符),answer,假定w、x、y、z、m均为int型变量, 有如下程序段: w=1; x=2; y=3; z=4; m=(wx)?w:x; m=(my)?m:y; m=(mz
3、)?m:z; 则该程序运行后,m的值是,1,以下程序的输出结果是 void main( ) int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+;case 2: a+;b+;printf(“a=%d,b=%dn“,a,b); ,a=2,b=1,以下程序的输出结果是 void main( ) int a=2,b=-1,c=2;if(ab)if(b0) c=0;else c+;printf(“%dn“,c); ,2,以下程序的输出结果是 void main( ) int i=0,s=0; doif(i%2)i+;continue; i+; s+=i; whi
4、le(ia)|(m=a+b);printf(“%d,%dn“,k,m); ,1,0,以下程序的输出结果是 void main( ) int p=30; printf(“%dn“,(p/30?p/10:p%3); ,3,设有程序段int k=10;while(k=0) k=k-1; 循环的执行次数是,0次,设有程序段 x=-1; do x=x*x; while(!x);循环的执行次数是,1次,下面程序段的运行结果是_a=1;b=2;c=2;while(abc) t=a;a=b;b=t;c-;printf(“%d,%d,%d“,a,b,c);,1,2,0,(二) 填空题 给定程序中,函数fun的功
5、能是根据形参i的值返回某个函数的值。当调用正确时, 程序输出:x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!,answer,原始程序,(三) 改错题下列给定程序的功能是:读入一个整数(2=k1000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数90,则应输出2、3、5。 请改正程序中的错误,使程序能得出正确的结果。注意,不得增行或删行,也不得更改程序的结构!,answer,原始程序,#include IsPrime(
6、int n) int i,m=1;for ( i=2; i0);printf(“n“); ,程序题2:请编写一个函数fun,它的功能是:根据以下公式求的值(要求满足精度 0.0005, 即某项小于0.0005时停止迭代):,程序运行后,如果输入精度0.0005,则程序输出为 3.140578,原始程序,double fun (double eps) double sum=1.0,item=1/3.0;int n=1;while(item=eps)sum=sum+item;n+;item=item*n/(2*n+1);return sum*2.0; ,程序题3:请编一个函数fun,函数的功能是使
7、实型数保留2位小数,并对第三位进行四舍五入 (规定实型数为正数)。 例如:实型数为 1234.567, 则函数返回 1234.570000; 实型数为 1234.564, 则函数返回 1234.560000。,原始程序,float fun (float h) long w ; w = h * 100 + 0.5 ; return (float) w / 100 ; ,程序题4:编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n 为两个正整数且要求m n。 例如:m12,n8时,运行结果为495.000000。,原始程序,float fun(int m, int n) /答
8、案1 float p=1.0; long s; int t; for(s=1,t=1;t=m;t+) s=s*t; /求m! p*=s; for(s=1,t=1;t=n;t+) s=s*t; /求n! p/=s; for(s=1,t=1;t=m-n;t+) s=s*t; /求(m-n)! p/=s; return p; ,long jc(int m) /答案2 long s=1; int i ; for(i=1;i=m;i+) s=s*i ; return s; float fun(int m, int n) float p; p=1.0*jc(m)/jc(n)/jc(m-n) ; retur
9、n p; ,程序题5:编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。 例如若n为1000时,程序输出应为: s = 153.909064。,原始程序,double fun( int n) int sum=0; int i; for(i=1; i=n; i+) if(i % 3=0) ,程序题6:程序题:编写函数fun,它的功能是:计算并输出下列级数和: 例如,当n = 10时,函数值为:0.909091。,原始程序,double fun( int n ) double s = 0.0,item; int t; for(t=1;t=n;t+
10、) item=1.0/(t*(t+1);s+=item;return s ; ,程序7:编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当n = 10,x0.3时,函数值为1.349859。,原始程序,double fun(double x , int n) double sum=1.0,item=1.0;int t;for(t=1;t=n;t+)item=item*x/t; sum+=item;return sum; ,程序8:请编写一个函数 unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若 w 是 n (n 2)位的整数,函数求
11、出w的低 n-1位的数作为函数值返回。 例如:w 值为 5923,则函数返回 923; w 值为 923 则函数返回 23。,原始程序,unsigned fun ( unsigned w ) int s=0,k=1;while(w/10!=0)s=s+(w%10)*k;w=w/10;k*=10;return s; ,练习题1:从1099之间找出满足条件“个位与十位相加其结果等于12”的数,要求: (1)统计出满足此条件数的个数(注意不要重复输出,如39已输出,93就不要再输出) (2)按以下格式输出这些数:39: 391248: 4812,answer,main( ) int n,a,b,k=
12、0;for(n=10;n=99;n+) a=n/10; b=n%10;if(a+b=12) k+;if(a=b)printf(“t%d: %d+%d=%dn”,n,a,b,a+b);printf(“k=%dn”,k); ,练习题2:打印出所有的“水仙花”数,“水仙花”数是指一3位数,其各位数字的立方和等于该数本身。,main( ) int i,j,k,n;printf(“水仙花数是:“);for(n=100;n=a ,printf(“字母数=%3dn“,letters);printf(“空格数=%3dn“,space);printf(“数字数=%3dn“,digit);printf(“其他字符数=%3dn“,other); ,