问题 填空题

下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#define SIZE 20
fun (double *s, double *w)
int k, i; double sum;
for(k=2, i=0; i<SIZE; i++)
s [i]=k; k+=2;
sum=0.0;
for(k=0, i=0; i<SIZE;i++)
sum+=s[i];
/*************found**************/
if(i+1%5==0)
w[k]=sum/5; Sum=0; k++;

return k;

main()
double a[SIZE],b[SIZE/5];
int i, k;
k=fun(a/b);
printf ("The original data:\n");
for(i=0;i<SIZE;i++)

if(i%5==0)printf("\n");
printf("%4.0f"/a[i]);

printf"\n\nThe result:\n");
for(i=0; i<k; i++) printf("%6.2f",b[i]);
printf("\n\n");

答案

参考答案:错误:if(i+1%5==0) 正确:if((i+1)%5==0)

解析: 本题除了考查循环语句以外,其实就是一道简单的数学题,循环条件if(i+1%5==0)是一个标准的语法错误,这跟题目考查的知识点毫无关系,也就是说,做这样的题,只要读懂了题干意思,问题便可迎刃而解。

实验题

由于实验室中矩形玻璃砖数量不够,部分同学须改用直角三棱镜做“测定玻璃的折射率”实验,实验步骤如下:

a.如右图先在一张白纸上作出相互垂直的直线ab和a/b/ ,以ab和a/b/作为三棱镜的两个界面,并在直线ab上标出O点.

b.描出P3、P4的位置.

c.将三棱镜放在白纸上,使短边跟ab对齐,长边跟a/b/对齐,画出斜边bb/

d.在长边a/b/的外侧透过三棱镜观察大头针P1、P2的像,调整视线方向,直到P1的像完全被P2的像挡住.

e.在观察的这一侧插两枚大头针P3、P4,使P3挡住P1、P2的像,P4挡住P1、P2的像及P3

f.过O点作一垂直于ab的线段OA,在OA上垂直纸面插上两枚大头针P1、P2

g.移去三棱镜和大头针,连接P3、P4交a/b/于点O/,作过O/与a/b/垂直的直线MN.

h.作出光路图,计算折射率n.

根据上面叙述回答下列问题:

①正确实验步骤顺序为              

②请在图中画出准确完整的光路图。

③请根据图中所给数据,求出该玻璃的折射率n=             

(2)某同学在做完测定玻璃折射率的实验后,突发奇想,他说受到实验中光路侧移的启示,设计了一个厚度检测仪,可以用来检测玻璃厚度是否均匀,原理大致是:如图所示,取一块厚度均匀的矩形玻璃砖摆放好,固定的一束激光AO以不变的入射角θ1照射到MN表面,折射后从PQ面射出,最后出射光线照射到光电管C上,光电管C可将光信号转变为电信号,如右图所示,依据激光束在C上移动的距离,可确定玻璃砖厚度的变化,若某次检测中发现光斑在C上左移了Δs,则此玻璃砖的厚度与原来相比变           (填“厚”或“薄”)。

填空题