国家二级C语言机试(操作题)模拟试卷620
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是计算下式
直到
(1)0
(2)i++或++i或i+=1或i=i+1
(3)2.0*i
解析:填空1:循环变量i从1开始参加运算,但是在每次循环的开始i都进行自加1操作,故i应赋初值为0。
填空2:循环变量i自增1运算。
填空3:根据公式确定表达式通项。注意x为double型,故应将i变为double型再进行运算。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。
例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define SIZE20
fun(double*s,double*w)
{int k,i;double sum;
for(k=2,i=0;i<SIZE;i++)
{s[i]=k;k+=2;}
/*********found*********/
sun=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(\\
(1)sum=0.0;
(2)if((i+1)%5==0)
解析:(1)变量sum书写错误。
(2)循环条件if(i+1%5==0)是一个运算逻辑错误,应先计算i+1,再对5求余。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数fun,函数的功能是查找x在s所指数组中下标的位置,并作为函数值返回,若x不存在,则返回-1。
注意:部分源程序在文件PROG1.C文件中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N15
void NONO();
int fun(int*s,int x)
{
}
main()
{int a[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;
printf(\\
int fun(int*s,int x)
{int i;
for(i=0;i<N;i++)
if(x==s[i])return i;
return-l;
}
解析:要找出数组中指定数据的下标,首先定义变量i用于存放数组下标,然后使用循环语句对数组进行遍历,依次取出一个数组元素与指定的数进行比较,若相等,则返回该元素的下标,否则继续判断下一个元素,直到数组结束。若数组结束时仍没有找到与指定数相等的元素,则返回-1。
本文档预览:3600字符,共2236字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载