计算机等级考试c语言试题及答案
- 格式:doc
- 大小:27.50 KB
- 文档页数:7
1
计算机等级考试c语言试题及答案
在计算等级C语言考试中,我们会遇到什么样的题目类型呢?下面是 给大家整理的计算机等级考试c语言试题及答案,供大家参阅!
计算机等级考试c语言试题 一、基本操作题
请补充main( )函数,该函数的功能是:输入两个正整数numl和num2,求这两个数的最大公约和最小公倍数。
例如,若输入的两个正整数为12,4,则它们的最大公约数为12,最小公倍数为4。
注意:部分源程序给出如下。
请勿改动main( )函数和其他函数中的任何内容,仅在main( )函数的横线上填人所编写的若干表达式或语句。
试题程序:
#include
#include
void main( )
{
int a,b,numl,num2,t;
system( CLS ):
printf( \nInput two numbers:\n 2
scanf( %d,%d , numl, num2);
if(numl {
a=num2;
b=numl:
}
else
{
a=numl;
b=num2;
)
while(【1】)
{
t= 【2】
a=b;
b=t:
}
printf( greatest common divisor:
%d\n ,a);
printf( least common multiple:
%d\n , 【3】;
}
二、程序改错题 3
下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main( )函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
//****found****
void proc(long S,long t)
{long sl=10;
s/=10;
*t=s%10;
//****found****
while(s { s=s/l00;
*t=s%10*sl+*t;
sl=sl*10;
}
)
void main( ) 4
{long S,t;
system( CLS ):
printf( \nPlease enter S:
scanf( %ld ,
proc(S, .
printf( The result is:%ld\n ,t);
}
三、程序设计题 请编写函数proc( ),其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。
注意:部分源程序给出如下。
请勿改动main( )函数和其他函数中的任何内容,仅在函数proc( )的花括号中填人所写的若干语句。
试题程序:
#include
#include
#include
#include 5
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:%s\n ,t);
计算机等级考试c语言试题答案
一、基本操作题程序填空题
【1】b!=0【2】a%b[3]numl*num2/a
【解析】由程序可知,变量b中存放两个正整数中较小的那个数,while循环求两个正整数的公约数。因此【1】填 b!=0 【2】填 a%b .【3】处是求两个正整数最小公倍数的表达式,因此【3】填
numl*num2/a 。
二、程序改错题
(1)错误:void proc(10ng S,long t)
正确:void proc(long s,long*t)
(2)错误:while(s 0) 6
正确:while(s O)
【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。因此 void proc(long s,long t) 应改为 void proc(long s,long*t) 要从低位开始取出长整型变量s中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此
while(s0) 。
三、程序设计题
void proc(char*str。chart[3])
{
int i,j=0;
for(i=0;str[i]! = \O i++)//从数组的第一个元素开始,到其最后一个
{if(i%2= =0 str[i]%2 1=o)//下标为偶数、同时ASCIl码值为奇数的字符
t[j++]=str[i];} //如果成立,则把它放到t数组中
t[i]= \o //字符串结束标志为 \0
}
【解析】题目中要求将字符串str中下标为偶数,同时ASCIl码值为奇数的字符放在数组t中。首先,需要检查字符串str中下标为偶数的字符其ASCIl码值是否为奇数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。
7