logo资料库

2017年浙江宁波大学C程序设计考研真题.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
2017 年浙江宁波大学 C 程序设计考研真题 一、单项选择题:本大题共 25 小题,每小题 3 分,共 75 分。 1、判断字符变量 c 的值为数字(‘0’--‘9’)则返回 1,否则返回 0,可用表达式:______。 A) ‘0’<=c<=‘9’ B) ‘0’<=c && c<=‘9’ C) ‘0’<=c || c<= ‘9’ D)以上均不是 2、设有定义语句:int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出 x 数组 6 个元素中的 值,不 能完成此操作的语句是______。 3、以下不正确的叙述是__________。 A)在 C 程序中,逗号运算符的优先级最低 B)在 C 程序中,APH 和 aph 是两个不同的变量 C)若 a 和 b 类型相同,在执行了赋值表达式 a=b 后 b 中的值将放入 a 中而 b 中的值 不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入包含小 数 点的实型数值 4、设 x、y 和 z 是 int 型变量,且 x=3,y=4,z=5,则下面表达式中值为 0 的是_____。 A)‘x’&&‘y’ B)x<=y C)x||y+z&&y-z D)!((xnext = p+1; p->next = s; B) p->next = s; s->next = p->next; C) s->next = p->next; p->next = s->next; D) s->next = p->next; p->next = s; 8、对于以下递归函数 f, 调用 f(4),其返回值为:___________。 int f(int n) { return f(n-1)+n; } A) 10 B) 11 C) 0 D) 以上均不是
9、设有程序段,则下面描述中正确的是_________。 int k=10; while(k=0) k=k-1; A)while 循环执行 10 次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 10、以下能正确计算 1×2×3×…×10 的程序段是 。 11、下面有关 for 循环的正确描述是_________。 A) for 循环只能用于循环次数已经确定的情况 B) for 循环是先执行循环体语句,后判断表达式 C) 在 for 循环中,不能用 break 语句跳出循环体 D)for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 12、如下程序的输出结果是 _ 。 #include void main( ) { int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++; b++; } printf("a=%d, b=%d\n",a,b); } A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2 13、以下能对一维数组 a 进行正确初始化的语句是______。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]=(0); D)int a[10]={10*1}; 14、定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是______。 for(k=0;k<3;k++) printf(“%d”,a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7 15、判断字符串 a 和 b 是否相等,应当使用_____。 A)if(a==b) B)if(a=b)
C)if(strcpy(a,b)) D)if(strcmp(a,b)==0) 16、以下正确的函数形式是_______。 A)double fun(int x,int y) { z=x+y; return z; } B)fun(int x,y) { int z; return z; } C)fun(x,y) { int x,y; double z; z=x+y; return z; } D)double fun(double x,double y) { double z; z=x+y; return z; } 17、以下正确的说法是________。 A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 18、设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与 n2=n1;语句等价的是 ______。 A)*p=*q; B)p=q; C)*p=&n1; D)p=*q; 19、 如果在一个函数中的复合语句中定义了一个局部变量,则该变量 。 A) 只在该复合语句中有效 B)在该函数中有效 C) 本程序范围内均有效 D)为非法变量 20、设变量 a 是整型,f 是实型,i 是双精度型,则表达式 10+'a'+i*f 值的数据类型为 _____。 A)int B)float C)double D)不确定 21、在 C 语言中,__________表示逻辑值“真”。 A) true B) 大于0的数 C) 非0的整数 D) 非0的数 22、对于数组定义 char a[ ]={49, 50, 51, 52},说法正确的是__ ___。 A) 定义错误,因为数组长度未知 B) 定义错误,因为该数组为字符型数组,而其初始化值为整数 C) a 为一个长度为 5 的字符串 D) a 为一个长度为 4 的字符型数组 23、当说明一个结构体变量时系统分配给它的内存是 。 A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 24、逻辑运算符两侧运算对象的数据类型 。 A)只能是 0 或 1 B)只能是 0 或非 0 正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 25、下列叙述中正确的是 。 A) break 语句只能用于 switch 语句中 B) continue 语句的作用是使程序的执行流程跳出包含它的所有循环 C) break 语句只能用在循环体和 switch 语句内 D) 在循环体内使用 break 语句和 continue 语句的作用相同 二、 程序阅读题:本大题共 6 小题,每小题 5 分,共 30 分。 (1)请写出程序的运行结果。
#include "stdio.h" void varfunc() { int var=0; static int static_var=0; printf("var equal %d \n",var); printf("static var equal %d \n",static_var); var++; static_var++; } int main(){ int i; for(i=0;i<3;i++) varfunc(); return 0; } (2)请写出程序的运行结果。 #include length(char *p){ int n; n=0; while(*p!='\0') { if (!(*p>='0' && *p<='9')) n++; p++; } return n; } int main(){ char str1[20],str2[20]; scanf("%s",str1); scanf("%s",str2); printf("the string has %d characters.\n",length(str1)); printf("the string has %d characters.\n",length(str2)); return 0; } ①当输入“hello world”时,程序的运行结果。 ②当输入“hello student123”时,程序的运行结果。 (3)请写出程序的运行结果。 #define N 4 #include struct man{ char name[20]; int age; } person[N]={"li",18,"wang",19,"zhang",23,"sun",22}; int main(){ struct man *q,*p;
int i,m=0; p=person; for (i=0;iage) {q=p++;m=q->age;} } printf("%s,%d\n",(*q).name,(*q).age); printf("%s,%d\n",(*p).name,(*p).age); } (4)请写出程序的运行结果。 int main(){ int a,b,m,n; scanf("%d%d",&a,&b); m=n=1; if (a>0) m=m+n; if (a,程序的运行结果。 ②当输入:1 0<回车>,程序的运行结果。 (5)请写出程序的运行结果。 #include int strl(char a[],char b[]){ int num=0;int n=0; while (a[num]!='\0') num++; while (b[n]){ a[num]=b[n]; num++;n++; } a[num]='\0'; printf("%s\n",a); return(num); } int main(){ char s1[81],s2[81]; gets(s1); gets(s2); printf("%d\n",strl(s1,s2)); return 0; } 当从键盘输入字符串”hello”和字符串”world”写出程序的运行结果。 (6)请写出程序的运行结果。 #include
void main() { int m,n,i,k=1,x=1,n1, a[1000]; scanf("%d%d",&n,&m); n1=n; for (i=1;i<=n;i++) a[i]=0; while (1) { while (a[k]==1) { k++; if (k==(n+1)) k=1; } if (x==m) { a[k]=1; printf("%d\n",k); n1--; if (n1==1) break; x=1; } else x++; k++; if (k==(n+1)) k=1; } for (i=1;i<=n;i++) if (a[i]==0) printf("WIN=%d\n",i); } 当输入 4 3 时,写出程序的运行结果。 三、 程序设计题:本大题共 3 小题,每小题 15 分, 共 45 分。 1、验证 2000 以内的正偶数都能够分解为两个素数之和。请写出程序输出分解结果。 2、键盘输入一串字符(长度不超过 100),保留其中大小写英文字母、空格和英文句号’.’, 删 除其余字符并屏幕输出结果,然后颠倒该字符串输出。 输入样例: .#tne^du(t6s! a %ma9 I 输出样例: .tneduts a ma I I am a student. 3、构造 N×N 阶的拉丁方阵(2<=N<=9),使方阵中的每一行和每一列中数字 1 到 N 只出现 一次。 如 N=4 时: 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3
分享到:
收藏