一、填空:阅读下列程序说明和程序,在可选答案中,挑选一个正确答案。填补(1) (2) (3) (4)处空白,并注释说明为什么。
程序说明
求 1 + 2/3 + 3/5 + 4/7 + 5/9 + … 的前15项之和。
运行示例:
sum = 8.667936
程序如下:
1 #include <stdio.h>
2 void main( )
3 {
4 int i, b = 1;
5 double s;
6 (1)s=1; /*当i=1时,对s赋值为1*/
7 for(i = 1; i <= 15; i++)
8 {
9 s = s + (2)i/b; /*算各项和,通项为i/b*/
10 (3) 11 b=b+2; /*分母递增2,为下一次计算做准备*/
12 printf( (4) "sum = %f " /*各项和为浮点型*/
, s);
13 }
【供选择的答案】
(1) A、s = 0 B、s = 1 C、s = -1 D、s = 2
(2) A、i/b B、double(i)/double(b)
C、i/2*i-1 D、(double)i/(double)b
(3) A、; B、b = 2 * i – 1;
C、b = 1.0 * b; D、b = b + 2;
(4) A、"sum = %d
" B、"s = %c
"
C、"sum = %f
" D、"s = %s
"
---------------------------------题目分割线-----------------------------------
二、填空:阅读下列程序说明和程序,在可选答案中,挑选一个正确答案。填补(1) (2) (3) (4)处空白,并注释说明为什么。。
【程序说明】
输入10个整数,将它们从大到小排序后输出。
运行示例:
Enter 10 integers: 1 4 -9 99 100 87 0 6 5 34
After sorted: 100 99 87 34 6 5 4 1 0 -9
程序如下:
1 #include <stdio.h>
2 void main( )
3 {
4 int i, j, t, a[10];
5 printf("Enter 10 integers: ");
6 for(i = 0; i < 10; i++)
7 scanf( (1) "%d", &a[i] ); /*定义数组元素为整型int,调用scanf函数,在元素前加&地址符*/
8 for(i = 1; i < 10; i++)
9 for( (2) j = 1;(3) j < 10 - i; j++) /*循环从1到10-j*/
10 if( (4) a[j] < a[j+1] ) /*完成相临元素的比较,将大数放到前面,小数放后*/
11 {
12 t = a[j];
13 a[j] = a[j+1];
14 a[j+1] = t;
15 }
16 printf("After sorted: ");
17 for(i = 0; i < 10; i++)
18 printf("%d ", a[i]);
19 printf(" ");
20 }
【供选择的答案】
(1) A、"%f", a[i] B、"%lf", &a[i] C、"%s", a D、"%d", &a[i]
(2) A、j = 0 B、j = 1 C、j = i D、j = i - 1
(3) A、j > i B、j < 9 - i C、j < 10 - i D、j > i - 1
(4) A、a[i-1] < a[i] B、a[j+1] < a[j+2] C、a[j] < a[j+1] D、a[i] < a[j]
---------------------------------题目分割线-----------------------------------
三、编程,输入x后,根据下式计算并输出y值。
/*计算y的值*/ #include<stdio.h> #include<math.h> int main(void) { double x,y; int squr(int x); printf("Enter x: "); scanf("%lf",&x); if(x<-2){ y=x*x; } else if(x<=2){ y=2+x; } else{ y=squr(x*x+x+1); } printf("f(%.2f)=%.2f ",x,y); return 0; }
四、编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
运行示例:
Enter scores: 88 71 68 70 59 81 91 42 66 77 83 0
>=85:2
60-84:7
<60 : 2
/*统计并输出学生成绩人数*/ #include<stdio.h> int main(void) { int count1,count2,count3,num; /*num记录输入的个数,coun1,2,3分别记录各分数层人数*/ double grade; /*存放成绩*/ num=0; count1=0;count2=0;count3=0; printf("Enter grades:"); scanf("%Lf",&grade); /*当输入数据grade大于0时,执行程序*/ while(grade>0){ if(grade<60){ count++; printf("%d",count); scanf("%lf",&grade);/*重新输入数据,为下一次做准备*/ } else if(grade<85){ count++; printf("%d",count) scanf("%lf",&grade); } else(grade>90){ count++; printf("%d",count); } } else printf("Number failure",count); return 0; }
改正:逻辑问题??有错么??
心得:这次实验不是很难,但却没找着正确的思路和应用的结构,导致编程时错误百出,还是没能充分熟悉例题和课本,编程时离不开课本,这得注意。