《C语言程序设计》课程期末考试试题(A卷).pdf
C 语言程序设计课程期末考试试题(A 卷)一、单项选择题一、单项选择题(共 39 分,每小题 1.5 分。四选一,答案填在答题卡上,否则不得分)1增 1 减 1 运算只能作用于 1 。A常量 变量C表达式D函数2设有如下定义:int x=10,y=3,z; 则语句printf(%dn,z=(x%y,x/y); 的输出结果是_2_A0B1C4D33变量已经正确定义,要将 a、b 两个数交换,不正确的语句是 3 。Aa=a+b,b=a-b,a=a-b;a=b,b=aCt=a,a=b,b=t;Dt=b;b=a;a=t;4若已经正确说明 a、b、c 为 int 类型变量,要给它们输入数据,则正确的输入语句是_4_。Aread(a,b,c);Bscanf(%d%d%d,a,b,c);Cscanf(%D%D%D,&a,&b,&c);Dscanf(%d%d%d,&a,&b,&c);5x 为 int 型变量,执行以下语句后,x 的值为 5 。 x=10; x+=x-=x-x;A10B20C30D406在 C 语言中,要术运算数必须是整型的运算符是 _6_ (A)、!(B)、%(C)、/(D)、7下面程序 7 。 main() int x=3,y=0,z=0;if (x=y+z) printf(*n); else printf(#n); A有语法错误,不能通过编译 输出*C可以通过编译,但不能连接,因此不能运行D输出#8字符(char)型数据在微机内存中的存储形式是 _8_ A补码BEBCDIC 码C反码DASCII 码9while(!x)中的!x 与下面表达式 9 等价。Ax=0 x=1Cx!=5Dx!=010下面两个程序段中,变量 sum 与 i 的初值均相同,在 10 情况下,两个程序段的执行结果不同。(1) while (i=10) (2)do sum+=i; sum+=i; i+; i+; while (i10); Ai 的初值大于 10i 的初值小于 10C任意条件Dsum 的初值为 011表示关系 x=y=z 的 c 语言表达式为 _11_ A(x=y)&(y=z)B(x=y)AND(y=z)C(x=y=z)D(x=y)&(y=z)12假设有两个字符数组 a、b,则以下正确的输入语句是 12 。Agets(a,b);scanf(%s %s,a,b);Cscanf(%s%s,&a,&b);Dgets(a); gets(b);13下面描述正确的是 13 。A两个字符串所包含的字符个数相同时,才能比较字符串B字符个数多的字符串比字符个数少的字符串大C字符串STOP 与STOP相等D字符串That小于字符串The14若二维数组 a 有 m 行 m 列,则计算任一元素 aij在数组中位置的公式为 14 。 (假设a00位于数组的第一个位置上,且 im,jage D(*p).age 21以下描述正确的是 21 。AC 语言的预处理功能是指完成宏替换和包含文件的调用预处理指令只能位于 C 源程序文件的首部C凡是 C 源程序中行首以#标识的控制行都是预处理指令DC 语言的编译预处理就是对源程序进行初步的语法检查23已知“int a,*p=&a;”则下列函数调用中要求输入输出 a 的值,错误的是 23 。Ascanf(%d,&a);scanf(%d,p);Cprintf(%d,a);Dprintf(%d,p);24以下选项中,对指针变量 p 正确的操作是 24 。Aint a6,*p; p=&a;int a6, *p; p=a;Cint a6; int *p=a=1000;Dint a6; int *p, *q=a; *p=*q; 25若有以下说明:int w34=0,1,2,4,5,8;int (*p)4=w;则数值为 4 的表达式是( )Ap+,*(p+1)B*w1+1Cw22Dp1126有如下定义:struct data int year,month,day; ;struct person char name20; char sex; struct data birthday;a;对结构体变量 a 的出生年份赋值时,下面正确的赋值语句是 26 。Ayear=1989;birthday.year=1989;Ca.birthday.year=1989; Da.year=1989;二、判断对错题二、判断对错题27设 x 和 y 均为 int 型变量,且 x=1,y=2, 则表达式 1.0+x/y 的值为 1.0。 ( )A、正确B、错误28以下函数 test 返回值类型为 float。 ( )test(int x) printf(%fn,(float)x);A、正确B、错误29在对文件进行操作的过程中,若要求文件的位置回到文件的开头,只能调用函数 rewind。 ( )A正确B错误30有以下说明定义和语句,除可用 a.day 引用结构体成员 day,还可用形式(*b).day 和*b-day引用结构体成员 a.day。struct int day;char mouth;int year;a,*b;b=&a;A错误B正确31设 i,j,k 均为 int 型变量则执行完下面的 for 循环后,k 的值为 9。for(i=0,j=10;i3&2|8b)&(n=cd);执行后 m=0,n=1。A错误B正确37在 C 语言中,对文件读/写之前,该文件必须已经存在,否则会出错。A错误B正确 三、程序填空题(每空三、程序填空题(每空 2 分,共分,共 20 分)分)1、在函数 abcd 中交换两个变量的值。#include main( ) float x=10, y=20; abcd ( ); printf (%f, %fn, x, y);abcd (int x, int y) float temp; temp=x; ; ; 2、下面程序将二维数组 a 的行和列元素互换后存到另一个二维数组 b 中。#include main() int a23=1,2,3,4,5,6; int b32,i,j; prntf(arrary a:n); for(i=0; i=1; i+) for(j=0; ; j+) printf(%5d, aij); ;printf(n); printf(array b:n); for(i=0;i=2; i+) for(j=0; j=1; j+) printf(%5d,bij); printf(n); 3、将 3 名学生的数据存入名为 student.dat 的文件。#define SIZE 3struct student long num; char name10; int age; stuSIZE; void fsave( ) FILE ; int i; if ( ( fp=fopen(student.dat, )=NULL ) printf(Cannot open file!n); exit(1); for ( i=0; iSIZE; i+ ) if ( fwrite(&stui, sizeof(struct student), 1, fp)!=1 ) printf(File write error!n); ; 4、程序读入 20 个整数,统计非负数个数,并计算非负数之和。#include main ( ) int i, a20, s, count; s=count=0; for ( i=0; i20; i+ ) scanf(%d, ); for ( i=0; i20; i+ ) if ( ai0 ) _ ; s += ai; count+; printf (s=%dt count=%dn, s, count); 四、编程题:(共四、编程题:(共 30 分)分)1、 1、 输入三个数并按由小到大次序输出,文件名 bca1.cpp (10 分)2、 2、 编写判断一个数是否为素数的函数 fun(),并在主函数调用该函数输出 200 以内的所有素数。文件名 bca2.cpp(20 分) C 语言程序设计 课程期末考试参考答案(A 卷)一、单选题一、单选题(共 39 分,每小题 1.5 分。 )12345678910BDBDBBDDAA11121314151617181920ABDDDAADCB212223242526 C DBDC 二、判断题二、判断题 (共 11 分,每题 1 分。)272829303132ABBAAA3334353637 BBABA 三、填空题三、填空题 (共 20 分,每题 2 分。): x,y : x=y : y=temp : j=2 或 j3 : bji=aij : *fp : wb : fclose(fp) : &ai或 a+i : continue 四、编程题四、编程题 (共 3 分,第 1 小题 10 分,第 2 小题 20 分。)1参考程序如下:#include main() float x,y,z,t; printf(Enter input x,y,z: ); scanf(%f,%f,%f,&x,&y,&z); if(xy) t=x;x=y;y=t; if(xz) t=x;x=z;z=t; if(yz) t=y;y=z;z=t; printf(%5.2f,%5.2f,%5.2fn,x,y,z);2参考程序如下:#include main() int fun(int n); int i; for(i=1;i=200;i+) if(fun(i) printf(%5d,i); int fun(int n) int flag=1,i; for(i=2;in/2 & flag=1;i+) if(n%i=0) flag=0; return(flag);