全国计算机二级c语言题库试题及答案
计算和模拟作为一种新的研究手段,常使一些学科衍生出新的分支学科。以下是关于全国计算机二级c语言题库试题及答案,欢迎大家参考!
一、选择题(每小题1分,共40分)
1). 设有定义: struct {char mark[12]; int num1; double num2;} t1,t2; 若变量均已正确赋初值,则以下语句中错误的是 ( )
A.t2.num1=t1.num1;
B.t2.mark=t1.mark;
C.t1=t2;
D.t2.num2=t1.num2;
正确答案:B
答案解析:这个题目主要涉及到结构体的定义与赋值操作。根据题意结构体变量t1,t2的成员变量mark是字符数组,对于字符数组之间的赋值操作应该使用循环语句对每个字符进行赋值,而选项A是用数组名实现字符数组之间的赋值操作,是错误的。
2). 若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是( )
A.main() { …… x=fun(2,10); ……} float fun(int a,int B{……}
B.float fun(int a,int B{……} main() { …… x=fun(i,j); ……}
C.float fun(int ,int); main() { …… x=fun(2,10); …… } float fun(int a,int B{……}
D.main() { float fun(int i,int j); …… x=fun(i,j); …… } float fun(int a,int B{……}
正确答案:A
答案解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。在选项A中,调用的子函数在调用后面定义,所以不正确。在选项B、C中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D中,在主函数中先对子函数float fun(int i,int j)进行了声明,然后进行调用。
3). 数据库设计包括两个方面的设计内容,它们是
A.概念设计和逻辑设计
B.模式设计和内模式设计
C.内模式设计和物理设计
D.结构特性设计和行为特性设计
正确答案:A
答案解析:数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。
4). 在设计程序时,应采纳的原则之一是
A.不限制goto语句的使用
B.减少或取消注解行
C.程序越短越好
D.程序结构应有助于读者理解
正确答案:D
答案解析:滥用goto 语句将使程序流程无规律,可读性差,因此A不选;注解行有利于对程序的理解,不应减少或取消,B也不选;程序的长短要依照实际情况而论,而不是越短越好,C也不选。
5). 关系表中的每一行记录称为一个( )。
A.字段
B.元组
C.属性
D.关键码
正确答案:B
答案解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每…行称为一个元组,对应表中的'一条记录。
二、操作题
【真题1】 下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的
交换,规定不允许增加语句和表达式。例如变量a初值为8,b 初值为3,程序运行
后a 中的值为3,b 中的值为8。 试题程序:
#include < conio.h >
#include < stdio.h >
int fun(int *x,int y)
{ __1___ t;
t=*x;*x=y;
return(t)__2__
}
main()
{int a=3,b=8;
printf("%d %d\n ",a,b);
b=fun(__3__,b);
printf("%d %d\n ",a,b);
}
解析: 填空1:根据题目的意思,这里应该是声名一个新的变量t,由后面的赋
值语句以及返回语句可以明白这个变量应该是整型的(因为函数的返回值类型
是int)。
填空2:根据题目的意思,此处是子函数的返回语句,由C 语言的知识,每个
语句的结尾都应该使用";" 。
填空3:fun()函数的调用方式说明fun()函数的参数应当为指针类型,即应该
把变量的地址作为参数传递(符号"&"是取地址操作)。
答案:【1】int 【2】; 【3】&a
【真题2】 给定程序modi.c 中函数fun的功能是:求两个形参的乘积和商数,并
通过形参返回调用程序。 例如输入:61.82 和 12.65,输出为: c =
782.023000 d = 4.886957。 请改正 fun 函数中的错误,使它能得出正确的结
果。 注意:不要改动 main 函数,
#include < stdio.h >
#include < conio.h >
/**********found**********/
void fun ( double a, b, double x,y )
{/**********found**********/
x = a * b; y = a / b;
}
main ( )
{ double a, b, c, d;
clrscr( );
printf ( "Enter a , b : ");
scanf ( "%lf%lf", &a, &b );
fun ( a , b, &c, &d ) ;
printf (" c = %f d = %f\n ", c, d );
}
解析: 本题的考核点是C语言中函数的入口参数和指针的使用。
函数的参数表是由逗号分隔的变量表,变量表由变量类型和变量名组成,与普
通的变量说明不同,函数参数必须同时具有变量类型和变量名,因此应该把程
序中"void fun ( double a, b, double x,y )"语句改为"void fun ( double a,
double b, double *x, double *y )"或相同作用的语句。
从主函数里的" fun ( a , b, &c, &d ) ; "语句可以看出,fun 函数后两个参数
应为长浮点型数据的指针,因此应该把程序中"x = a * b; y = a / b;"语句改
为"*x = a * b; *y = a / b;"或相同作用的语句。