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("file","r"); B fp=fopen("file","w");
C fp=fopen("file","r+"); D fp=fopen("file","w+");
四 写出下列程序的运行结果。(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);
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("%d ",f1(a));
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=1; f[k-1]=2;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++) f+=f[j];
printf("%d%5d%5d\n",k,m,f[m]);
}
五 阅读下列程序,在 处填入适当内容,使程序完整。(32分)
1.求100~200间的全部素数。
(1)
main()
{ int m,k,i,n=0;
for(m=101;m<=200;m+=2)
{ if(n%10==0) printf("\n");
k=sqrt(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;i
{ (2) ;
for(j=i+1;j
if ( (3) ) k=j;
t=a[k];a[k]=a;a=t;}
}
main( )
{ char s[10];
int i;
for(i=0;i<10;i++) scanf(“%c”,&s);
(4) ;
printf(“the sorted array:\n”);
for(i=0;i<10;i++)
printf(“%c”, (5) );
printf(“\n”);
}