(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(\