2012年9月全国计算机考试二级C语言最新上机题库(打印版)

月亱相携 分享 2022-05-06 下载文档

2012年9月全国计算机考试二级C语言最新上

机题库

上机考试题库

(打印版)

1

1

【参考答案】(1) a[i](2) a[j](3) a[j]

【考点分析】本题考查:数组的引用;if语句条件表达式,如果表达式的值为真,则执行下面的语句,如果该值为假,则不执行下面的语句。

【解题思路】填空1:for循环语句循环体中将数组元素a[i]赋值给变量max和变量min。

填空2:通过一次for循环,找到数组中的最大值,if语句的条件表达式是max

填空3:同理,此处if语句的条件表达式是min>a[j]。

【解题宝典】求最大值或者最小值的题目,一般都是假设一个元素最大或最小,然后通过if条件语句将该元素和其他元素进行比较操作来完成。

【参考答案】(1) 去掉分号(2) case 1:case 2:return 1;【考点分析】本题考查:switch语句,其一般形式为:switch(表达式){

case常量表达式1: 语句1;

case常量表达式2: 语句2;

……

case常量表达式n: 语句n;

default: 语句n+1;

}其中switch(表达式)后不应该带有";",同时case语句常量后应该是":"。

【解题思路】C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。

【参考答案】

oid fun(STREC *a)

