计算机二级上机题库很有用 题目就是里面出的
1、程序填空题
【答案及难度指数】★★
(1)test%10 (2)break (3)break
【一起来审题】
(1)该程序功能是统计长整数各位上出现数字5、6、7的次数。
(2)解题思路,从已给部分源程序的main主函数开始入手,调用"fun(test);",将参数test传给函数"void fun(long test)",依次通过"test/=10;"求得长整数test的每一位数值,然后对其进行判断是否为数字5、6、7,然后将统计结果存放在外部(全局)变量sum5、sum6、sum7。
【解题思路】
第一空:switch(___1___)语句下面的case语句是判断switch中的表达式中的数字是否为5、6、7,因此这里的表达式应该是取长整数的一位,根据前面的分析,这里填"test%10";
第二空和第三空:因为一位数字只可能是5、6、7其中的一种情况,因此为了防止已知条件中的三个数之外的多余输出,这里应配合break语句,跳出选择,因此第二、三空应填"break"。
【主要考点】switch分支语句。
2、程序改错题
【答案及难度指数】★★
(1)if((str[i]>='a') && (str[i]<='z'))
(2)str[i]-=32;
【一起来审题】
本题中函数的功能是将字符串中的小写字母改为对应的大写字母。首先判断字母是否为小写字母,如果是小写字母则进行转换。
【解题思路】
(1)第一个错误标识下的if判断语句中的逻辑有误,应该是与(&&)的关系,不是或(||)的关系,所以if判断语句改为"if((str[i]>='a') && (str[i]<='z'))"。
(2)第二个标识下小写字母转换为大写字母的转换算法有误,小写转换为大写应该是减去32,而不是加上32,所以"str[i]+=32;"改为"str[i]-=32;"。
【主要考点】大小写字符之间的转换。
3、程序设计题
【答案及难度指数】★★★
int i;
*min=b[0]; //设置最小值初值
*d=0; //设置最小值标志位初值
for(i=0;i<n;i++)
if(b[i]<*min) //在循环中,对每一个元素与最小值标志值进行比较
{
*min=b[i]; //对最小值进行赋值
*d=i; //对最小值标志位进行赋值
}
【一起来审题】
该程序功能是求一维整型数组元素中最小的值和它所在的下标。其中,求最小元素的方法:用最小值变量min标记第一个待找数据,逐个把所有待找数据和min进行比较,并用min标记其当前最小值及其所在位置,从而找出最小值。
【解题思路】
进入fun函数,根据前面的分析:
(1)*min指针变量首先指向数组b的第一个数据,同时将标志位*d初始值赋为0。
(2)然后利用for循环对每一个当前数组数据与min标记的数据进行比较。
(3)循环中将求得的最小数据b[i]赋值给*min,并将该数据项数组标志位赋给标志位*d。
【主要考点】数组操作;指针操作。