当前位置:首页 > 2005年春浙江省计算机等级考试二级C试卷及答案
2005年春二级C考试试卷
试题一、判断题(每小题1分,共10分)
说明:在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (1) 在C语言中,常量和变量都有数据类型。
(2) C语言的运算符只有单目运算符和双目运算符两种。 (3) 若变量己正确定义,表达式x+y=z符合C语言语法。 (4) C编译器可以找出C源程序中所有的语法错误和逻辑错误。 (5) 表达式3*5/2和表达式3/2*等价。
(6) 表达式m=n++的求解顺序是先计算m=n,再计算n=n+1。 (7) 变量名fahr和Fahr代表两个不同的变量。
(8) 若表达式sizeof(unsigned)的值为2,则unsigned类型数据能表示的最大整数为
2-1。
(9) break语句只能用于循环结构中。
(10) while语句先判断循环条件,所以循环体有可能一次也不执行。 试题二、单选题(每小题2分,共20分)
b(11)执行scanf(“%d%lf%d”,&money,&rate,&year), 输入(11)后,money=1000, year=3, rate=0.025.
A、1000 3 0.025 B、1000 0.025 3 C、1000,3,0.025 C、1000,0.025,3 c(12)判断变量ch是英文字母的表达式为(12)。
A、('a'<=ch<='z')||('A'<=ch<='z')
B、(ch>='a' && ch<='z')&&(ch>='A' && ch<='Z') C、(ch>='a' && ch<='z')|| (ch>='A' && ch<='Z') D、('A'<=ch<='z')&&('A'<=ch<='z') b (13)while((13))等价于while(!x)。
A、x==1 B、x==0 C、x!=0 D、x!=1
a(14)以下程序段输出字符串str, 其中循环条件str[i]!= 0 还可以写成(14)。
char str[80];
for(i=0;str[i]!='\\0' i++) putchar(str[i]);
A、str[i]!=NULL B、i< 80 C、!(str[i]= '\\0' D、i<=80
d(15)设变量定义为:int n,*p;char ch,*q,*g;,则语句(15)是不正确的。
A、p=&n;g=q=&ch; B、p=&n;q=&ch; C、p=&n;g=&ch D、p=&n;q=&ch;g=p;
a(16)设变量定义如下,则对其中的结构分量num正确的引用是(16)。
16
struct student{ int num; Char name[20]; float scire;
}stud[10];
A、stud[1].num = 10; B、student.stud.num = 10; C、struct.stud.num = 10; D、struct student.num = 10; d(17)对于以下递归函数f,调用函数f(2, 1 2 3)的输出结果是(17)。 void f(int n,char a,char b,char c) { if(n==1)
printf(\ else
{ f(n-1,a,c,b);
printf(\ f(n-1,c,b,a); } }
A、1->2#1->3#3->2# B、3->2#1->2#1->3# C、'1'->'3'#'3'->'2'#'1'->'2'# C、1->3#1->2#3->2# d(18)下列程序段的输出结果是(18)。 int t,a[3] = {10,5,1}; int *p;
for(p =a; p t =t + *p; printf(“%d” ,t); A、15 B、16 C、10 D、不确定 c(19)设变量定义为: int *p[3],a[3];,(19)是正确的赋值。 A、p =&a[9] B、*p = **a C、p[0] = a D、**p = a b(20)对于以下的变量定义,语句(20)在语法和语义上都是正确的。 struct node{ float x,y; char s[10]; }point = {1,2, “abc”},*p; A、*p = point; B、p = point; C、point = p; D、p->x = point.y; 试题三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 1.程序1、 [程序说明] 根据下式计算s 的值,要求精确到最后一项的绝对值小于106 。 s = 1-1/3+1/5-1/7+……. [程序] #include { int flag = 1, t = 1; (21) while( (22) ){ item = flag * 1.0 / t ; s = s + item ; (23) ; t =t+2; } printf ( “s = %f\\n” ,s); } (21) A、double item = 2 , s = 0; B、double item = 0 , s = 0; C、double item = 1 , s = 1; D、double item = 3 , s = 1; (22) A、item<1E-6 B、item>=1e-6; C、fabs(item)<1E-6 D、fabs(item)>=1E-6 (23) A、flag = -1 B、s = -s C、flag = -flag; D、t = -t 2、程序2 [程序说明] 验证哥哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。将6——100之间的每个偶数都表示成两个素数之和。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 [程序] #include \#include \void main() { int i, k; int prime(int m); for (i=6;i<=100;i=i+2) for(k=3;k=<50;k++) if ( 24 ){ printf (\ break; } } int prime(int m) { int k, n; if(m = = 1) return 0; n = (int)sqrt (m); for (k = 2; k <= n ;k++) (25) ; (26) ; } (24) A、prime(i) B、prime(i) && prime(k) C、prime(k) && prime(i-k) D、prime(k) (25) A、if (m%k!=0) return 0 B、if(m%k==0) return 0 C、if(m%k==0) return 1 D、if(m%k !=0) return 1 (26) A、return 0 ; B、return 1; C、else return 0; D、else return 1; 程序3 [程序说明] 输入一个字符串(少于80个字符),滤去所有的非八进制字符后,组成一个新符串(八 进制形式),然后将其转化为十进制整数后输入。函数stoi(str)将八进制形式的字符串str 转换为十进制整数,例如,stoi(“12”)的值为10(八进制12对应十进制10)。 [程序] #include int stoi(char *str); gets(s); for( i=k=0;s[i]!=’\\0’;i++) if(s[i]<=’7’&&s[i]>=’0’) (27) (28) printf(“digit=%d\\n”, (29) ) }
共分享92篇相关文档