(1))
swap(p);
(2);
for(i=0;i<3;i++)
{for(j=0;j<4;j++)printf(“%3d”,*p++);
printf(“\n”);}
}
swap(int(3))
{intmin,i,*p2=p1,*p3;
(4);
for(i=0;i<4;i++)
{if(*p2<*p3)p3=p2;(5);
}
min=*p1;*p1=*p3;*p3=min;
}
一填空题(20分,每空1.5分)
1.当执行完以下语句后,变量a的值为(),b的值为(),c的值为()。
a=6;b=++a;c=--a;
2.已知a=3、b=2,则表达式a*=b+8的值是()。
3.下面程序段的输出结果是()。
inta=125;printf(“%d\n”,a>>4);
4.a数组定义如下,a数组中可用最小下标值是(),最大下标值是()。
chara[3];
5.设有以下宏定义,则执行赋值语句a=ADD(4+6)*7;(a为int型变量)后,a的值是()。
#defineADD(x)(x)+(x)
6.若有以下说明、定义和语句,则对x.b成员的另外两种引用方式是:
()和()。
structst
{inta;
structstb;
}*p,x;
p=&x;
7.在C中,文件指针变量的类型只能是()。
8.在C中文件结束标志EOF只可用于()文件。
9.a数组定义如下,若使数组a中存放字符串“friend”,写出为数组a赋值的语句()。
chara[10];
二判断对错(10分,每题1分。
对的划“√”,错的划“×”)
1.在TurboC中,实型数据在内存中占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语言表达式是( )。
Aa*e/c/bBa*e/b/cCa*e/b*cDa/b/c*e
2.以下程序的输出结果是( )。
main()
{inta=7,b=5;
printf(“%d\n”,b=b/a);
}
A不确定值B5C1D0
3.以下程序的输出结果是( )。
main()
{intk1=1,k2=2,k3=3,x=15;
if(!
k1)x--;
elseif(k2)if(k3)x=4;elsex=3;
printf(“x=%d\n”,x);
}
Ax=4Bx=15Cx=14Dx=3
4.以下程序的输出结果是( )。
main()
{chars1[20]=“China”,s2[20]=“for”,s[10];
if(strcmp(s1,s2))printf(“%s\n”,strcat(s2,s1));
elseprintf(“%d\n”,strlen(s1));
}
AChinaforB5CforChinaD3
5.C语言中函数调用的方式有()。
A函数调用作为语句1种B函数调用作为函数表达式1种
C函数调用作为语句或函数表达式2种D函数调用作为语句、函数表达式或函数参数3种
6.关于return语句,下列正确的说法是()。
A可以在同一函数中出现多次B必须在每个函数中出现
C只能在除主函数之外的函数中出现一次D在主函数中不能出现
7.已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是()。
structworker
{intno;charname[20];charsex;
structbirth{intday;intmonth;intyear;}a;
};
structworkerw;
Aday=25;month=10;year=1993;
Bw.birth.day=25;w.birth.month=10;w.birth.year=1993;
Cw.day=25;w.month=10;w.year=1993;
Dw.a.day=25;w.a.month=10;w.a.year=1993;
8.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。
A存放读入数据项的存储区B存放读入数据的地址或指向此地址的指针
C一个指向所读文件的文件指针D一个整形变量,代表要读入的数据项总数
9.若有下面的变量定义,以下语句中合法的是()。
inti,a[10],*p;
Ap=a+2;Bp=a[5];Cp=a[2]+2;Dp=&(i+2);
10.若有以下的定义和语句,则值为12的表达式是()。
structwc{inta;int*b;}*p;intx0[]={11,12},x1[]={31,32};
staticstructwcx[2]={100,x0,300,x1};p=x;
A*++p->bB++p->aCp->bD*(p++)->b
四写出下列程序的运行结果(25分,每题5分)
1.main()
{intnumber=0;
while(number++<=1)printf("*%d,",number);
printf("**%d\n",number);
}
2.#defineN7
main()
{inti,j,a[N][N];
for(i=1;i{a[i][i]=1;a[i][1]=1;}
for(i=3;ifor(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("%2d",a[4][j]);
printf("\n");
}
3.hcf(intu,intv)
{inta,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()
{intu,v,h,l;
u=32;v=48;
h=hcf(u,v);
printf("H.C.F=%d\t",h);
}
4.main()
{inta[]={1,2,3,4,5,6},*p;
p=a;*(p+3)+=2;
printf("%d,%d\n",*p,*(p+3));
}
5.main()
{inty;
fac(4,&y);
printf(“y=%d\n”,y);
}
fac(intn,int*t)
{ints;
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()
{
inti,a,m;
for(i=1;i<1000;i++)
{
for(m=0,a=l;a<=i/2;a++)
if(!
(i%a))
(1);
if(
(2))printf("%4d",i);
}
}
2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
#defineN10
charstr[N];
main()
{
inti,flag;
for(i=0;i<10;i++)
scanf("%c",&str[i]);
sort(_
(1)__);
for(i=0;iprintf("%c",str[i]);
printf("\n");
}
sort(str)
charstr[N];
{inti,j;
chart;
for(j=1;jfor(i=0;iif(str[i]>
(2))
{t=str[i];
______(3)______;
______(4)______;
}
}
3.3.将一个磁盘文件中的信息复制到另一个磁盘文件中。
#include"stdio.h"
main()
{
(1)*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename:
\n");
scanf("%s",infile);
printf("Entertheoutfilename:
\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("Cannotopeninputfile.\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{printf("Cannotopenoutputfile.\n");
exit(0);
}
while(!
feof(in))
fputc(
(2),out);
(3);
(4);
}
4.4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。
#defineN10
main()
{
voidmaxmin(intarr[],int*pt1,int*pt2,intn);
intarray[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("max=%d,min=%d",a,b);
}
voidmaxmin(intarr[],int*pt1,int*pt2,intn)
{
inti;
*pt1=*pt2=arr[0];
for(i=1;i{
if(arr[i]>*pt1)
(1);
if(arr[i]<*pt2)
(2);
}
}
2003C语言试题1
一填空题(20分)
1.C语言表达式5>2>7>8的值是( )。
2.当执行完以下语句后,变量a的值为(),d的值为(),e的值为()。
a=6;b=++a;c=--a;d=a++;e=a--;
3.下面程序段的输出结果是()。
chara=111;a=a^00;printf(“%d%o\n”,a,a);
4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是()。
chara[3];
5.设有以下宏定义,则执行赋值语句a=PP+20;(a为int型变量)后,a的值是()。
#definePR8
#definePPPR*40
6.定义结构体类型时,应使用关键字(),定义枚举类型时,应使用关键字()。
7.C文件可以分为两种类型,它们是()文件和()文件。
8.若有chara[3]=“as”;则*a=(),*(a+2)=()。
二判断对错(5分,对的划“√”,错的划“×”)
1.。
()
2.表达式1/4+2.75的值是3。
()
3.结构体类型只有一种。
()
4.函数若无返回值,则它一定无形参。
()
5.C语言只能处理文本文件和二进制文件。
()
二判断对错(10分,每题1分。
对的划“√”,错的划“×”)
1.在TurboC中,实型数据在内存中占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.以下程序的输出结果为()。
#defineN2
#defineMN+2
#defineCUBE(x)(x*x*x)
#include"stdio.h"
main()
{inti=M;
i=CUBE(i);
printf("%d\n",i);
}
(A)17(B)64(C)125(D)53
6.以下程序的输出结果为()。
main()
{inti=010,j=10,*pi,*pj;
pi=&i;pj=&j;
printf("%d.%d\n",*pi,*pj);
}
(A)10,10(B)8,10(C)010,10(D)8,8
7.在下列程序段中,枚举变量c1,c2的值依次是(),()。
enumcolor{red,yellow,blue=4,green,white}c1,c2;
c1=yellow;c2=white;
printf("%d,%d\n",c1,c2);
(A)1(B)3(C)5(D)6
8.要打开一个已存在的非空文件"file"用于修改,选择正确的语句()。
(A)fp=fopen("file","r");(B)fp=fopen("file","w");
(C)fp=fopen("file","r+");(D)fp=fopen("file","w+");
9.以下程序的输出结果是( )。
main()
{chars1[20]=“abc”,s2[20]=“123”;
if(strcmp(s1,s2)>0)printf(“%s\n”,s1));
elseprintf(“%s\n”,s2);