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