C语言期末练习题及答案2
C语言期末练习题及答
案2
https://www.360docs.net/doc/924096465.html,work Information Technology Company.2020YEAR
期末练习题2-48课时
一、单选题(共20题,共30分)
1. 执行下列程序后的输出结果是()
int fun(int x1,int x2)
{ int x;x1>x2(x=3):(x=4);return(x+x1);}
main()
{ printf("%d\n",fun( 7,8));}(1.5分)
A.9
B.10
C.11
D.12
2. 已知int i,a;执行语句i=(a=3,a++,--a,a+4,a+5,++a);后,i的值是()(1.5分)
A.2
B.3
C.4
D.5
3. 若有以下定义和语句:
double r=99,*p=&r;
*p=r;
则以下正确的叙述是( ) (1.5分)
A.以下两处的*p含义相同,都说明给指针变量p赋值
B.在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元
C.语句"*p=r;"把变量r的值赋给指针变量p
D.语句"*p=r;"取变量r的值放回r中
4. 有以下程序
#define N 20
fun(int A[],int n,int m)
{int i,j;
for(i=m;i>=n;i--)A[i+1]=A[i];
}
main()
{
int i,A[N]={1,2,3,4,5,6,7,8,9,10};
fun(A,2,9);
for(i=0;i<5;i++)printf("%d",A[i]);
}
程序运行后的输出结果是()(1.5分)
A.10234
B.12344
C.12334
D.12234
5. 下面程序的输出是()
main()
{
int k=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
} (1.5分)
C.k=11,k=013,k=oXb
D.k=11,k=13,k=b
6. 以下程序段的输出为:
int x=011;
printf("%d\n",++x); (1.5分)
A.12
B.11
C.10
D.9
7. 执行下述程序的输出结果是()。
#include
#include
main()
{
char *p1,*p2,str[50]="ABCDEFG";
p1="ABCD";
p2="efgh";
strcpy(str+1,p2+1);
strcpy(str+3,p1+3);
printf("%s\n",str);
} (1.5分)
A.AfghDEFG
B.ABfhD
C.AfghD
D.AfgD
8. 以下语句的输出结果是()
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c); (1.5分)
A.0,0,5
B.-10,5,-10
C.5,0,5
D.5,0,-10
9. 阅读程序
#include
int funC(int B[],int n)
{
int i,r;
r=1;
for (i=0;i<=n;i++)
r=r*B[i];
return (r);
}
main()
{
int x,A[]={2,3,4,5,6,7,8,9};
x=funC(A,3);
printf("%d\n",x);
}
执行下述程序的输出结果是()(1.5分)
A.720
B.120
C.24
D.6
A.10110B
B.0386
C.0Xffa
D.x2a2
11. 若有以下定义,则对A数组元素的正确引用是()
int A[5],*p=A; (1.5分)
A.*&A[5]
B.A+2
C.*(p+5)
D.*(A+2)
12. 有以下程序
void fun(int *a,int i,int j)
{
int t;
if(i { t=a[i];a[i]=a[j];a[j]=t; fun(a,++i,--j); } } main() { int a[]={1,2,3,4,5,6},i; fun(a,0,5); for(i=0;i<6;i++) printf("%d",a[i]); } 执行后输出结果是()(1.5分) A.6 5 4 3 2 1 B.4 3 2 1 5 6 C.4 5 6 1 2 3 D.1 2 3 4 5 6 13. 若定义如下变量和数组_________。 int j; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是_________。 for (j=0;j printf("%d",x[j][2-j]); (1.5分) A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 14. 有以下程序: main() { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a printf("%d,%d\n",k,m); } 程序运行后的输出结果是()(1.5分) A.0,0 B.0,1 C.1,0 D.1,1 15. sizeof(float)是()(1.5分) A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用 D.一个不合法的表达式 16. 在C语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是() (1.5分) A.switch B.continue C.break D.if 17. 有以下程序 #include “stdio.h” main() { printf("%d\n",NULL); } 程序运行后的输出结果是()(1.5分) A.0 B.1 C.-1 D.NULL没定义,出错 18. 以下程序的输出结果是() char *a[5]={"how","do","you","do","!"}; char **p; int i; p=a; for(i=0;i<4;i++) printf("%s",p[i]); (1.5分) A.howdoyoudo! B.how C.howdoyoudo D.hdyd 19. 执行下面的程序后的输出结果为() int x,y,z; x=20,y=40,z=15; while(y>x) x+=4,y-=4; z/=2; printf("%d,%d,%d",x,y,z); (1.5分) A.40,36,30 B.32,8,7 C.32,28,7 D.32,28,7.5 20. 函数调用:strcat(strcpy(str1,str2),str3)的功能是( ) (1.5分) A.将串str1复制到串str2中后再连接到串str3之后 B.将串str1连接到串str2之后再复制到串str3之后 C.将串str2复制到串str1中后再将串str3连接到串str1之后 D.将串str2连接到串str1之后再将串str1复制到串str3中 二、判断题(共10题,共10分) 1. do-while语句构成的循环不能用其他语句构成的循环来代替()(1分) ( ) 2. 在for语句的一般形式中,表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。()(1分) ( ) 4. break语句只结束本次循环,而不是终止整个循环的执行。continue语句则是结束整个循环过程,不再判断执行循环的条件是否成立。()(1分) ( ) 5. 在执行switch语句时,多个case语句不可以共用一组执行语句()(1分) ( ) 6. 不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。(1分) ( ) 7. 静态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。(1分) ( ) 8. 关系表达式的值是一个逻辑值,它的值为“真”或“假”。逻辑表达式的值也是一个逻辑量,它的值也为“真”或“假”()(1分) ( ) 9. 如果被调用函数的定义出现在主调函数之前,可以不必加以声明()(1分) ( ) 10. 条件运算符的结合方向为“自左而右”。(1分) ( ) 三、填空题(共10题,共20分) 1. 说明下列程序的功能 _____________________________________________________________________________________________ _____________________________________________________________________________________________ _____________________________________________________________________________________________ _____________________________________________________________________________________________ ____________________________________________。 #include void main() { int i,j ; float a[3][3],b[3][3],c[3][3],x; for(i=0;i for(j=0;j { scanf("%f", &x); a[i][j]= x; } for(i=0;i for(j=0;j { scanf("%f",&x);b[i][j]=x; } for(i=0; i for(j=0;j c[i][j]=a[i][j]+ b[i][j] ; for(i=0; i { printf("\n"); for(j=0;j printf("%f", c[i][j]); } printf("\n"); } (2分) 2. 阅读程序,写出执行该程序的输出结果 _____________________________________________________________________________________________ _____________________________________________________________________________________________ _____________________________________________。 #include int a=1,j=2; main() { int i=2; func(); printf("a=%d,i=%d,j=%d\n",a,i,j); } func() { int i=5; printf("a=%d,i=%d\n",a,--i); i++; a++; if (a func(); a--; j+=3; printf("a=%d,j=%d\n",a,j); } (2分) 3. 可执行的c语言程序由一个或多个________组成。(2分) 4. 求1+2+3+4…+10之和。 main( ) {int sum=0,i; for (i=1;i ____________________________________; printf(“%d”,sum); } (2分) 5. 执行下述程序的输出结果是________________________________ #include "stdio.h" main() { static char a[]="language"; char *ptr=a; while (*ptr) { printf("%c",*ptr-32); ptr++; } printf("\n"); } (2分) main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } (2分) 7. 写一函数,将两个字符串连接。 void concatenate(char string1[ ],char string2[ ],char string[ ]) {int i,j; for(i=0;string1[i]!=’\0’;i++) ____________________________________________________________________________________; for(j=0;string2[j]!=’\0’;j++) ____________________________________________________________________________________; ____________________________________________________________________________________; } main() {char s1[100],s2[100],s[100]; printf("\ninput string1:"); scanf("%s",s1); printf("\ninput string2:"); scanf("%s",s2); concatenate(s1,s2,s); printf("the new string is %s",s); } (2分) 8. 下述算术表达式的结果值是________。 (4+5)*3*(5/2)(2分) 9. 设有变量说明语句 int a=25,b=14,c=19; 执行以下由三目运行符“”“:”所构成的条件表达式语句,其输出结果是 ____________________________________________________________________。 a++ printf("***a=%d,c=%d\n",a,b,c) :printf("###a%d,b=%d,c=%d\n",a,b,c); (2分) 10. 以下程序的输出结果是____ 。 void sub(int *a,int n,int k) { if(k sub(a,n/2,2*k); *a+=k; } void main() { int x=0; sub(&x,8,1); printf("%d\n",x); 四、读程序题(共5题,共20分) 1. 以下程序的输出结果为 ____________________________________________________________________________ #include "stdio.h" void main( ) { int k,i,j; for(i=0;i { for(k=1;k for(j=0;j printf("\n"); } } (4分) 2. 阅读程序,写出执行该程序的输出结果____________________________________ #include float average(int *pa,int n) { int i; float avg=0.0; for (i=0;i avg+=*(pa+i); return (avg/n); } main() { int a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf("mean=%f\n",mean); } (4分) 3. 阅读程序,写出执行该程序的输出结果 ________________________________________________________。 #include int func(int a) { static int x=10; int y=1; x+=a; a++; y++; return (x+y+a); } main() int i=3; while (i<8) printf("%d ",func(i++)); printf("\n"); } (4分) 4. 请写出执行下述程序的输出结果 _____________________________________________________________________________________________ ___________。 #include main() { int i=100,j=34,k=-63,m=4; int u=-15,v=71,w=27; i+=j; j-=k; k*=-m; m/=3*j-1; u%=v-2*w; printf("i=%d,j=%d,k=%d,m=%d,u=%d",i,j,k,m,u); } (4分) 5. #include "stdio.h" void main() { int y=18,t=0,j,a[8]; do { a[t]=y%2; y=y/2; t++; }while(y>=1); for(j=t-1;j>=0;j--) printf("%d",a[j]); } 程序的运行结果是____________________ (4分) 五、程序设计题(共2题,共20分) 1. 编写程序,根据键入的正整数n(1 n 10),输出相应的杨辉三角形图案。例如当n=5时,将输出(最后一行前面有3+5=8个空格符)。 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 要求使用一维数组。(10分) 2. 采用函数调用方法求两个数中的最大值(10分) 期末练习题2-48课时 一、单选题(共20题,共30分) 1.标准答案:C 2.标准答案:C 3.标准答案:D 4.标准答案:C 5.标准答案:D 6.标准答案:C 7.标准答案:D 8.标准答案:A 9.标准答案:B 10.标准答案:C 11.标准答案:D 12.标准答案:A 13.标准答案:C 14.标准答案:C 15.标准答案:B 16.标准答案:C 17.标准答案:A 18.标准答案:C 19.标准答案:C 20.标准答案:C 二、判断题(共10题,共10分) 1.标准答案:错误 2.标准答案:正确 3.标准答案:错误 4.标准答案:错误 5.标准答案:错误 6.标准答案:正确 7.标准答案:错误 8.标准答案:正确 9.标准答案:正确 10.标准答案:错误 三、填空题(共10题,共20分) 1.标准答案:1. 程序第一段的功能是按行顺序输入数组a 的元素。程序第二段的功能是按行顺序输入数组b 的元素。程序第三段的功能是顺序累加数组a和数组b的对应元素,并将和存于数组C的对应元素中。最后,按行顺序输出数组C的全部元素。; 2.标准答案:1. a=1,i=4 a=2,i=4 a=3,i=4 a=3,j=5 a=1,i=2,j=11 ; 3.标准答案:1. 函数; 4.标准答案:1. sum=sum+i; 5.标准答案:1. LANGUAGE; 6.标准答案:1. 0; 7.标准答案:1. string[i]=string1[i] ;2. string[i++]=string2[j] ;3. string[i]='\0'; 8.标准答案:1. 54; 9.标准答案:1. ###a=26,b=13,c=19; 10.标准答案:1. 7; 四、读程序题(共5题,共20分) 1.标准答案:1. **** **** ****; 2.标准答案:1. 6.000000 ; 3.标准答案:1. 19 24 30 37 45; 4.标准答案:1. i=134,j=97,k=252,m=0,u=-15; 5.标准答案:1. 10010; 五、程序设计题(共2题,共20分) 1.标准答案:#include main() { int i,j,n; int a[11]={1}; printf("Enter n(1 scanf("%d",&n);/*设输入5 */ for (i=0; i { for (j=1;j>=; j--) a[j]=a[j-1]+a[j]; for (j=1;j printf(" "); } } 2.标准答案:#include void main() {int max(intx,inty); /*对max函数的声明 */ int a,b,c; scanf("%d, %d",&a,&b); c=max(a,b); printf("Max is %d",c); } int max(int x,inty)/*定义有参函数max */ { int z; z=x>y?x:y; return(z); }