《C程序设计》练习题4
更新时间:2024-04-10 19:37:01 阅读量: 综合文库 文档下载
《C程序设计》练习题一
一.选择题
1.以下选项中属于C语言的数据类型是( )。
A. 复合型 B. 双精度型 C. 逻辑型 D. 集合型 2.以下说法中正确的是( )。
A. C语言程序总是从第一个函数开始执行
B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分 3.选出下列标识符中不是合法的标识符的是( )。 A. hot_do B. cat1 C. _pri D. 2ab 4.下列描述中不正确的是( )。 A.字符型数组中能存放字符串。
B.可以对字符型数组进行整体输入、输出。 C.可以对整型数组进行整体输入、输出。
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。 5.表达式:10!=9的值是( )。
A. true B. 非零值 C. 0 D. 1
6.能正确表示a和b同时为正或同时为负的逻辑表达式是( )。
A.(a>=0||b>=0)&&(a<0 ||b<0) B.(a>=0 && b>=0)&&(a<0 && b<0) C.(a+b>0) &&(a+b<=0) D. a*b>0 7.C语言中,合法的字符型常数是( )
A.‘A’ B.“A” C. 65 D. A
8.设有数组定义:char array[]=”China”; 则数组所占的空间是( )
A.4个字节 B.5个字节 C.6个字节 D.7个字节 9.若变量c为char类型,能正确判断出c为小写字母的表达式是( )
A.’a’<=c<=’z’ B. (c>=’a’) || (c<=’z’) C.(‘a’<=c) and (‘z’>=c) D. (c>=’a’) && (c<=’z’)
10.设有定义:long x=-123456L; 则以下能够正确输出变量x值的语句是( A.printf(“x=%d\\n”,x) B.printf(“x=%ld\\n”,x) C.printf(“x=?l\\n”,x) D.printf(“x=%LD\\n”,x); 11.指出下面正确的输入语句( )
A.scanf(“a=b=%d”,&a,&b); B. scanf(“%d,%d”,&a,&b) ; C.scanf(“%c”,c) ; D. scanf(“% f%d\\n”,&f) ; 12.C语言源程序的基本单位是( )。
A. 过程 B. 函数 C. 子程序 D.标识符
)
13.下列程序的输出结果是( )。
main( )
{ int a=7,b=5; printf(\}
A. 5 B. 1 C. 0 D.不确定值
14.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。
a=125.534; a=(int)125.521%4;
A. 125,31 B. 125,1 C. 125,31 D. 125.534,2 15.设有如下程序段,下面描述中正确的是 ( )。
int k=10; while(k=0) k=k-1;
A. 循环执行一次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 16.以下程序的输出结果为( )。 main( )
{ int i=010,j=10; printf(\ }
A. 11,9 B. 9,10 C. 8,10 D. 9,9 17.设i和k都是int类型,则for循环语句( ) for(i=0,k=-1;k=1;i++,k++) printf(\A. 循环结束的条件不合法 B. 循环体一次也不执行 C. 循环体只执行一次 D. 是无限循环 18.下列说法不正确的是( )
A. 主函数main中定义的变量在整个文件或程序中有效 B. 不同函数中,可以使用相同名字的变量 C. 形式参数是局部变量
D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 19.设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是( )。 A. 552 B. 144 C .264 D. -264
20.下列标识符中,不能作为合法的C用户定义标识符的是( )。 A. a3_b3 B. void C. _123 D. IF
21.下列整数值中,不正确的八进制或十六进制数值常量是( )。 A. 0xcd B. -017 C. 019 D. 0xfdc
22.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为( )。 A. 只能是逻辑表达式 B.只能是关系表达式 C.只能是逻辑表达式或关系表达式 D.可以是任意表达式 23.以下程序的输出结果为( )
main( ) { char c; int i;
for(i=65;i<68;i++) { c=i+32; switch(c)
{ case ‘a’:printf(\ case ‘b’:case ‘e’:printf(\default: printf(\} } }
A. a,ok,end B. a,ok,endend C. a,ok,end,end D. a,ok,ok
24.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
25.为表示关系x≥y≥z,应使用C语言表达式( ) A.(x>=z)&(y>=z) B. (x>=y) AND (y>=z) C.(x>=y>=z) D. (x>=y)&&(y>=z) 26.设 int a=12; 表达式a+=a-=a*=a的值是( )。 A. 12 B. 144 C. 0 D. 132 27.以下程序的输出结果是( )。
main( ) { int a=011;
printf(“%d\\n”, a); }
A. 12 B. 11 C. 10 D. 9 28.若k为整型,则while循环执行( )次。
k=2;
while(k==0)
printf(“%d”,k); k--; printf(“\\n”);
A. 2 B. 9 C. 0 D. 1 29.以下程序:
int a=5; float x=3.14; a*=x*(‘E’ - ‘A’);
printf(“%f\\n”,(float)a); 的输出结果是()
A. 62.000000 B. 62.800000 C. 63.000000 D. 62 30.设有如下定义: int x=10,y=3,z;
则语句printf(\的输出结果是( ) A. 1 B. 0 C. 4 D. 3 31.以下的 for 循环( )
for(x=0,y=0;(y!=123)&&(x<4);x++) ; (A) 执行 3 次 (B) 执行 4 次
(C) 循环次数不定 (D) 是无限循环 32. 设有如下定义:
int a=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( ) A)1 B)2 C)3 D)0
33. 在C语言中,要求运算数必须是整型的运算符是( )
A) % B) / C) < D) ! 34. 以下说法中正确的是( )
A) #define和printf都是C语句 B) #define是C语句,而printf不是 C) printf是C语句,但#define不是 D) #define和printf都不是C语句 35.设整型变量a为5,使b不为2的表达式是( )。 A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:1
36.为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与 ( )组成配对关系。
A. 缩排位置相同的if B. 在其之前未配对的if C. 在其之前未配对的最近的if D.同一行上的if 37.下列标识符中不是合法的标识符的是( )。 A. IF B. cat1 C. _pri D. #ab
二.判断题
1.在Turbo C中,实型数据在内存中占4个字节。( ) 2.019是一个合法的整型常量。( )
3.若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。( ) 4.函数的递归调用不过是一个函数直接或间接地调用它自身。( ) 5.定义在main函数后的任何函数都需在main中进行函数声明。( ) 6.若有定义:int a;则scanf(“%d\可以给变量a赋值。( )
7. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 ( ) 8.在 C 程序中, APH 和 aph 代表不同的变量。( ) 9.表达式 0195 是一个八进制整数。( ) 10.表达式 _ya是不合法的C语言标识符。( )
11.C程序总是从main( ) 函数的第一条语句开始执行的。 ( ) 12.a-=7等价于a=a-7。 ( )
13.执行printf(\输出 12345 。( ) 14.int i=20; switch(i/10) {case 2:printf(\case 1:printf(\}
的输出结果为A。( )
15.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。( )
16.在Turbo C中,整型数据在内存中占2个字节。( ) 17.表达式1/4+2.75的值是3。( )
18.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( ) 19.算术运算符和赋值运算符的结合方向均从左到右。( )
20.在循环过程中,使用break语句和continue语句的作用是一样的。( ) 21.C语言中数据类型只有整型、实型和字符型。 ( )
22.当函数类型与return 表达式;中表达式的类型不一致时,以函数类型为准。( ) 23.从循环体中退出只能使用goto语句。 ( )
24.Continue语句的作用是继续程序中的下一个循环。( )
三.填空题
1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为( )。
2.设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是( )。 3.( )是构成C语言源程序的基本单位。
4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。 char a[3];
5.C语言中基本的数据类型有:整型、( )、字符型。 6选择结构语句有( ),( )两种语句。 7.C语言的预处理语句以( )开头。 8.表达式7+8>2 && 25 %5的结果是( )。
9.实型变量的类型说明符有:( )、( )。
10.C语言用函数( )和( )实现单个字符的输入和输出 11.结构化程序设计用到的三种程序结构是( )、选择结构和( 12.C语言表达式 5>2>7>8 的值是( )。
四.程序填空题
1.下列程序段是从键盘输入的字符中统计数字字符的个数,用‘#’结束循环。 int n=0, ch; ch=getchar( );
while( (1) )
{ if ( (2) ) n++; c=getchar( ); } 2.求矩阵的主、次对角线之和。 main()
{static int a[3][3]={9,7,5,1,2,4,6,8,0};
int i,j,s1=0,s2=0; for(i=0;i<3;i++) for(j=0;j<3;j++)
{if( (3) ) s1=s1+a[i][j];
if((4) ) s2=s2+a[i][j]; }
printf(“%d\\n%d\\n”,s1,s2); }
3.从键盘上输入10个数放入一维数组,然后求其平均值。 main() {int i;
float a[10], sum,avg; for(i=0;i<10;i++)
(5) ;
) (6) ; for(i=0;i<10;i++)
(7) ; (8) ; printf(“average=%f\\n”,avg); }
4.用选择排序法对任意10个整数按照由小到大排序。
main()
{ int a[11],i,j,k,t;
printf(\ for(i=1;i<11;i++) scanf(\ printf(\ for(i=1;i<=9;i++)
{ (9) ;
for(j=i+1; (10) ;j++)
if(a[j]>a[k]) k=j;
if( (11) )
{ t=a[k]; a[k]=a[i]; a[i]=t;} }
printf(\
for(i=1;i<11;i++) printf(\
5.百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?
main( )
{ int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+=3 )
for(hm=0;hm<=100-hb;hm+= (13) ) { hl=100-hb- (14) ;
if(hb/3+hm/2+2* (15) ==100) { n++;
printf(\ } }
printf(\ }
6.试求出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)==0) (16) ; if( (17) ) printf(\ } }
7.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() {
int i,flag; for(i=0;i<10;i++) scanf(\ sort(_(18) __); for(i=0;i sort(char str[N]) { int i,j; char t; for(j=1;j if(str[i]> (19) ) { t=str[i]; _(20)__ _________; _(21)____ _______; } } 8.求100~200间的全部素数。 #include (22) main() { int m,k,i,n=0; for(m=101;m<=200;m+=2) { k=sqrt(m); for(i= (23) ;i<=k;i++) if(m%i==0) (24) ; if(i== (25) ) { printf(\;n++;} } } 9.用选择法对数组中的10个字符按由大到小排序。 void sort( (26) ) { int i,j,k; char t; for (i=0;i if ( (28) ) 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]); (29) ; printf(“the sorted array:\\n”); for(i=0;i<10;i++) printf(“%c”,s[i]); printf(“\\n”); } } 五.写出程序运行结果 1.int x=6, y=7; printf(“%d,”,x++); printf(“%d\\n”,++y); 程序的输出结果是 。 2.float f=3.1415927; printf(“%5.4f,%3.3f”,f,f); 则程序的输出结果是 。 3.a=3; a+=(a<1)?a:1; printf(“%d”,a); 结果是 。 4.main( ) { int i=29,j=6,k=2,s; s=i+i/j%k-9; printf(“s=%d\\n”,s); } 程序的输出结果是 。 5.以下程序的输出结果为( )。 main( ) { int i=010,j=10,*pi,*pj; pi=&i; pj=&j; printf(\ } 6. 以下程序的输出结果是( ) main() { char s1[20]=“abc”,s2[20]=“123”; if(strcmp(s1,s2)>0) printf(“%s\\n”,s1)); else printf(“%s\\n”,s2); } 7. 以下程序的输出结果为( )。 #include \ main() { int i,j,a[]={0,2,8,4,5}; printf(\ for(i=1;i<=5;i++) { j=5-i; printf(\ } } 8. 以下程序的输出结果为( ) main( ) { int a,b,s=0; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf(“a=%d\\tb=%d\\n”,a,b); } 9. 以下程序的输出结果为( ) 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(\} 10.以下程序的输出结果为( ) main() { int number=0; while(number++<=1) printf(\ printf(\ } 11. 以下程序的输出结果为( ) float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main( ) { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f\\n”,aver); } 12. 以下程序的输出结果为( ) main( ) { char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a; for( ;p printf(“,”,*p); printf(“\\n”); } 13. 以下程序的输出结果为( ) main() { int a=8 , b=1; a=a+b; b=a*b; printf(\ } 14. 以下程序的输出结果为( ) main() { int i,num[5]; for(i=0;i<5;i++) num[i]=i*10 - 2; printf(\ } 15. 以下程序的输出结果为( ) main() { float c,f; c=30.0; f=(6*c)/5+32; printf(\ } 16.以下程序的输出结果为( ) main() { int a=6095 , b ; b=a00 ; printf(\ } 六.简答题 1.结构化程序设计中常用的三种程序结构是什么?各自用哪些语句来实现? 2.函数调用有几种方式?函数的实参和形参是怎么进行结合的? 3.do—while循环和while循环的区别是什么? 七.编程题 1.三个整数a、b、c,由键盘输入,输出其中最大的数。(10分) 2.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。(10分) 3.从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+??(共n项)的和。例a=2, n=4, 则sum=2+22+222+2222。(10分) 4.编写程序,对三个整数x,y,z进行排序,按从小到大的顺序进行输出。(10分) 5.编写一个函数prime(n),判断一个数n是不是素数。在主函数中输入一个整数,输出是否是素数的信息。(15) 6.求数列的1/1+1/3+1/5+?? 前20项的累加和(15分) 7.已知e≈1+1/1!+1/2!+?+1/n!,编程计算e的值,直到最后一项的值小于1e-6。(10分) 8.编写程序打印下面的图形。利用scanf()函数由用户输入星号的行数。(10分) * ** *** **** ***** 9.已知定义int型数组a,数组a中的元素均为三位数。编写函数jsVal(),其功能是:统计出3位数均为偶数的数组元素的个数c。 例如:int a[6]={123,246,345,608,420,987},则统计结果c=3.(10分) 10.编写一计算器程序,完成加、减、乘、除四则运算。首先提示用户输入运算符,然后提 示输入两个运算数,最后将计算结果输出。例如:用户输入+,然后输入10 20,程序在屏幕上输出10+20=30。(15分) 11.从键盘上输入学生的成绩,输出该成绩所对应的等级。成绩等级的划分方法为:>=90 分,等级为‘A’;80至89分,等级为‘B’;70至79分,等级为C;60至69分,等级为‘D’;60分以下,等级为‘E’。(10分) 12.求1!+2!+??+10! (10分) 14. 编程求s=1+1/2+1/3+?+1/n,直到最后一项的绝对值小于10。(15分) 15.编程计算下列表达式:s=n!(n从键盘上输入)(10分) 16.编程求下列函数,用户输入x,程序打印出函数结果y。(注:求绝对值函数为fabs(x)) x3 x>2 y= |x| -2<=x<=2 10-2x x<-2 18.求裴波那切数列的前20项并打印输出,前三项为1,1,2,?,以后每项等于前2项之和。 19.定义求最大、最小值函数MaxMin,求出一维数组的最大值和最小值,并用全局变量MAX 和MIN存放结果。 20.输出1900~2000年中所有的闰年。每输出3个年号换一行。(判断闰年的条件为下面二者之一:能被4整除,但不能被100整除。或者能被400整除。) 21.输出1—100之间不能被12整除的数。 -6 《C程序设计》练习题二 一. 选择题 1.若已定义:int a[9], *p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为( ) A. p+1 B. a+1 C. a++ D. ++p 2.定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句 for(i=0;i<3;i++) printf(\的输出结果是( ) A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 3.若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是( ) A. i= *p; B. *p=j; C. i=&j; D. i=* *p; 4.在C程序中有如下语句:char *func(int x,int y); 它是( ) A. 对函数func的定义。 B. 对函数func的调用。 C.对函数func的原型说明。 D. 不合法的。 5.以下程序的输出结果是( ) char str[15]=”hello!”; printf(“%d\\n”,strlen(str)); A. 15 B. 14 C. 7 D. 6 6.若有如下定义,则( )是对数组元素的正确的引用。 int a[10] , *p ; p=a ; A. *&a[10] B. a[11] C. *(p+10) D. *p 7.以下不能正确定义二维数组的语句是( ) A . int a[2][2]={{1},{2}}; B. int a[][2]={1,2,3,4}; C. int a[2][2]={{1},2,3}; D. int a[2][]={{1,2},{3,4}}; 8.设变量定义为 int a[3]={1,4,7},*p=&a[2], 则*p的值是( ) A. &a[2] B. 4 C. 7 D. 1 9.C语言中以追加方式打开一个文件应选择( )参数。 A.“r” B.“w” C.“rb” D.“a” 10.在C语言程序中,以下说法正确的是( ) A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用都不可以嵌套 D.函数的定义和函数的调用都可以嵌套 11.以下程序的输出结果为( ) #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf(\} A. d=70 B. d=80 C. d=140 D. d=700 12.已知职工记录描述如下,在Turbo C中,系统为变量w分配( )字节的空间。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A. 29 B. 20 C. 25 D. 6 13.设有以下定义,值为5的枚举常量是( ) enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A. tue B. sat C. fri D. thu 14.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( ) A. p=\15.C语言中的文件类型只有( ) A. 索引文件和文本文件两种 B. 文本文件一种 C. 二进制文件一种 D. ASCII码文件和二进制文件两种 16.函数调用语句:fseek(fp,-10L,2);的含义是( ) A. 将文件位置指针从文件末尾处向文件头的方向移动10个字节 B. 将文件位置指针从当前位置向文件头的方向移动10个字节 C. 将文件位置指针从当前位置向文件末尾方向移动10个字节 D. 将文件位置指针移到距离文件头10个字节处 17.以下程序的输出结果为( ) main( ) { char s1[40]=\int i=0,j=0; while(s1[i]!='\\0') i++; while(s2[j]!='\\0') s1[i++]=s2[j++]; s1[i]=0; printf(\} A. side B. country C. sidetry D. countryside 18.在下列程序段中,枚举变量 c1的值是( ) enum color { red,yellow,blue,green,white} c1; c1=white; A. 1 B. 4 C. 5 D. 6 19.设有说明 int (*ptr)();其中标识符ptr是( ) A. 是一个指向整型变量的指针 B.它是一个指向函数值是int的函数指针 C. 是一个函数名 D.定义不合法 20.定义由n个指向整型数据的指针组成的数组p,其正确的方式为( ) A. int p; B. int (*p)[n]; C. int *p[n]; D. int (*p)( ); 21.以下程序的输出结果为( ) #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 22.数组名作为实参数传递给函数时,数组名被处理为( ) A. 该数组的长度 B. 该数组的元素个数 C. 该数组的首地址 D. 该数组中各元素的值 23.关于return语句,下列正确的说法是( ) A. 可以在同一函数中出现多次 B. 在主函数中不能出现 C. 必须在每个函数中出现 D. 只能在除主函数之外的函数中出现一次 24.以下程序的输出结果为( ) #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 25.若有下面的变量定义,以下语句中合法的是( ) int i,a[10],*p; A p=a+2; B p=a[5]; C p=a[2]+2; D p=&(i+2); 26.要打开一个已存在的非空文件“file”用于修改,选择正确的语句( ) A fp=fopen(\C fp=fopen(\ 27.在下列程序段中,枚举变量 c2 的值是( ) enum color { red,yellow,blue=4,green,white} c1,c2; c1=yellow; c2=white; (A) 1 (B) 3 (C) 5 (D) 6 28.以下程序的输出结果是( ) char str[15]=”hello!”; printf(“%d\\n”,strlen(str)); A. 15 B. 14 C. 7 D. 6 29.以下程序的输出结果是( ) 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 30.已知职工记录描述如下,设变量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; 31.下列描述中不正确的是( ) A. 字符型数组中可以存放字符串。 B. 可以对字符型数组进行整体输入、输出。 C. 可以对整型数组进行整体输入、输出。 D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。 32.两个指针变量不可以( ) A. 相加 B 比较 C 相减 D 指向同一地址 33.下列不能实现赋值操作的是( ) A.A++ B. a== b C. a+=b D. a=1 34.定义如下变量和数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则语句for(i=0;i<3;i++) printf(\的输出结果是( ) A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 35.以下对二维数组a进行正确初始化的是( ) A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[ ][3]={1,2,3,4,5,6}; C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}}; 36.下面的选项中正确的赋值语句是(char a[5],*p=a;)( ) A. p=“abcd”; B. a=“abcd”; C. *p=“abcd”; D. *a=“abcd”; 37. 若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元: int *p; p=__________ malloc( sizeof(int)); 则应填入( ) A) int B) *int C) (*int) D) (int *) 38.设有如下定义: char *aa[2]={\则以下说法中正确的是( ) A)aa数组成元素的值分别是\和ABCD\ B)aa是指针变量,它指向含有两个数组元素的字符型一维数组 C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D)aa数组的两个元素中各自存放了字符'a'和'A'的地址 39.不能把字符串:Hello!赋给数组b的语句是( ) A. char b[10]={'H','e','l','l','o','!'}; B. char b[10]; b=\ C. char b[10]; strcpy(b,\40.以下程序的输出结果为( ) main( ) { int i=010,j=10,*pi,*pj; pi=&i; pj=&j; printf(\,%d\\n\ } (A) 10,10 (B) 8,10 (C) 010,10 (D) 8,8 41.在C程序中有如下语句:char *func(int x,int y); 它是( ) A. 对函数func的定义。 B. 对函数func的调用。 C.对函数func的原型说明。 D. 不合法的。 二. 判断题 1.若有形参定义:int a[10];则a++是合法的表达式。( ) 2.任何数组在使用前必须先定义。( ) 3.在int *p;和语句printf(“%d”, *p);中的*p含义相同。( ) 4.共用体变量的各个成员所占内存单元的地址相同。( ) 5.在使用缓冲文件系统时,与文件输入和输出相关的数据都先送到缓冲区中。( ) 6. 利用fclose函数关闭已打开的文件。( ) 7. 数组名可以作为参数进行传递。( ) 8. 在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。( ) 9.函数的递归调用不过是一个函数直接或间接地调用它自身。( ) 10.函数strlen(\的值是7。( ) 11.通过return语句,函数可以带回一个或一个以上的返回值。( ) 12.结构体类型只有一种。 ( ) 13.char *p=\;的含义是定义字符型指针变量p,p的值是字符串\。( ) 14.若有定义:char *p(char a[10]);则p是函数名。( ) 15.用fopen(\打开的文件\可以进行修改。 ( ) 16.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( ) 17.函数若无返回值,则它一定无形参。( ) 18.一个函数中只允许有一条return语句。( ) 19.结构体类型的各成员可以有不同的类型。( ) 20.宏定义不是C语言的语句,所以句尾没有分号。( ) 21.参加位运算的数据可以是任何类型的数据。( ) 22.C语言中的构造数据类型包括数组、集合和结构体类型。 ( ) 23.C语言的数组下标从1开始。 ( ) 24.假设有int a[10], *p; 则p=&a[0]与p=a等价。 ( ) 25.getchar()函数的功能是从键盘上输入一个字符串。 ( ) 26.在C语言中定义一个文件指针的方法为:FILE *fp; 。 ( ) 27.构成数组的各个元素可以有不同的数据类型。 ( ) 三.填空题 1.C语言中putchar(c ) 函数的功能是( )。 2.int *p ;的含义是( )。 3.定义fp为文件型指针变量的定义方法为( )。 4.数组 int a[3][4];共定义了( )个数组元素。 5、二维数组有两维下标,分别用一对( )号括起。 6、指针是指变量的( )。 7、链表是以结构体类型表示链中元素,以( )表示链的一种线性数据结构。 8、链表与数组相比,比较适合的操作包括( )和( )。 9、有如下语句:char A[ ]={”I am a student”}; 该字符串的长度是( ) ,A[3]=( ) 。 10.C语言用( )做关键字来进行类型定义 11.二进制数11001010和10001110异或运算的结果是( ) 12.链表的定义必须用到的两种C语言数据类型是( )和( ) 13.C语言表示字符串类型的两种方法是( )和( ) 14.C语言中,( )数据类型不可以直接输入/输出 15.三种构造数据类型分别是( )、( )和共用体 16.函数的实参和形参值的结合采用( )传递 17.设有以下宏定义,则执行赋值语句 a=PP*20;(a为int型变量)后,a的值是( )。 #define PR 80 #define PP PR+403 18.C语言中调用( )函数打开文件,调用( )函数关闭文件,调用( )函数可实现文件的随机读写。 19.若有int a[3]={10,12,30};则a+1是( )的地址,*(a+2)=( )。 四.程序填空题 1.以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。 #include (1) *fp; char c; fp= (2) ; do { c=getchar(); (3) ; }while(c!=EOF); (4) ; } 2.有一个3*4矩阵,求其中的最大元素。 max_value( (5) ) { int i,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; (6) ; } main( ) { int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) (7) ; printf(“max value is %d\\n”,max_value(a)); } 3.输入x、y两个整数,按先大后小的顺序输出x、y。 #include “stdio.h” main( ) { int x,y, *px,*py, (8) ; scanf(“%d%d”,&x,&y); (9) ; (10) ; if(x { p=px; px=py; py=p; } printf(“x=%d,y=%d\\n”,x,y); printf(“MAX=%d,MIN=%d\\n”,*px,*py); } 4.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。) 例如,矩阵为: 3 0 0 3 2 5 7 3 1 0 4 2 则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0; for(i=0;i sum=sum+ (11) ; for(j=0;j 5.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #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) (13) ; if(arr[i]<*pt2) (14) ; } } 6.将一个磁盘文件中的信息复制到另一个磁盘文件中。 #include \ main() { (15) *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( (16) ,out); (17) ; (18) ; } 7.已知有二进数据文件stu1.dat,下列程序完成从stu.dat中读出数据,然后在屏幕上输出。 struct student { int no; char name[10]; }; main() { FILE *stu1; struct student stu; if ((stu1=fopen( (19) ))==NULL) {printf(\ while( (20) ) { fread( (21) ); printf(“no:%d,name: %s\\n”,stu.no,stu.name); } } 五.写出程序运行结果 1.下列程序的输出结果是( ) main( ) { int a[5]={2,4,6,8,10},*p; p=a; 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 a[i][j]=a[i-1][j-1]+a[i-1][j]; for(j=1;j<=4;j++) printf(\printf(\} 3.下列程序的输出结果是( ) main() { int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf(\ } 4.下列程序的输出结果是( ) main() { int y; fac(4,&y); printf(\ } fac(int n,int *t) { int s; if((n==1)||(n==0)) *t=1; else { fac(n-1,&s); *t=n*s; } } 5. 以下程序的输出结果为( )。 void main() { int y=1, x, *p, a[ ]={2,4,6,8,10}; p=&a[0]; for(x=0;x<3;x++) y + = * (p + x); printf(\} 6. 下列程序的输出结果是( ) float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main( ) { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f\\n”,aver); } 7.下列程序的输出结果是( ) main( ) { char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a; for( ;p printf(“,”,*p); printf(“\\n”); } 8.下列程序的输出结果是( ) #include void fun(int *x,int y,int *z) { *z=*x+y; } main() { int a=1,b=3,c=5; fun(&a,b,&c); printf(\} 9. 下列程序的输出结果是( ) # include “stdio.h” main( ) { int a[]={8,2,9,4,1}, *p; p=a; *(p+2)+=2; printf(“%d, %d ”, *p, *(p+2)); } 六.简答题 1.C语言对字符串操作的函数有哪些? 2.C语言的构造类型有哪几种?各自适合描述什么样的问题? 七.编程题 1.有一维数组float a[10],其中存放10个学生成绩,写一个函数,求出平均分。 2.编写函数sum,求3*3矩阵的主对角线元素之和。(15分) 3.从键盘上输入10个数存入一维数组中,求这10数中的最大值与最小值并输出。(15分) 4.一个班级有10名学生,每个学生的信息包括学号,姓名和成绩。编写一函数sort,实现按学生成绩降序排列,排序方法任选。在函数之前,定义出函数中要使用的数据类型。 5.编写一函数void sort(int a[],int n),用起泡法实现对数组a中的n个元素进行排序。 6. 已知有如下数组定义,int a[3][3]; 编写程序求出该二维数组的主对角线之和和次对 角线之和。(10分)
正在阅读:
《C程序设计》练习题404-10
个人红楼梦读后感多篇04-17
不可说不可说心情日记10-29
人体解剖学复习题11-04
汽车租赁调度论文09-16
地理信息科学GIS复习06-21
测量学名词解释02-26
第四章国际市场细分与国际目标市场选择习题11-25
施工工程明细表08-31
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 练习题
- 程序设计
- 4S店突发环境事件应急预案 - 图文
- 非常完整的国际航空货运代理实务操作
- 水上灌注桩施工平台专项方案要点
- 2011甘肃省教师资格证(中学综合素质)考试重点和考试技巧
- 数字电压表
- 2016年计算机二级108套填空题
- 山东省2011年夏季普通高中学业水平考试生物试题
- 2011中国最佳创业投资人排行榜50名榜单 - 图文
- 大学协会会长申请书
- 2017年房地产金融市场调研及发展趋势预测(目录)
- 英语单词拼读规则总结
- 南京农业大学-信息技术参考答案
- 浅析煤炭洁净燃烧技术
- 14种策略7大模型绝杀排列组合
- 1600吨气调库建设项目可研报告
- 2013级第二阶段继续教育(英语)
- 2013年春季大学物理实验复习思考题
- 奥数测试卷2
- 湖北造纸企业
- 《出师表》练习题