c语言期末复习试题,上机练习 联系客服

发布时间 : 星期五 文章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.在定义枚举时,枚举常量可以是标识符或数字。( )