c语言期末复习试题,上机练习
更新时间:2024-06-17 07:48:01 阅读量: 综合文库 文档下载
- c语言试卷及答案期末推荐度:
- 相关推荐
C语言试题1
一 填空题(15分)
1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为( )。 2.设int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是( )。 3.下面程序段的输出结果是( )。 int a=1234; a=a&0377; printf(“%d %o\\n”,a,a);
4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。 char a[3];
5.设有以下宏定义,则执行赋值语句a=PP*20;(a为int型变量)后,a的值是( )。 #define PR 80
#define PP PR+403 6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:( )、( )和( )。 7.在C文件中,数据存在的两种代码形式是( )和( )。
8.C语言中调用( )函数打开文件,调用( )函数关闭文件,调用( )函数可实现文件的随机读写。
9.若有int a[3]={10,12,30};则a+1是( )的地址,*(a+2)=( )。 二 判断对错(5分,对的划“√”,错的划“×”
1.在Turbo C中,整型数据在内存中占2个字节。( ) 2.表达式1/4+2.75的值是3。( ) 3.结构体类型只有一种。( )
4.函数若无返回值,则它一定无形参。( ) 5.C语言只能处理文本文件和二进制文件。( ) 三 选择题(20分)
1.设int a=12; 表达式a+=a-=a*=a的值是( )。 A 12 B 144 C 0 D 132 2.以下程序的输出结果是( )。 main( )
{ int a=011;
printf(“%d\\n”,++a); }
A 12 B 11 C 10 D 9 3.以下程序的输出结果是( )。 #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=80 4.下面的选项中正确的赋值语句是(char a[5],*p=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 1
6.数组名作为实参传递给形参时,数组名被处理为( )。
A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 7.两个指针变量不可以( )。
A. 相加 B 比较 C 相减 D 指向同一地址 8.若有以下程序段,则值为6的表达式是( )。 struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,?\\0?},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
9.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。 A fp=fopen(\ B fp=fopen(\ C fp=fopen(\ D fp=fopen(\ 四 写出下列程序的运行结果。(28分) 1.main( )
{ int a[6]={10,6,23,-90,0,3},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“\\n”); }
invert(int *s,int i,int j) { int t; if(i { invert(s,i+1j-1); t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; } } 2.f1(int a) { int b=0; static int c=3; b+=1; c++; return(a+b+c); } main() { int a=1,i; char s1[10]=“java”,s2[10]=“basic”,s[10]; for(i=0;i<3;i++) printf(\ printf(“\\n”); if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);} printf(“%d,%s\\n”,strlen(s2),strcat(s2,s1)); } 3.#define MAX 100 main() { int f[MAX],i,j,k=2,m=5; for(i=0;i<=m;i++) f[i]=1; f[k-1]=2; for(i=k;i<=m;i++) for(j=i-k;j<=i-1;j++) f[i]+=f[j]; printf(\ } 五 阅读下列程序,在 处填入适当内容,使程序完整。(32分) 1.求100~200间的全部素数。 (1) main() { int m,k,i,n=0; for(m=101;m<=200;m+=2) { if(n==0) printf(\ k=sqrt(m); for(i= (2) ;i<=k;i++) if(m%i==0) (3) ; if(i== (4) ) { printf(\;n++;} } } 2.用选择法对数组中的10个字符按由大到小排序。 void sort( (1) ) char a[ ]; int n; { int i,j,k; char t; for (i=0;i for(j=i+1;j if ( (3) ) k=j; t=a[k];a[k]=a[i];a[i]=t;} } main( ) { char s[10]; int i; for(i=0;i<10;i++) scanf(“%c”,&s[i]); (4) printf(“the sorted array:\\n”); for(i=0;i<10;i++) printf(“%c”, (5) ); printf(“\\n”); } 33.输入3×4数组,用指针方法实现将每行中的最小数与第0列元素对调。 main() { int a[3][4],i,j,*p=a[0]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”,p++); for(p=&a[0][0];p swap(p); (2) ; for(i=0;i<3;i++) { for(j=0;j<4;j++) printf(“=”,*p++); printf(“\\n”);} } swap(int (3) ) { int min,i,*p2=p1,*p3; (4) ; for(i=0;i<4;i++) { if(*p2<*p3) p3=p2; (5) ; } min=*p1;*p1=*p3;*p3=min; } 2002试题2 一 填空题(20分,每空1.5分) 1.当执行完以下语句后,变量a的值为( ),b的值为( ),c的值为( )。 a=6; b=++a; c=--a; 2.已知a=3、b=2,则表达式a*=b+8的值是( )。 3.下面程序段的输出结果是( )。 int a=125; printf(“%d\\n”,a>>4); 4.a数组定义如下,a数组中可用最小下标值是( ),最大下标值是( )。 char a[3]; 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只可用于( )文件。 9.a数组定义如下,若使数组a中存放字符串“friend” ,写出为数组a赋值的语句( )。 char a[10]; 二 判断对错(10分,每题1分。对的划“√”,错的划“×”) 1.在Turbo C中,实型数据在内存中占4个字节。( ) 2.被main函数调用的函数只能是库函数。( ) 3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( ) 4.算术运算符和赋值运算符的结合方向均由左自右。( ) 5.定义在main函数后的任何函数都需在main中进行函数声明。( ) 6.一个函数中只允许有一条return语句。( ) 7.任何数组在使用时必须先定义。( ) 8.在int *p;和语句printf(“%d”, *p);中的*p含义相同。( ) 9.在定义枚举时,枚举常量可以是标识符或数字。( ) 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*e 2.以下程序的输出结果是( )。 main( ) { int a=7,b=5; printf(“%d\\n”,b=b/a); } A 不确定值 B 5 C 1 D 0 3.以下程序的输出结果是( )。 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=%d\\n”,x); } A x=4 B x=15 C x=14 D x=3 4. 以下程序的输出结果是( )。 main() { char s1[20]=“China”,s2[20]=“for”,s[10]; if(strcmp(s1,s2)) printf(“%s\\n”, strcat(s2,s1)); else printf(“%d\\n”,strlen(s1)); } A Chinafor B 5 C forChina D 3 5.C语言中函数调用的方式有( )。 A 函数调用作为语句1种 B 函数调用作为函数表达式1种 C 函数调用作为语句或函数表达式2种 D 函数调用作为语句、函数表达式或函数参数3种 6.关于return语句,下列正确的说法是( )。 A 可以在同一函数中出现多次 B 必须在每个函数中出现 C 只能在除主函数之外的函数中出现一次 D 在主函数中不能出现 7.已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是( )。 struct worker { int no; char name[20]; 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=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,a[10],*p; A p=a+2; B p=a[5]; C p=a[2]+2; D p=&(i+2); 10.若有以下的定义和语句,则值为12的表达式是( )。 struct wc{ int a;int *b;}*p;int x0[]={11,12},x1[]={31,32}; static struct wc x[2]={100,x0,300,x1};p=x; A *++p->b B ++p->a C p->b D *(p++)->b 四 写出下列程序的运行结果(25分,每题5分) 1.main() { int number=0; while(number++<=1) printf(\ printf(\ } 2.#define N 7 main() { int i,j,a[N][N]; for(i=1;i { a[i][i]=1; a[i][1]=1; } for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(j=1;j<=4;j++) printf(\ printf(\ } 3.hcf(int u,int v) { int a,b,c,r; if(u>v) { 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(\ } 4.main() { int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf(\ } 5.main() { int y; fac(4,&y); printf(“y=%d\\n”,y); } 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;i<1000;i++) { for(m=0,a=l;a<=i/2;a++) if(!(i%a)) (1) ; if( (2) ) printf(\ } } 2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() { int i,flag; for(i=0;i<10;i++) scanf(\ sort(_(1)__); for(i=0;i for(j=1;j ______(3)______; ______(4)______; } } 3.3.将一个磁盘文件中的信息复制到另一个磁盘文件中。 #include \ main() { (1) *in,*out; char ch,infile[10],outfile[10]; printf(\ scanf(\ printf(\ scanf(\ if((in=fopen(infile,\ { printf(\ exit(0); } if((out=fopen(outfile,\ { printf(\ exit(0); } while(!feof(in)) fputc( (2) ,out); (3) ; (4) ; } 4.4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf(\ } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i if(arr[i]>*pt1) (1) ; if(arr[i]<*pt2) (2) ; } } 2002试题3 一 填空题(20分) 1.C语言表达式5>2>7>8 的值是( )。 2.当执行完以下语句后,变量a的值为( ),d的值为( ),e的值为( a=6; b=++a; c=--a; d=a++; e=a--; 3.下面程序段的输出结果是( )。 char a=111; a=a^00; printf(“%d %o\\n”,a,a); 4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。 char a[3]; 5.设有以下宏定义,则执行赋值语句a=PP+20;(a为int型变量)后,a的值是( #define PR 8 #define PP PR*40 6.定义结构体类型时,应使用关键字( ),定义枚举类型时,应使用关键字( 7.C文件可以分为两种类型,它们是( )文件和( )文件。 8.若有char a[3]=“as”;则*a=( ),*(a+2)=( )。 二 判断对错(5分,对的划“√”,错的划“×”) 1.。( ) 2.表达式1/4+2.75的值是3。( ) 3.结构体类型只有一种。( ) 4.函数若无返回值,则它一定无形参。( ) 5.C语言只能处理文本文件和二进制文件。( ) 二 判断对错(10分,每题1分。对的划“√”,错的划“×”) 1.在Turbo C中,实型数据在内存中占4个字节。( ) 。 )。)。 ) 2.被main函数调用的函数只能是库函数。( ) 3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( ) 4.算术运算符和赋值运算符的结合方向均由左自右。( ) 5.定义在main函数后的任何函数都需在main中进行函数声明。( ) 6.一个函数中只允许有一条return语句。( ) 7.任何数组在使用时必须先定义。( ) 8.在int *p;和语句printf(“%d”, *p);中的*p含义相同。( ) 9.在定义枚举时,枚举常量可以是标识符或数字。( ) 10.用fopen(“file1”,”r+”)方式打开的文件可进行修改。( ) 三 选择题(20分,每题2分) 1.a,b为整形变量,二者均不为0,以下关系表达式中恒成立的是( (A) a*b/a*b==1 (B) a/b*b/a==1 (C) a/b*b+a%b==a (D) a/b*b==a 2.C语言源程序的基本单位是( )。 (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)&&(x<4);x++) ; (A) 执行3 次 (B) 执行4 次 (C) 循环次数不定 (D) 是无限循环 5.以下程序的输出结果为( )。 #define N 2 #define M N+2 #define CUBE(x) (x*x*x) #include \ main( ) { int i=M; i=CUBE(i); printf(\ } (A) 17 (B) 64 (C) 125 (D) 53 6.以下程序的输出结果为( )。 main( ) { int i=010,j=10,*pi,*pj; pi=&i; pj=&j; printf(\ } (A) 10,10 (B) 8,10 (C) 010,10 (D) 8,8 7.在下列程序段中,枚举变量c1,c2 的值依次是( ),( )。 enum color { red,yellow,blue=4,green,white} c1,c2; c1=yellow; c2=white; printf(\ )。 (A) 1 (B) 3 (C) 5 (D) 6 8.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。 (A) fp=fopen(\ (B) fp=fopen(\ (C) fp=fopen(\ (D) fp=fopen(\ 9.以下程序的输出结果是( )。 main() { char s1[20]=“abc”,s2[20]=“123”; if(strcmp(s1,s2)>0) printf(“%s\\n”,s1)); else printf(“%s\\n”,s2); } (A) abc (B) 123 (C) abc123 (D) 123abc 10.已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是( )。 struct worker { int no; char name[20]; 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; 四 写出下列程序的运行结果(25分,每题5分) 1.main() { int i,j; i=16; j=(i++)+i; printf(\ i=15; printf(\ } 2.#include \ main() { int i; for(i=1;i+1;i++) { if(i>4) { printf(\ break; } printf(\ } } 3.#include \ main() { int i,j,a[]={0,2,8,4,5}; printf(\ for(i=1;i<=5;i++) { j=5-i; printf(\ } } 4.#include \ main() { char string1[]={\ s(string1,string2,5); printf(\ } s(p,q,m) char *p.*q; int m; { int n=0; while(n while(*p!='\\0') { *q=*p; p++; q++; } *q='\\0'; } 5.main() { int y; fac(5,&y); printf(“y=%d\\n”,y); } fac(int n,int *t) { int s; if((n==1)||(n==0)) *t=2; 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;i<1000;i++) { for(m=0,a=l;a<=i/2;a++) if(!(i%a)) (1) ; if( (2) ) printf(\ } } 2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() { int i,flag; for(i=0;i<10;i++) scanf(\ sort(_(1)__); for(i=0;i sort(str) char str[N]; { int i,j; char t; for(j=1;j ______(3)______; ______(4)______; } 3.将一个磁盘文件中的信息复制到另一个磁盘文件中。 #include \ main() { (1) *in,*out; char ch,infile[10],outfile[10]; printf(\ scanf(\ printf(\ scanf(\ if((in=fopen(infile,\ { printf(\ exit(0); } if((out=fopen(outfile,\ { printf(\ 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 array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf(\ void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i if(arr[i]>*pt1) (1) ; if(arr[i]<*pt2) (2) ; } } 2003C语言试题1 一 选择题(7分,每小题0.5分) 1.设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是( )。 A 552 B 144 C 264 D -264 2.下列标识符中,不能作为合法的C用户定义标识符的是( )。 A a3_b3 B void C _123 D IF 3.下列整数值中,不正确的八进制或十六进制数值常量是( )。 A 0xcd B -017 C -ox123 D 0xfdc 4.若给定条件表达式(M)?(a++):(a--),则其中表达式M和( )等价。 A M==0 B M=1 C M!=1 D M!=0 5.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为(A 只能是逻辑表达式 B只能是关系表达式 C 只能是逻辑表达式或关系表达式 D可以是任意表达式 6.以下程序的输出结果为( )。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; 。 ) switch(c) { case ?a?:printf(\%c,\ case ?b?:case ?e?:printf(\ default: printf(\ } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 7.数组名作为实参数传递给函数时,数组名被处理为( )。 A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 8.关于return语句,下列正确的说法是( )。 A 可以在同一函数中出现多次 B 在主函数中不能出现 C 必须在每个函数中出现 D 只能在除主函数之外的函数中出现一次 9.以下程序的输出结果为( )。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf(\ } A x=93 B x=37 C x=60 D x=90 10.设有以下定义,则以下对变量w的赋值( )是错误的。 enum week{sun,mon=4,tue,wed,thu,fri,sat}w; A w=sun; B w=(enum week)4; C w=san; D w=(enum week)9; 11.以下定义结构体类型st1,其中正确的是( )。 A typedef struct student { int num; int age; }STD; STD st1; B struct st1{int num,age;}s; C struct { int num; float age;}st1; D struct st1 {int num; int age; } 12.若有下面的变量定义,以下语句中合法的是( )。 int i,a[10],*p; A p=a+2; B p=a[5]; C p=a[2]+2; D p=&(i+2); 13.若有以下定义和语句,则值为12的表达式是( )。 struct wc{ int a;int *b;}*p; int x0[]={11,12},x1[]={31,32}; static struct wc x[2]={100,x0,300,x1}; p=x; A *++p->b B ++p->a C p->b D *(p++)->b 14.要打开一个已存在的非空文件“file”用于修改,选择正确的语句( )。 A fp=fopen(\ B fp=fopen(\ C fp=fopen(\ D fp=fopen(\ 二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.在Turbo C中,实型数据在内存中占4个字节。( ) 2.若有形参定义:int a[10];则a++是合法的表达式。( ) 3.若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。( ) 4.函数的递归调用不过是一个函数直接地调用它自身。( ) 5.定义在main函数后的任何函数都需在main中进行函数声明。( ) 6.若有定义:int a;则scanf(“%d\可以给变量a赋值。( ) 7.任何数组在使用前必须先定义。( ) 8.在int *p;和语句printf(“%d”, *p);中的*p含义相同。( ) 9.共用体变量的各个成员所占内存单元的地址相同。( ) 10.在使用缓冲文件系统时,与文件输入和输出相关的数据都先送到缓冲区中。(三 写出下列程序的运行结果(10分,每小题2分) 1.main( ) { char c1=?A?,c2=?\\144?,c3=?\\x44?,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\\tc5=%c\\n”,c1,c2,c3); printf(“%d,%d\\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\\n”,c|x); a=c^x<<2; printf(“a=%d\\n”,a); } 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\\t”,x); printf(“z=%d\\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; ) while(s[++i]!=?\\0?) t[i]=s[i]; t[i]=0; printf(“string s:%s\\n”,s); printf(“string t:%s\\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\\n”,i); } f1( ); i+=1; printf(“%d\\n”,i); } int f1( ) { i=i+1; return(i); } 5.main() { int i=10,a[]={10,20,30,15},*p1; char *b=”Learning”,**p2=&b; p1=&i; printf(“M”,*p1+20); for(p1=a;p1 printf(“M”,*p1); printf(“\\n%c\\t%s\\n”,*(b+4),*p2); } 四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分) 1.用冒泡法对任意10个整数排序。 main( ) { int a[11],i,j,t; for(i=1;i<11;i++) scanf(\ printf(\ for(i=1; (1) ;i++) for(j=1; (2) ;j++) if(a[j+1]>a[j]) { t=a[j]; (3) ; (4) ;} printf(\ for(i=1;i<11;i++) printf(\ printf(“\\n”); } 2.求100~200间的素数。 (5) main( ) { int m,flag; for(m=101;m<=200;m+=2) { flag=prime(m); if( (6) ) printf(“M”,m); } } prime( (7) ) { int i,k,flag; k=sqrt(a); for(i=2;i<=k;i++) if(a%i==0) (8) ; if(i==k+1) flag=1; else flag=0; } 2003C语言试题2 一 选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是( )。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是( )。 main( ) { int a=7,b=5; printf(\ } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是 ( )。 int k=10; while(k=0) k=k-1; A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次 6.以下程序的输出结果为( )。 int i; void prt( ) { for(i=5;i<8;i++) printf(\ printf(\ } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是( )。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有( )个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为( )。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(\ } A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配(struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.设有以下定义,值为5的枚举常量是( )。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设char a[5],*p=a;)( )。 A p=\ B a=\ C *p=\ D *a=\ 13.设有以下程序段,则值为6的表达式是( )。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 14.C语言中的文件类型只有( )。 A 索引文件和文本文件两种 B 文本文件一种 )字节的空间。 C 二进制文件一种 D ASCII码文件和二进制文件两种 二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.在Turbo C中,整型数据在内存中占2个字节。( ) 2.int i=20;switch(i/10){case 2:printf(\的输出结果为A。( ) 3.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。( ) 4.函数的递归调用不过是一个函数直接或间接地调用它自身。( ) 5.函数strlen(\的值是7。( ) 6.通过return语句,函数可以带回一个或一个以上的返回值。( ) 7.结构体类型只有一种。 ( ) 8.char *p=\;的含义是定义字符型指针变量p,p的值是字符串\。( 9.若有定义:char *p(char a[10]);则p是函数名。( ) 10.用fopen(\打开的文件\可以进行修改。 ( ) 三 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main( ) { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f\\n”,aver); } 2.main( ) { char a[5]={?A?,?B?,?C?,?D?,?E?},*p=a,**pa; for(p=0;p printf(“\\n”); printf(“,\\n”,**(pa=&p)); 3.main( ) { int a,b,s=0; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf(“a=%d\\tb=%d\\n”,a,b); } ) 4.main() { printf(“main( ) :%d\\n”,fact(5)); fact(-5); } fact(int value) { int f; if(value<0) { printf(“Arg error\\n\ return(-1); } else if(value==1||value==0) f=1; else f=value*fact(value-1)+1; printf(“This called value=%d\\n”,f); return f; } 5.main( ) { int a=012,b=0x12,k=12; char c=?\\102?,d=?\\r?; printf(“a=%d\\tb=%d\\tk=%d\\n”,a,b,k); printf(“c=%c,d=%c%o\\n”,c,d,a); a=?A?; c=49; printf(“a=%d\\tc=%c\\n”,a,c); } 四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分) 1.有一个3*4矩阵,求其中的最大元素。 max_value( (1) ) { int i,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; (2) ; } main( ) { int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) (3) ; printf(“max value is %d\\n”,max_value(a)); } 2.输入x、y两个整数,按先大后小的顺序输出x、y。 #include “stdio.h” main( ) { int x,y, *px,*py, (4) ; scanf(“%d%d”,&x,&y); (5) ; (6) ; if(x { p=px; px=py; py=p; } printf(“x=%d,y=%d\\n”,x,y); printf(“MAX=%d,MIN=%d\\n”,*px,*py); } 3.用选择排序法对任意10个整数按照由小到大排序。 main() { int a[11],i,j,k,t; printf(\ for(i=1;i<11;i++) scanf(\ printf(\ for(i=1;i<=9;i++) { (7) ; for(j=i+1; (8) ;j++) if(a[j]>a[k]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf(\ for(i=1;i<11;i++) printf(\ \ } 答案 一 选择题(7分,每小题0.5分) 1. B 2. C 3. B 4. B 5. C 6. A 7. B 8. A 9. A 10. C 11. A 12. A 13. B 14. D 二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.× 2.× 3.√ 4.√ 5.× 6.× 7.× 8.× 9.√ 10.√ 三 写出下列程序的运行结果(10分,每小题2分) 1. 2. 3. 4. 5. 四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分) 1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j]) 2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x) 3.(7) (8) 2003C语言试题3 一 选择题(24分,每小题2分) 1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是(。 ) A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 2.以下程序的输出结果为( )。 main( ) { int i=010,j=10; printf(\ A 11,9 B 9,10 C 8,10 D 9,9 3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2; A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20 4.设i和k都是int类型,则for循环语句( )。 for(i=0,k=-1;k=1;i++,k++) printf(\ A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 环 5.以下程序的输出结果为( )。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case 'a':case 'b':case 'c':printf(\ } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6.函数调用语句:fseek(fp,-10L,2);的含义是( )。 A 将文件位置指针从文件末尾处向文件头的方向移动10个字节 B 将文件位置指针从当前位置向文件头的方向移动10个字节 C 将文件位置指针从当前位置向文件末尾方向移动10个字节 D 将文件位置指针移到距离文件头10个字节处 7.以下程序的输出结果为( )。 main( ) { char s1[40]=\ int i=0,j=0; while(s1[i]!='\\0') i++; while(s2[j]!='\\0') s1[i++]=s2[j++]; s1[i]=0; printf(\ } A side B country C sidetry D countryside 8.下列说法不正确的是( )。 A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 D 是无限循 C 形式参数是局部变量 D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 9.在下列程序段中,枚举变量c1的值是( )。 enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A 1 B 3 C 5 D 6 10.设有说明int (*ptr)();其中标识符ptr是( )。 A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数 C 是一个函数名 D定义不合法 11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 二 判断对错,对的划“√”,错的划“×”(20分,每小题2分) 1.参加位运算的数据可以是任何类型的数据。( ) 2.若有定义和语句:int a;char c;float f;scanf(\若通过键盘输入:10,A,12.5,则a=10,c=?A?,f=12.5。( ) 3.C语言把文件看作是一个字符(字节)的序列。( ) 4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( ) 5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen(\ ) 6.若有定义:char s[ ]=\;则Turbo C系统为数组s开辟6个字节的内存单元。( ) 7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。( ) 8.若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,\输出结果是1。( ) 9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( ) 10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( ) 三 写出下列程序的运行结果(36分,每小题6分) 1.main( ) { int i=29,j=6,k=2,s; s=i+i/j%k-9; printf(“s=%d\\n”,s); } 2.main( ) { int x=31,y=2,s=0; do { s-=x*y; x+=2; y-=3;} while( x%3==0); printf(“x=%d\\ty=%d\\ts=%d\\n”,x,y,s); } 3.main( ) { int a[6]={10,20,30,40,50,60},i; invert(a,0,5); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“\\n”); } invert(int s[ ],int i,int j) { int t; if(i { invert(s,i+1j-1); t=s[i];s[i]=s[j];s[j]=t; } } 4.#include main() { char str[ ]=“The C program”,c; int i; for(i=2;(c=str[i])!=?\\0?;i++) { switch(c) { case ?g?: ++i; break; case ?o?: continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“\\n”); } 5.struct w { char low; char high; }; union u { struct w byte; short word; }uw; main( ) { int result; uw.word=0x1234; printf(“word value:x\\n”,uw.word); printf(“high byte:x\\n”,uw.byte.high); printf(“low byte:x\\n”,uw.byte.low); uw.byte.low=0x74; printf(“word value:x\\n”,uw.word); result=uw.word+0x2a34; printf(“the result:x\\n”,result); } 6.main() { char *s2=“I love China!”,**s1=&s2; char *s3,c,*s4=“w”; s3=&c; *s3=?H?; s2=s2+2; printf(“%s\\t%c\\t%s\\t%c\\n”,s2,*s3,s4,**s1); } 四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分) 1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹? main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+= (1) ) for(hm=0;hm<=100-hb;hm+= (2) ) { hl=100-hb- (3) ; if(hb/3+hm/2+2* (3) ==100) { n++; printf(\ } } printf(\ } 2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() { int i,flag; for(flag=1;flag==1;) { scanf(\ flag=0; printf(\ } sort(___(4)___); for(i=0;i sort(char str[N]) { int i,j; char t; for(j=1;j for(i=0;(i ____(5)____; ____(6)____; } } 3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。) 例如,矩阵为: 3 0 0 3 2 5 7 3 1 0 4 2 则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0; for(i=0;i } 4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf(\ } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i { if(arr[i]>*pt1) (9) ; if(arr[i]<*pt2) (10) ; } } 答案 一 选择题(24分,每小题2分) 1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A ) 7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D ) 二 判断对错,对的划“√”,错的划“×”(20分,每小题2分) 1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × ) 6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ ) 三 写出下列程序的运行结果(36分,每小题6分) 1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10, 4.e C pr*am 5.word value:1234 6.love China! H w l high byte:12 low byte:34 word value:1274 the result:3ca8 四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分) 1.(1) 3 (2) 2 (3)hm hl 2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t 3.(7) arr[i*n+j](或者arr[i*10+j]) (8) i 源地址:http://blog.renren.com/GetEntry.do?id=472592697&owner=282800038
正在阅读:
c语言期末复习试题,上机练习06-17
知识管理和创新高峰05-06
基于JVMTI的Java字节码保护技术的研究和实现v0.2204-23
采暖系统管道施工工艺01-19
美容的小知识03-19
智慧树在线教育平台(精选2篇)03-28
电大会计专《管理会计》期末考试答案小抄(2014更新)11-10
《杨氏之子》教学设计及反思205-23
xx医院登革热防控工作小结01-24
小学数学《小数加减法》教案设计及说课稿09-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 上机
- 期末
- 试题
- 复习
- 练习
- 语言
- 2017届辽宁省鞍山市第一中学高三上学期第二次模拟考试生物试题
- 东北师范大学2013年《离散数学》练习题和答案
- 七年级数学有理数的乘法教案(2)湘教版
- 澄江县第九中学七年级下学期期中考试语文试卷(答案)
- “十三五”重点项目-空气源热泵项目节能评估报告(节能专篇)
- 郑州市2018年中考物理适应性试卷(含解析)
- 英文辞职信和告别信
- 2017届毕业设计开题报告模板
- 浅谈山区中学生物校本课程的开设
- 保洁主管岗位职责
- 正式六年级下册体育与健康教学计划教案
- 毕业设计晓南矿150万吨年矿井通风及矿井排水设计
- 中国钢铁行业分析报告 - 图文
- 北京奔驰汽车地源热泵系统工程施工组织设计 - 图文
- 2018年中国手机屏蔽罩行业市场运营态势及发展前景预测(目录)
- 超声波检测中级试题无损检测 - 2009
- 违约处理(章节)
- 2019年公司战略规划书(完整版)
- 热力学作业题答案
- 关于农村垃圾处理的实践报告