资源描述:
《全国计算机等级考试 2011年3月》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、程序填空题请补充main函数,该函数的功能是:输出一个4×4的矩阵,要求必须使用行指针表示输出变量。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:#include#includevoidmain(){staticintarr[4][4]={{9,8,7,6},{6,5,4,3},{3,2,1,0},{2,4,6,8}};int(*p)[4],j,i;p=___1____;system("CLS");for(i=0;i<4;i++){printf("\n\n")
2、;for(j=0;j<4;j++)printf("%4d",____2____);}}1、arr2、*(*(p+i)+j)解析:题目中要求必须使用行指针表示输出变量,由程序可知变量p为行指针,其应该初始化为数组的首地址。因此第一空填arr;每输出一个数组元素时,变量p为上一行的末地址加上该行的偏移量,因此第二空填*(*(p+i)+j)。一、程序填空题请补充函数proc,该函数的功能是计算下面公式SN的值:例如,当N=20时,SN=29.031674。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的横线上填入所编写的若干表达式或语句。试题程序:#in
3、clude#include#includedoubleproc(intn){doubles=1.0,s1=0.0;intk;for(【1】;k<=n;k++){s1=s;【2】;}return【3】;}voidmain(){intk=0;doublesum;system("CLS");printf("\nPleaseinputN=");scanf("%d",&k);sum=proc(k);printf("\nS=%lf",sum);}【1】k=2【2】s+=(2*k-1)/s1【3】s解析:由题目中所给公式可知,多项式的第一项为1,变
4、量s中存放多项式的和,其初始值为1,因此,循环从第二项开始,故【1】填k=2;变量s1中存放各项表达式的值,由公式可知【2】填s+=(2*k-1)/s1;题目中要求将多项式的和返回到主函数当中,因此【3】填s。二、程序改错题下列给定程序中,函数proc的功能是根据整型形参n,计算如下公式的值。y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(n+1)/(n×n)例如,n中的值为10,则应输出0.817962。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#inclu
5、de#includedoubleproc(intn){doubley=1.0;/*******found*******/intj=1;inti;for(i=2;i<=n;i++){j=-1*j;/*******found*******/y+=1/(i*i);}return(y);}voidmain(){intn=10;system("CLS");printf("\nTheresultis%lf\n",proc(n));}(1)错误:intj=1;正确:doublej=1.0;(2)错误:y+=1/(i*i);正确:y+=j/(i*i);解析:由函数pro
6、c可知,变量j为控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此intj=1应改为doublej=1.0;变量y中存放多项式的值,多项式中的每一项符号由变量j决定,因此y+=1/(i*i)应改为y+=j/(i*i)。三、程序设计题编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(以****作为结束输入的标志)。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include#include#include7、tring.h>#includeChar*proc(char(*a)[81],intnum,char*max){}voidmain(){charstr[10][81],*ps;intn,i=0;system("CLS");printf("输入若干个字符串:");for(i=0;i<5;i++)gets(str[i]);printf("\nThe%dstring:\n",N);for(i=0;i<5;i