2017年全国计算机等级考试c语言上机考试题库 - 81-85套共5套新题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2017年全国计算机等级考试C语言上机考试题库
学生练习用第81套至第85套内涵5套新题
第八十一套
1、程序填空
函数fun的功能是进行字母转换。
若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;若是其他字符则保持不变;并转换后的结果作为函数值返回。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<ctype.h>
char fun(char ch)
{
/**4»m(***杆found**********/
z,))
if((ch>=,a')1(ch<=,
a'+'A';
return ch」
if(i supper(ch))
/*杆姓***样found**********/
return ch+'a*—2;
return3:
}
mainO
{char cl,c2;
printf("\nThe result:\n");
cl='w';c2=fun(cl);
printf Ccl=%c c2=%c\n>,cl,c2);
cl=,W1;c2=fun(cl);
printf Ccl=%c c2=%c\n*,cl,c2);
cl=,8';c2=fun(cl);
printf Ccl=%c c2=%c\n",cl,c2);
}
【参考答案】
&&(2)'A'(3)ch
【考点分析】
本题考查:小写字母转大写ASCII-32,大写字母转小写ASCH+32;if条件
表达式(逻辑运算符的选择);函数的返回值。
【解题思路】
填空1:if条件表达式的考查,判断ch是否为小写字母,因而本空因该填写&&。
填空2:大写转换小写,大写转小写ASCH+32,因此本空应填'A'。
填空3:按题意若是其他字符则保持不变,并返回。
此空要表达的就是既不是大写字母也不是小写字母,因而此空应该填写ch。
2、程序修改
下列给定程序中,函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。
例如,输入1、2、3、4,程序运行后输出以下方阵:
4123
3412
2341
1234
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件M0DI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
阳efine M4
/**>ic>M<***1M t***found**************/
void fun(int a)
{int I,j,k,m:
printf("Enter4number:");
for(I=0;I<M;I++)scanf(*%d",&a[I]);
printf(*\n\nThe result:\n\n*);
for(I=M;I>0;I—)
{k=a[M-l];
for(j=M-l;j>0;j—)
/*林**********found**************/
a[j]=a[j+l];
a[0]=k;
for(m=0;m<M;m++)printf("%d",a[m]);
printf("\n");
}
}
void mainO
{int a[M];
fun(a);printf("\n\n;
}
【参考答案】
(l)void fun(int*a)
(2)a[j]=a[j-l];
例如,若给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,则输出应为S=35.951014。
注意:部分源程序在文件PROGLC中。
请勿改主动函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
tfinclude<stdio.h>
tfinclude<math.h>
double fun(double x[9])
mainO
{double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};
int i;
FILE*out;
printf(*\nThe original data is:;
for(i=0;i<9;i++)
printf C%6.If*,a[i]);
printf(*\n\n*);
s=fun(a);
printf("s=%f\n\n",s);
/**林**#******4^**4^***4^**h/
out=f open("out.dat",;
fprintf(out,",s);
fclose(out);
【参考答案】
double fun(double x[9])
double sum=0.0;
int i,j=l;
for(i=0;i<9:i++)
if(j<=8)
sum+=sqr t((x[i]+x[i+l])/2.0);
j++;/*相邻两个元素之平均值的平方根之和*/
return sum;
【考点分析】
本题考查:for循环;sqrt函数(平方根的计算);复合赋值运算。
【解题思路】
计算数组相邻两个元素的平均值,首先要取出数组中相邻两个元素,即x[i]和x[i+l]。
本程序使用循环语句遍历整个数组,在条件语句中计算相邻两个元素的平均值,并累加其平方根。