当前位置:学者斋 >

计算机 >C语言 >

计算机二级C语言考前预测上机试题及解析

计算机二级C语言考前预测上机试题及解析

2017年3月计算机等级考试即将到来,应届毕业生考试网为大家整理了2017年计算机二级考试C语言考前预测上机试题,希望对各位考生有所帮助!

计算机二级C语言考前预测上机试题及解析

  一、程序填空题

请补充main()函数,该函数的功能是:输入两个正整数numl和num2.求这两个数的最大公约数和最小公倍数。

例如,若输入的两个正整数为12,4,则它们的最大公约数为12,最小公倍数为4。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。

试题程序

#include

#include

void main()

{

int a,b,num1,num2,t;

system("CLS");

printf ("nInput two numbers:n");

scanf("%d,%d",&num1,&num2);

if(num1   {

a==num2;

b=num1:

}

else

{

a==num1;

b=num2;

}

while(【1】)

{

t= 【2】

a=b;

b=t;

}

printf("greatest common divisor:

%dn",a);

printf("least common multiple:

%dn",【3】);

}

  二、程序改错题

下列给定程序中函数proc的功能是:取出长整型变量s 中偶数位上的数,依次构成一个新数放在t中。例如,当s

中的数为123456789时,t中的数为2468。请修改程序中的'

错误,使它能得出正确的结果。

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

试题程序:

#include

#include

#include

//****found****

void proc(long S,long t)

{ long s1=10;

s/=l0;

*t=s%10;

//****found****

while(s<0)

{ s=s/100;

*t=s%10*s1+*t;

s1=s1*10:

}

}

void main()

{ long s,t;

system("CLS");

printf("knPlease enter s:");

scanf("%1d",&s);

proc(s,&t);

printf("The result is:%1dn",t);

}

  三、程序设计

请编写函数proc(),其功能是:将str所指字符串中除下标为偶数,同时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFG12345,其中字符8的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所写的若干语句。

试题程序:

#include

#include

#include

#include

void proc(char*str,char t[])

{

}

void main()

{

char str[100],t[100];

system("CLS"):

printf("nPlease enter string str:");

scanf("%s",str);

proc(str,t);

printf("nThe result is:%sn",t);

}

  上机考试试题答案与解析

一、程序填空题

【1】b!=0【2】a%b[3]numl*num2/a

【解析】由程序可知,变量b中存放两个正整数中较小

的那个数,while循环求两个正整数的公约数。因此【1】填“b!=0”.【2】填“a%b”;【3】处是求两个正整数最小公倍数的表达式,因此【3】填“num1*num2/a”。

二、程序改错题

(1)错误:void proc(long s,long t)

正确:void proc(long s,lon9*t)

(2)错误:while(s<0)

正确:while(s>0)

【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。因此“void proc(long s,long t)”应改为“void proc(long s,long*t)”;要从低位开始取出长整型变量s中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此“while(s<0)”应改为“while(s>0)”。

三、程序设计题

void proc(char*str,chart[])

{

int i,j=0;

for(i=0;str[i]!=’ ’;i++)//从数组的第一个

元素开始,到其最后一个

{if(i%2==0&&str[i]%2!=0) //下标为偶数、

同时ASCII码值为奇数的字符

t[j++]=str[i];) //如果成立,则把它放到t数

组中

t[j]=’ ’; //字符串结束标志为’’

}

【解析】题目中要求将字符串str中下标为偶数,同时ASCII码值为奇数的字符放在数组t中。首先,需要检查字符串str中下标为偶数的字符的ASCII码值是否为奇数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。

  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/cyuyan/jwrop.html