{double ave=0.0;

int i;

for(i=0;i

a->ave=a->ave+a->s[i];

/*求各门成绩的总和*/

a->ave/=N;

/*求平均分*/

}

【考点分析】本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数参数。

【解题思路】本题考查自定义形参的相关知识点,程序流程是这样的:在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a ,此时,引用成员的方式可以使用指向运算符,即a->ave和a->s[i],当然也可用(*a).ave和(*a).s[i]。

2

【参考答案】(1) char(2) ch<='9'(3)'0'

【考点分析】本题考查:函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别;if语句条件表达式,本题的条件表达式是判断数字字符;函数返回值,其一般形式为"return 表达式;"。

【解题思路】填空1:函数定义时,类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入char。填空2:通过if条件语句判断字符串中字符是否是数字字符,既大于等于字符'0',同时小于等于字符'9'。

填空3:return语句完成函数返回操作,要实现字符转换,应填入return ′9′-(ch-′0′)。

【解题宝典】有参函数定义,其一般形式为:

类型标识符函数名(形式参数表列)

{声明部分

语句}

在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,必须在形参列表中给出类型说明。

【参考答案】(1) b[k]=*p;(2) b[k]=′ ′;k++;

【考点分析】本题考查:指针类型变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。

【解题思路】(1) 题目中p是指针型变量作函数参数,因此给b[k]赋值时出现错误。(2) 题目要求赋值3个字符后加一个空格,所以应该是先给b[k]赋值空格,然后变量k 再加1。

【解题宝典】C语言中为了表示指针变量和它所指向的变量之间的关系,在程序中用"*"符号表示"指向",例如,pointer代表指针变量,而*pointer是pointer所指向的变量。

【参考答案】

double fun( STREC *h )

{

double ave=0.0;

STREC *p=h->next;

while(p!=NULL)

{ave=ave+p->s;

p=p->next;

}

return ave/N;

}

【考点分析】本题考查:链表的操作,对链表的主要操作有以下几种:建立链表、结构的查找与输出、插入一个结点、删除一个结点。

【解题思路】题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均分。遍历链表时应定义一个指向结点的指针p,因为"头结点"中没有数值,所以程序中让p直接指向"头结点"的下一个结点,使用语句STREC *p=h->next。

3

【参考答案】(1) M(2) <(3) k

2

【考点分析】本题考查:for循环语句的循环条件;if语句条件表达式;return语句完成函数值的返回。

【解题思路】填空1:题目指出ss所指字符串数组中共有M个字符串,所以for循环语句循环条件是i

【参考答案】(1)if(( tt[i]>=a′)&&( tt[i] <=′z′)(2)tt[i]-=32;【考点分析】本题考查:if语句条件表达式;小写字母转大写字母的方法。

【解题思路】(1)分析本题可知,要判断字符是否为小写字母,即判断其是否在a~z之间,所以这里需要进行连续的比较,用&&。(2)从ASCII码表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII值大32。将字符串中的小写字母改为大写字母的方法是:从字符串第一个字符开始,根据ASCII码值判断该字母是不是小写字母,若是,则ASCII码值减32即可。

【参考答案】

void fun( int m, int *k, int xx[] )

{

int i,j,n=0;

for(i=4;i

if(i%j==0) break;

if(j

}

*k=n; /*返回非素数的个数*/

}

【考点分析】本题考查:如何判断非素数;循环判断结构;数组的引用。

【解题思路】题目要求将1~m之间的非素数存入数组中,应使用循环判断结构。循环语句用来遍历1~m之间的每个数,判断语句用来判断该数是否素数,若不是素数,则将其存入数组中。这道题目是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。【解题宝典】判定一个数是否为素数,即该数除了能被1和它本身外,不能被任何数整除。

代码实现为:

for(j=2;j

if(i%j==0)/*如余数为0,证明i不是素数*/ ……

此语句需要熟记,很多判断素数的题目也可通过此法解决。

4

【参考答案】(1)j++或j+=1或++或j=j+1(2)s[i]=t1[i](3) j 【考点分析】本题考查:指针型变量;数组变量赋值;for

循环语句。

【解题思路】填空1:根据函数fun中的内容可知,数组t1存储了s中的非数字字符,数组t2存储了s中的数字字符,为了存储下一个数字字符,下标j要进行加1操作。填空2:将s串中的数字与非数字字符分开后,要先将非数字字符放入字符串s中,因此填入s[i]=t1[i]。填空3:最后将数字字符加到s串之后,并且i要小于数字的个数j。

【参考答案】(1)for (j = i + 1; j < 6; j++)

(2)*(pstr +i) = *(pstr + j) ;

【考点分析】本题考查:冒泡排序算法;for循环语句格式;指针数组。

【解题思路】(1)此处考查for语句的格式,各表达式之间应用";"割开。(2)此处考查用指针表示数组元素的方法,*(pstr+I)表示pstr所指向数组的第I个元素,同理*(pstr+j)表示pstr所指向数组的第j个元素。

【解题宝典】冒泡排序算法,其基本思想是,将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的位置。显然,处理一遍之后,"最轻"的元素就浮到了最高位置;处理二遍之后,"次轻"的元素就浮到了次高位置。依次类推,完成排序。用代码实现数组s[N]的升序排列为:

for(i=0; i

for(j=i+1; j

if(s[i]>s[j])

{t=s[i]; s[i]=s[j]

s[j]=to;}

【参考答案】

int fun(char *ss, char c)

{

int i=0;

for(;*ss!='\0';ss++)

if(*ss==c)

i++;/*求出ss所指字符串中指定字符的个数*/ return i;

}

【考点分析】本题考查:for循环语句遍历字符串,并通过if条件语句,判断字符串是否结束。

【解题思路】从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是′\0′,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。

5

【参考答案】(1)x(2)p(3)s

【考点分析】本题考查:链表的基本操作。了解链表的

3

基本思想和相关算法,理解有关链表插入及删除时指针移动的先后顺序问题,注意指针的保存和归位。

【解题思路】填空1:将形参x赋值给结点的数据域。

填空2和填空3:将新的结点和原有链表中结点进行比较。【参考答案】(1)long k=1;(2)num /=10;

【考点分析】本题考查:数据类型;保存乘积的变量初始化;除法运算符。

【解题思路】(1)k用来存放各位数字的积,初始值应为1。

(2)这里是一个符号错误,除号用"/"来表示。

【解题宝典】明确C语言中的算术运算符:

加法运算符"+":为双目运算符,即应有两个量参与加法运算。减法运算符"-":为双目运算符。但"-"也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。乘法运算符"*":双目运算,具有左结合性。除法运算符"/":双目运算,具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。求余运算符(模运算符)"%":双目运算,具有左结合性。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。

【参考答案】

float fun ( float *a , int n )

{

int i;

float av=0.0;

for(i=0; i

av=av+a[i];

return(av/n);/*返回平均值*/

}

【考点分析】本题考查:如何通过指针来实现计算平均分。【解题思路】本题较简单,只需用一个循环语句就可变成数组元素的求和,再将和除以课程数即可。需要注意的是本题对指针的操作,当指针变量指向一个数组时,用该指针变量引用数组元素,引用方式与数组的引用方式相同。如本题中a指向了score,所以通过a引用score中的元素时可以用下标法,也可以用指针运算法,a[i]和*(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为0。例如,若有int cc[10],*p=cc+5;,即p指向了cc的第5个元素,则p[0]的作用与cc[5]相同;p[3]的作用是取出从当前地址(即p所指地址)开始往后的第3个元素,它与cc[8]相同;p[-2]的作用是取出从当前地址开始往前的第2个元素,它与cc[3]相同,但不提倡使用"负"的下标。

【解题宝典】计算平均分方法。掌握以下语句:

for(i=0;i

av=av+a[i];

return (av/n);/*返回平均值*/

6

【参考答案】(1)3.0或(double)3(2)>(3) (t+1)

【考点分析】本题考查:基本算术运算时的类型转换,其转换规则为:如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致;如果双目运算符两边运算的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算规律见下表。

运算数1,运算数2,转换结果类型

短整型,大整型,短整型 长整型

整型,大整型,整型 长整型

字符型,整型,字符型 整型

有符号整型,无符号整型,有符号整型 无符号整型

整型,浮点型,整型 浮点型while循环语句,一般考查如何根据题意确定循环条件,以及如何通过循环变量变化实现循环操作。

【解题思路】填空1:变量x定义为double类型,而运算符"/"后面是整型数,所以给x赋值时,需要注意数据类型,此处不能将3.0写成3。填空2:while循环语句的循环条件,根据题意确定循环变量应大于1e-3,因此此处应填">"。

填空3:表达式的通项是(2]

【解题宝典】本题填空1还可以运用强制类型转换来实现。

2012年9月全国计算机考试二级C语言最新上机题库(打印版).doc 将本文的Word文档下载到电脑

下一篇:2021年02月中国中标项目信息“操作台”情况统计

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7 元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx