计算机二级上机题库很有用 题目就是里面出的
1、程序填空题
【答案及难度指数】★★
(1)&n[i] (2)MAX<n[i]? (3)n[i]!=-1
【一起来审题】
(1)该程序功能是使用条件表达式找出最大的整数。从已给部分源程序的main主函数开始入手,主函数执行"int i=-1; int
MAX=-1;"初始化参数定义。
(2)进入do-while循环语句从键盘输入整数,并且通过条件表达式找出最大值。
【解题思路】
第一空:scanf("%d",___1___);是从键盘输入,取值。根据上一句"printf("n[%d]=",i);"输出语句,可知该空应填&n[i]。
第二空:MAX=___2___ n[i] : MAX;是使用条件表达式判断当前输入的n[i]和MAX值的大小,根据printf("The MAX=%d\n",MAX);循环外的输出语句,可知MAX用来存储最大值,因此根据条件表达式语法,第二空应填MAX<n[i]?。
第三空:while(___3___);是循环执行的条件,根据题意当输入-1时结束,因此,循环执行的条件是,当前输入不是-1,第三空应填n[i]!=-1。
【主要考点】while循环;选择语句。
2、程序改错题
【答案及难度指数】★
(1)n=*s-'0'; (2)n=n*8+*s-'0';
【一起来审题】
(1)该题中函数功能是实现八进制到十进制的转换。其中,八进制与十进制之间的转换关系是:八进制就是逢8进1。八进制数采用 0~7这8个数来表达一个数。八进制数第1位的权值为8的0次方,第2位权值为8的1次方,第3位权值为8的2次方,等等。
(2)从已给定源程序的main主函数开始入手,首先通过if语句判断串是否过长,是否符合题干要求;然后循环判断串中的每一位是否都在0~7之间,是否符合八进制要求,最后调用fun(str)实现八进制到十进制的转换。
【解题思路】
(1)第一个标识下面:语句"n=*s-'o';"中的'o'不是数字零,而是字母'o',根据前面的分析因此改为:"n=*s-'0';"。
(2)第二个标识下面:语句"n=n*7+*p-'o'",首先进行同(1)相同的修改,然后根据题干要求,要进行八进制到十进制的转换,它的权值为8,而不是7,因此是n*8而不是n*7,所以此句改为:"n=n*8+*s-'0';"。
【主要考点】字符;数制。
3、程序设计题【答案及难度指数】★★★
int i,j,k=0;
double r=0.0;
for(j=0;j<N;j++) //统计第一行进行统计
{
r+=b[0][j];
k++;
}
for(j=0;j<N;j++) //对第n-1行进行统计
{
r+=b[N-1][j];
k++;
}
for(i=1;i<=N-2;i++) //对第一列进行统计
{
r+=b[i][0];
k++;
}
for(i=1;i<=N-2;i++) //对第n-1列进行统计
{
r+=b[i][N-1];
k++;
}
return r/=k; //求平均数
【一起来审题】
该程序功能是求出数组周边元素的平均值。其中周边元素是指第一行的元素的行下标为0,或者第n行的元素行下标为n-1,或者第一列元素的元素列下标为0,或者第n列的元素的列下标为n-1。