《长春工业大学历年C语言期末考试试题.doc》由会员分享,可在线阅读,更多相关《长春工业大学历年C语言期末考试试题.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、长春工业大学历年C语言期末考试试题2004-12-22 由vince整理打印自: 长春工业大学三味书屋地址: C语言试题1一 填空题(15分)1设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为()。2设 int a=7,b=9,t;执行完表达式t=(ab)?a:b后,t的值是( )。3下面程序段的输出结果是( )。 int a=1234; a=a&0377; printf(“%d %on”,a,a);4a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。 char a3;5设有以下宏定义,则执行赋值语句 a=PP*20;(a为int型变量)后,a的值是( )。
2、#define PR 80 #define PP PR+4036在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:( )、( )和( )。7在C文件中,数据存在的两种代码形式是( )和( )。8C语言中调用( )函数打开文件,调用( )函数关闭文件,调用( )函数可实现文件的随机读写。9若有int a3=10,12,30;则a+1是( )的地址,*(a+2)=( )。二 判断对错(5分,对的划“”,错的划“”)1在Turbo C中,整型数据在内存中占2个字节。( )2表达式1/4+2.75的值是3。( )3结构体类型只有一种。( )4函数若无返回值,则它一定无形参。( ) 5C语言只
3、能处理文本文件和二进制文件。( )三 选择题(20分)1设 int a=12; 表达式a+=a-=a*=a的值是( )。 A 12 B 144 C 0 D 1322以下程序的输出结果是()。 main( ) int a=011;printf(“%dn”,+a);A 12 B 11 C 10 D 93以下程序的输出结果是( )。 #define ADD(x) (x)+(x) main() int a=4,b=6,c=7,d=ADD(a+b)*c; printf(“d=%d”,d); A d=70 B d=140 C d=280 D d=804.下面的选项中正确的赋值语句是(char a5,*p=
4、a;)()。 A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”;5若k为整形,则while循环执行()次。 k=2; while(k=0) printf(“%d”,k); k-; printf(“n”); A 10 B 9 C 0 D 16数组名作为实参传递给形参时,数组名被处理为()。A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值7两个指针变量不可以( )。A. 相加 B 比较 C 相减 D 指向同一地址8若有以下程序段,则值为6的表达式是( )。 struct st int n;struct st *nex
5、t; static struct st a3=5,&a1,7,&a2,9,0,*p; p=&a0;A p+-n B p-n+ C (*p).n+ D +p-n9要打开一个已存在的非空文件file用于修改,选择正确的语句( )。A fpfopen(file,r); B fp=fopen(file,w);C fp=fopen(file,r+); D fp=fopen(file,w+);四 写出下列程序的运行结果。(28分)1main( ) int a6=10,6,23,-90,0,3,i; invert(a,0,5); for(i=0;i6;i+) printf(“%d,”,ai); printf
6、(“n”);invert(int *s,int i,int j) int t; if(ij) invert(s,i+1j-1); t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; 2f1(int a) int b=0; static int c=3; b+=1; c+; return(a+b+c); main() int a=1,i; char s110=“java”,s210=“basic”,s10; for(i=0;i3;i+) printf(%d ,f1(a); printf(“n”); if(strcmp(s1,s2) strcpy(s,s1); puts(s);pri
7、ntf(“%d,%sn”,strlen(s2),strcat(s2,s1);3#define MAX 100main() int fMAX,i,j,k=2,m=5;for(i=0;i=m;i+) fi=1; fk-1=2;for(i=k;i=m;i+)for(j=i-k;j=i-1;j+) fi+=fj; printf(%d%5d%5dn,k,m,fm); 五 阅读下列程序,在 处填入适当内容,使程序完整。(32分)1求100200间的全部素数。 (1) main() int m,k,i,n=0; for(m=101;m=200;m+=2) if(n%10=0) printf(n); k=sq
8、rt(m); for(i= (2) ;i=k;i+) if(m%i=0) (3) ; if(i= (4) ) printf(%d ,m);n+; 2用选择法对数组中的10个字符按由大到小排序。void sort( (1) )char a ; int n; int i,j,k;char t; for (i=0;in-1;i+) (2) ; for(j=i+1;jn;j+) if ( (3) ) k=j; t=ak;ak=ai;ai=t; main( ) char s10;int i; for(i=0;i10;i+) scanf(“%c”,&si); (4) ; printf(“the sorte
9、d array:n”); for(i=0;i10;i+) printf(“%c”, (5) ); printf(“n”);33输入34数组,用指针方法实现将每行中的最小数与第0列元素对调。main() int a34,i,j,*p=a0;for(i=0;i3;i+) for(j=0;j4;j+) scanf(“%d”,p+);for(p=&a00;pa0+12; (1) ) swap(p); (2) ;for(i=0;i3;i+) for(j=0;j4;j+) printf(“%3d”,*p+); printf(“n”);swap(int (3) ) int min,i,*p2=p1,*p3;
10、 (4) ; for(i=0;i4;i+) if(*p24);4a数组定义如下,a数组中可用最小下标值是( ),最大下标值是( )。 char a3;5设有以下宏定义,则执行赋值语句a=ADD(4+6)*7;(a为int型变量)后,a的值是( )。#define ADD(x) (x)+(x)6若有以下说明、定义和语句,则对x.b成员的另外两种引用方式是:( )和( )。 struct st int a; struct st b; *p,x; p=&x;7在C中,文件指针变量的类型只能是( )。8在C中文件结束标志EOF只可用于( )文件。9a数组定义如下,若使数组a中存放字符串“friend”
11、 ,写出为数组a赋值的语句( )。char a10; 二 判断对错(10分,每题1分。对的划“”,错的划“”)1在Turbo C中,实型数据在内存中占4个字节。( )2被main函数调用的函数只能是库函数。( )3对整型变量可进行自加或自减运算,而对常量或表达式不可以。( )4算术运算符和赋值运算符的结合方向均由左自右。( )5定义在main函数后的任何函数都需在main中进行函数声明。( )6一个函数中只允许有一条return语句。( )7任何数组在使用时必须先定义。( )8在int *p;和语句printf(“%d”, *p);中的*p含义相同。( )9在定义枚举时,枚举常量可以是标识符或
12、数字。( )10用fopen(“file1”,”r+”)方式打开的文件可进行修改。( )三 选择题(20分,每题2分)1若有代数式,则错误的C语言表达式是( )。 A a*e/c/b B a*e/b/c C a*e/b*c D a/b/c*e2以下程序的输出结果是()。 main( ) int a=7,b=5;printf(“%dn”,b=b/a);A 不确定值 B 5 C 1 D 03以下程序的输出结果是( )。 main() int k1=1,k2=2,k3=3,x=15;if(!k1) x-;else if(k2) if(k3) x=4;else x=3; printf(“x=%dn”,
13、x); A x=4 B x=15 C x=14 D x=34. 以下程序的输出结果是()。 main() char s120=“China”,s220=“for”,s10; if(strcmp(s1,s2) printf(“%sn”, strcat(s2,s1);else printf(“%dn”,strlen(s1);A Chinafor B 5 C forChina D 35C语言中函数调用的方式有( )。A 函数调用作为语句1种 B 函数调用作为函数表达式1种 C 函数调用作为语句或函数表达式2种 D 函数调用作为语句、函数表达式或函数参数3种6关于return语句,下列正确的说法是(
14、)。A 可以在同一函数中出现多次 B 必须在每个函数中出现C 只能在除主函数之外的函数中出现一次 D 在主函数中不能出现7已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是( )。struct worker int no; char name20; char sex; struct birth int day; int month; int year;a;struct worker w;A day=25; month=10; year=1993;B w.birth.day=25; w.birth.month=10; w.birth.year=
15、1993;C w.day=25; w.month=10; w.year=1993;D w.a.day=25; w.a.month=10; w.a.year=1993;8已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是( )。A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数9若有下面的变量定义,以下语句中合法的是( )。int i,a10,*p;A p=a+2; B p=a5; C p=a2+2; D p=&(i+2);10若有以下的定义和语句
16、,则值为12的表达式是( )。struct wc int a;int *b;*p;int x0=11,12,x1=31,32;static struct wc x2=100,x0,300,x1; p=x;A *+p-b B +p-a C p-b D *(p+)-b四 写出下列程序的运行结果(25分,每题5分)1main() int number=0; while(number+=1) printf(*%d,number);printf(*%dn,number); 2#define N 7 main() int i,j,aNN; for(i=1;iN;i+) aii=1; ai1=1; for(
17、i=3;iN;i+) for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; for(j=1;jv) c=u; u=v; v=c; a=u; b=v; while(r=b%a)!=0) b=a; a=r; return(a); main() int u,v,h,l; u=32; v=48; h=hcf(u,v); printf(H.C.F=%dt,h);4main() int a=1,2,3,4,5,6,*p; p=a; *(p+3)+=2; printf(%d,%dn,*p,*(p+3); 5main() int y; fac(4,&y); printf(“y=%dn”,y
18、); fac(int n,int *t) int s; if(n=1)|(n=0) *t=1; else fac(n-1,&s); t=n*s; 五 阅读下列程序,在 处填入适当内容,使程序完整(25分,每个空2分)1试求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。) main() int i,a,m; for(i=1;i1000;i+) for(m=0,a=l;a=i/2;a+) if(!(i%a) (1) ; if( (2) ) printf(%4d,i
19、); 2用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char strN; main() int i,flag; for(i=0;i10;i+) scanf(%c,&stri); sort(_(1)_); for(i=0;iN;i+) printf(%c,stri); printf(n); sort(str) char strN; int i,j; char t; for(j=1;jN;j+) for(i=0;i (2) ) t=stri; _(3)_; _(4)_; 3.3将一个磁盘文件中的信息复制到另一个磁盘文件中。 #include stdio.h
20、 main() (1) *in,*out; char ch,infile10,outfile10; printf(Enter the infile name:n); scanf(%s,infile); printf(Enter the outfile name:n); scanf(%s,outfile); if(in=fopen(infile,r)=NULL) printf(Cannot open input file.n); exit(0); if(out=fopen(outfile,w)=NULL) printf(Cannot open output file.n); exit(0); w
21、hile(!feof(in) fputc( (2) ,out); (3) ; (4) ; 4.4用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 10 main() void maxmin(int arr,int *pt1,int *pt2,int n); int arrayN=10,7,19,29,4,0,7,35,-16,21,*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf(max=%d,min=%d,a,b); void maxmin(int arr,int *pt1,int *pt2,int
22、 n) int i; *pt1=*pt2=arr0; for(i=1;i*pt1) (1) ; if(arri278 的值是()。2当执行完以下语句后,变量a的值为( ),d的值为( ),e的值为( )。a=6; b=+a; c=-a; d=a+; e=a-;3下面程序段的输出结果是( )。 char a=111; a=a00; printf(“%d %on”,a,a);4a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。 char a3;5设有以下宏定义,则执行赋值语句 a=PP+20;(a为int型变量)后,a的值是( )。 #define PR 8 #define PP PR
23、*406定义结构体类型时,应使用关键字( ),定义枚举类型时,应使用关键字( )。7C文件可以分为两种类型,它们是( )文件和( )文件。8若有char a3=“as”;则*a=( ),*(a+2)=( )。二 判断对错(5分,对的划“”,错的划“”)1。( )2表达式1/4+2.75的值是3。( )3结构体类型只有一种。( )4函数若无返回值,则它一定无形参。( ) 5C语言只能处理文本文件和二进制文件。( )二 判断对错(10分,每题1分。对的划“”,错的划“”)1在Turbo C中,实型数据在内存中占4个字节。( )2被main函数调用的函数只能是库函数。( )3对整型变量可进行自加或自
24、减运算,而对常量或表达式不可以。( )4算术运算符和赋值运算符的结合方向均由左自右。( )5定义在main函数后的任何函数都需在main中进行函数声明。( )6一个函数中只允许有一条return语句。( )7任何数组在使用时必须先定义。( )8在int *p;和语句printf(“%d”, *p);中的*p含义相同。( )9在定义枚举时,枚举常量可以是标识符或数字。( )10用fopen(“file1”,”r+”)方式打开的文件可进行修改。( )三 选择题(20分,每题2分)1a,b为整形变量,二者均不为0,以下关系表达式中恒成立的是( )。 (A) a*b/a*b=1 (B) a/b*b/a
25、=1 (C) a/b*b+a%b=a (D) a/b*b=a2C语言源程序的基本单位是( )。 (A) 过程 (B) 函数 (C) 子程序 (D) 标识符3以下函数调用语句中含有( )个实参。 func(e1,e2),(e3,e4,e5); (A) 2 (B) 3 (C) 5 (D) 语法错误4以下的 for 循环( )。 for(x=0,y=0;(y!=123)&(x0) printf(“%sn”,s1);else printf(“%sn”,s2);(A) abc (B) 123 (C) abc123 (D) 123abc10已知职工记录描述如下,设变量w中的“生日”是“1993年10月25
26、日”,下列对“生日”的正确赋值方式是( )。struct worker int no; char name20; char sex; struct int day; int month; int year;birth;struct worker w;(A) day=25; month=10; year=1993;(B) w.birth.day=25; w.birth.month=10; w.birth.year=1993;(C) w.day=25; w.month=10; w.year=1993;(D) birth.day=25; birth.month=10; birth.year=1993
27、;四 写出下列程序的运行结果(25分,每题5分)1.main() int i,j; i=16; j=(i+)+i; printf(%dn,j); i=15; printf(%dt%dn,+i,i); 2.#include stdio.h main() int i; for(i=1;i+1;i+) if(i4) printf(%dn,i+); break; printf(%dn,i+); 3.#include stdio.h main() int i,j,a=0,2,8,4,5; printf(n); for(i=1;i=5;i+) j=5-i; printf(%2d,aj); 4.#inclu
28、de stdio.h main() char string1=ABCDEFGHIJ,string210; s(string1,string2,5); printf(%sn,string2); s(p,q,m) char *p.*q; int m; int n=0; while(nm-1) n+; p+; while(*p!=0) *q=*p; p+; q+; *q0; 5main() int y; fac(5,&y); printf(“y=%dn”,y); fac(int n,int *t) int s; if(n=1)|(n=0) *t=2; else fac(n-1,&s); t=n*s;
29、 五 阅读下列程序,在 处填入适当内容,使程序完整(25分,每个空2分)1试求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。) main() int i,a,m; for(i=1;i1000;i+) for(m=0,a=l;a=i/2;a+) if(!(i%a) (1) ; if( (2) ) printf(%4d,i); 2用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char strN; main() int i,f
30、lag; for(i=0;i10;i+) scanf(%c,&stri); sort(_(1)_); for(i=0;iN;i+) printf(%c,stri); printf(n); sort(str) char strN; int i,j; char t; for(j=1;jN;j+) for(i=0;i (2) ) t=stri; _(3)_; _(4)_; 3将一个磁盘文件中的信息复制到另一个磁盘文件中。 #include stdio.h main() (1) *in,*out; char ch,infile10,outfile10; printf(Enter the infile
31、name:n); scanf(%s,infile); printf(Enter the outfile name:n); scanf(%s,outfile); if(in=fopen(infile,r)=NULL) printf(Cannot open input file.n); exit(0); if(out=fopen(outfile,w)=NULL) printf(Cannot open output file.n); exit(0); while(!feof(in) fputc( (2) ,out); (3) ; (4) ; 4用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 10 main() void maxmin(int arr,int *pt1,int *pt2,int n); int arrayN=10,7,19,29,4,0,7,35,-16,21,*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf(max=%d,min=%d,a,b);