logo资料库

2012年云南昆明理工大学C程序设计考研真题A卷.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
2012 年云南昆明理工大学 C 程序设计考研真题 A 卷 一、填空题(30 分,每题 2 分) 1.设 float x=2.5,y=4.7; int a=7;,则表达式 x+a%3*(int)(x+y)%2/4 的值为 2.设 int a=3,b=5,c=7;,则表达式 a>c||c>b!=0&&c==b+a 的值为 。 3.已知方程 ax2+bx+c=0 系数 a、b、c 且存在两个实根,计算其中一个实根的算术表达式 为 4.判断变量 a、b 是否是数值相等而符号相反的逻辑表达式为 。 。 。 5.m 是值为两位数的整型变量,判断其个位数是奇数而十位数是偶数的逻辑表达式为 。 6.若 a=13、b=25、c=-17,条件表达式 ((y=(a #include main() { printf("%d\n", strlen("IBM\n012\t\"\\")); } 则程序运行后的输出结果是( )。 A. 10 B. 11 C. 16 D. 12 4.有如下程序片段: int i = 0;
while(i++ <= 2); printf("%d", i); 则正确的执行结果是:( ) A. 2 B. 3 C. 4 D. 程序陷入死循环 5.下面哪个定义是合法的( )。 A. char a[8] = "language"; B. int a[5] = {0,1,2,3,4,5}; C. char *a = "string"; D. int a[][] = {0,1,2,3,4,5,6}; 6.一个 C 程序的执行是从( )。 A.本程序的 main 函数开始,到 main 函数结柬 B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的 main 函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序 main 函数结束 7.以下叙述不正确的是( )。 A.一个 C 源程序可由一个或多个函数组成 B.一个 C 源程序必须包含一个 main 函数 C.C 程序的基本组成单位是函数 D.在 C 程序中,注释说明只能位于一条语句的后面 8.一个 C 程序是由( )。 A.一个主程序和若干子程序组成 C.若干过程组成 B.函数组成 D.若干子程序组成 9.若 x.i.j 和 k 都是 int 型变量,则计算下面表达式后,x 的值为( )。 x=(i=4,j=16,k=32) A. 4 B. 16 C. 32 D. 52 10.在 C 语言中,char 型数据在内存中的存储形式是( )。 A.补码 B.反码 C.原码 D. ASCll 码 11.设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是( )。 A. while 循环 10 次 C.循环体一次也不执行 B.循环是无限循环 D.循环体只执行一次 12..下面 for 循环的正确描述是( )。 A.for 循环只能用于循环次数已经确定的情况 B.for 循环是先执行循环体语句后判断表达式 C.在 for 循环中,不能用 break 语句结束循环 D.for 循环体语句中,可以包含多条语句,但必须用花括号括起来 13.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是()。 A.整型常量 C.整型常量或整型表达式 B.整型表达式 D.任何类型表达式 14.以下正确的函数首部定义是( )。 A.double fun(int x,int y) C.double fun(int x,int y); B.double fun(int x;int y) D.double fun(int x,y); 15.C 语言中,函数返回值的类型是由( )。 A.return 语句中的表达式类型所决定
B.调用该函数时的主调函数类型所决定 C.调用该函数时系统临时决定 D.在定义该函数时所指的函数类型所决定 16.若用数组名作为函数调用的实参,传递给形参的是( )。 A.数组的首地址 C.数组中全部元素的值 B.数给的第一个元数 D.数组元素的个数 17.以下有关宏替换的叙述不正确的是( )。 A.宏替换不占用运行时间 C.宏替换只是字符替换 B.宏名无类型 D.宏名必须用大写字母表示 18.用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( )。 A.生成可执行目标文件 C.输出运行结果 B.生成目标文件 D.自动保存源文件 19.下列各个错误中,属于编译错误的是( )。 B.“==”误写为“!=” A.数组下标超界 20. 若 int 类型数据字长为 4,其最大值为( )。 C.死循环 D.括号不配对 A.231 B.231-1 C.232-1 D.232 21.常数的书写格式决定了常数的类型和值,03322 是( )。 A.16 进制 int 类型常数 C.10 进制 int 类型常数 B.8 进制 int 类型常数 D.10 进制 long int 类型常数 22.下列各语句序列中,能够将变量 u 和 s 中最大值赋值到变量 t 中的是()。 A.if(u>s)t=u; t=s; C.if(u>s)t=s; else t=u; B.t=s; if(u>s)t=u; D.t=u; if(u>s)t=s; 23.下列各语句中,能够输出整型变量 a 和 b 中最大值的是()。 A.printf("%d\n",(a>b)?a,b); C.printf("%d",if(a>b)a else b); B.(a>b)? printf("%d",a):printf("%d",b); D.printf("%d\n",(a>b)?a:b); 24.定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是()。 for(i=0;i<3;i++) printf("%d",x[i][2-i]); A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 25.不能把字符串:Hello!赋给数组 b 的语句是()。 A.char b[10]={'H','e','l','l','o','!'}; C.char b[10];strcpy(b,"Hello!"); D.char b[10]="Hello!"; B.char b[10];b="Hello!"; 三、写出下列程序的运行结果。(15 分,每题 3 分) 1. #include main( ) { int a = 5, b = 4, x, y; x = 2 * a ; printf("a=%d, x=%d\n", a, x); y = b * 2; printf("b=%d, y=%d\n", b, y);
} 则程序运行结果是: 2. #include void fun1(int x) { x=20; } void fun2(int b[4]) { int j; for(j=0; j<4; j++) b[j]=j; { } } main() { int x = 10; int a[4] = {1,2,3,4}, k; fun1(x); printf("x = %d\n", x); fun2(a); for(k=0; k<4; k++) { printf("%d\n", a[k]); } } 运行结果是: 3.#include { void main( ) int k=0; char c='A'; do { switch (c) case 'A': k++; break; case 'B': k--; case 'C': k+=2; break; case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3; { } c++; } while(c<'G'); printf("k=%d\n", k);
} 输出结果: 4. #include void fun1(int n,int a[][3]) { for(int i=0;i long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return (2); } main() {printf(“%ld\n”,fib(6)); } 运行结果 四、程序填空题(共 20 分,每空 2 分) 1.下面这个程序的功能是对含有 n 个元素(最多 10 个)的一维数组按升序进行排序。 #include #define ARRAY_SIZE 10 void Sort(int a[], int n); void InputArray(int a[],int n); void PrintArray(int a[],int n); main() { int a[ARRAY_SIZE], n; printf("Input array lenth n<=10: "); scanf("%d", &n); printf("输入数组 a:\n"); InputArray(a, n); Sort(a, n);
printf("打印排序后的数组 a:\n"); PrintArray(a, n); } void Sort(int a[], int n) {int i, j, p, temp; for(i = 0; i < (1) ; i++) { p = i; for(j = (2) ; j < n; j++) { } if( { } if( (3) ) p = j; (4) ) temp = a[p]; a[p] = a[i]; a[i] = temp; } } void InputArray(int a[], int n) { int i; for (i = 0; i < n; i++) { } (5) ; } void PrintArray(int a[], int n) { int i; for (i = 0; i < n; i++) { } printf("%d ", a[i]); printf("\n"); } 2.下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分 开。[提示:判断是否有新单词出现的方法是------当前被检验的字符不是空格,而前一被 检验字符是空格,则表示有新单词出现。] #include main() {char str[80]; int i, num;
gets(str); if(str[0]!= ' ') { } else { } num = 1; num = 0; for(i = 1; str[i] (6) ; i++) if(str[i] (7) && str[i-1] (8) ) num++; { } { } printf("num=%d\n", num); } 3. 输入一行字符,统计其中的英文字符、数字字符及其它字符的个数。 #include #include #define ARR_SIZE 80 main() { char str[ARR_SIZE]; int len, i, letter=0, digit=0, others=0; gets(str); for (i=0; { (9) ; i++) if ( ) (10) letter ++; else if (str[i]>=’0’&& str[i]<=’9’) digit ++; else others ++; } printf("English character: printf("digit character: printf("other character: %d\n", letter); %d\n", digit); %d\n", others); } 五、编程(35 分) 1. 编程计算 1!+2!+3!+……+10!的值。(12 分)
2. 从键盘任意输入某班 20 个学生的成绩,打印最高分,并统计不及格学生的人数。(12 分) 要求按如下函数原型进行编程,分别计算最高分和统计不及格学生的人数: int FindMax(int score[], int n); int CountFail(int score[], int n); 3. 从键盘任意输入一个 4 位数 x,编程计算 x 的每一位数字相加之和(忽略整数前的正负 号)。例如,输入 x 为 1234,则由 1234 分离出其千位 1、百位 2、十位 3、个位 4,然后计 算 1+2+3+4=10,并输出 10。(11 分)
分享到:
收藏