知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

76套: 

给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。 

例如,当形参n的值为10时,函数返回:-0.204491。 

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

double fun(int n) 

{ int i, k; double s, t; 

s=0; 

/ **********found**********/ 

k=__1__; 

for(i=1; i<=n; i++) { 

/ **********found**********/ 

t=__2__; 

s=s+k*(2*i-1)*(2*i+1)/(t*t); 

/ **********found**********/ 

k=k*__3__; 

return s; 

main() 

{ int n=-1; 

while(n<0) 

{ printf("Please input(n>0): "); scanf("%d",&n); } 

printf("\nThe result is: %f\n",fun(n)); 

解题思路: 

第一处:k是用来管理正负号的,公式中第一个值是正数,所以应填:1。 

第二处:根据公式,t2i,所以应填:2*i。 

第三处:根据公式,第2个是负数,所以应填:(-1)。 

*************************************************** 

给定程序MODI1.C中函数 fun 的功能是:判断一个整数是否是素数,若是返回1,否则返回0。 

main()函数中,若fun返回1输出YES,若fun返回0输出NO!。 

请改正程序中的错误,使它能得出正确的结果。 

注意:不要改动main函数。不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

int fun ( int m ) 

{ int k = 2; 

while ( k <= m && (m%k)) 

/ ************found************/ 

k++ 

/ ************found************/ 

if (m = k ) 

return 1; 

else return 0; 

main( ) 

{ int n; 

printf( "\nPlease enter n: " ); scanf( "%d", &n ); 

if ( fun ( n ) ) printf( "YES\n" ); 

else printf( "NO!\n" ); 

解题思路: 

第一处:语句后缺少分号。 

第二处:条件判断相等的符号是==。 

*************************************************** 

请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 

主函数中x是数组名, nx中的数据个数,max存放最大值,index存放最大值所在元素的下标。 

注意部分源程序存在文件PROG1.C文件中。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <stdlib.h> 

#include <stdio.h> 

void fun(int a[], int n , int *max, int *d ) 

main() 

{ int i, x[20], max , index, n = 10; 

randomize() ; 

for (i=0;i < n;i++) {x[i] = rand()%50; printf("%4d", x[i]) ; } 

printf("\n"); 

fun( x, n , &max, &index); 

printf("Max =%5d , Index =%4d\n",max, index ); 

NONO(); 

解题思路: 

本题是找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。具体看参考源程序中的说明。 

参考答案: 

void fun(int a[], int n , int *max, int *d ) 

int i ; 

*max=a[0];*d = 0 ; / * 把数组的第1个元素值赋值给最大值变量*max */ 

for(i = 1; i < n; i++) 

if(*max < a[i]) { / * 判断*max是否小于当前值 */ 

*max = a[i]; / * 重新把最大值赋值给*max */ 

*d = i ; / * 记住下标 */ 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多