c语言程序设计期末试题A(含答案) | |||||||||||||||
一、单项选择题(选择一个最佳答案,每题2分,共20分) 1. 一个C程序的执行是从( )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 2. 下列选项中,不能用作标识符的是( )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 3. 以下定义语句中正确的是( )。 A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; 4. 设有以下定义:#define d 2 int a=0; double b=1.25; char c=’A’; 则下面语句中错误的是( )。 A) a++; B) b++ C) c++; D) d++; 5. 以下4个选项中,不能作为一条C语句的是( )。 A) {;} B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2; 6. 有以下定义语句 double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( )。 A) a=a+b=b++ B) w%(int)a+b) C) (c+w)%(int)a D) w=a==b; 7. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( )。 A) p=1; B) *q=2; C) q=p; D) *p=5; 8. 设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( )。 A) scanf(“%d”,pa) ; B) scanf(“%d”,a) ; C) scanf(“%d”,&pa) ; D) scanf(“%d”,*pa); 9. 若有说明:char *language[]={”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达式*language[1]>*language[2]比较的是()。 A)字符B和字符P B) 字符串FORTRAN和字符串BASIC C)字符F和字符B D) 字符串BASIC和字符串PASCAL 10. 执行语句for(i=1;i++<4;);后变量i的值是( )。 A) 3 B)4 C) 5 D) 不定 一、填空题(每空2分,共18分) 1. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为 。 2. 有程序段:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; 则b中的值是 。 3. 函数swap(int x,int y)实现对x和y值的交换。则执行语句{int a[2]={1,2}; swap(a[0],a[1]);}后,a[0]= ,a[1]= 。 4. 设有以下宏定义:#define f(z) z*z,执行赋值语句k=f(4+4)/f(2+2);(k为int型变量)后,k的值是 。 5. 书写语句求a, b两个数的最大值max。 ? : ; 6. 若x为int型变量,则执行x=7; x+=x-=x+x; 语句后,x的值是 。 二、读程序写结果(每题6分,共24分) 1. 有以下程序 int f(int a) { int b=0; static c=3; b=b+1;c=c+1; return(a+b+c); } void main() { int a=2,i; for(i=0;i<3;i++) printf(“%2d”,f(a)); } 执行后输出的结果是 。 2. 有以下程序 void f(int y,int *x) { y=y+*x; *x=*x+y;} void main( ) { int x=2,y=4; f(y,&x); printf(“x=%d,y=%d\n”,x,y); } 执行后输出的结果是 。 3. 有以下程序 #define LETTER 1 #include <stdio.h> void main() { char str[20]="C Language", c; int i=0; while((c=str[i])!='\0') { i++; #ifdef LETTER if(c>='a' &&c<'z') c=c+1; else if(c=='z') c=c-25; #else if(c>='B'&&c<='Z') c=c-1; else if(c=='A') c=c+25; #endif printf("%c",c); } } 执行后输出的结果是 。 4. 有以下程序 void fun(int *a,int i,int j) { int t; if(i<j) { t=a[i];a[i]=a[j];a[j]=t; i++; j--; for(i=0;i<4;i++) printf("%2d",a[i]); fun(a,i,j); } } void main() { int x[]={2,6,1,8},i; fun(x,0,3); for(i=0;i<4;i++) printf("%2d",x[i]); printf("\n"); } 执行后输出的结果是 。 四、程序填空(每空1分,共8分) 下面程序的功能是:计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。(顺读和倒读都一样的字符串称为“回文”,如“level”就是回文)请填空。 #include <stdio.h> 【1】 int sumhw( char **p,int n); char jughw(char *str); void main(int argc,char *argv[]) { int s; if (argc<2) printf("请输入有效参数"); else { s=sumhw( 【2】 ,argc-1); printf("共有%d个回文串\n",s); } } int sumhw(char **p,int n) { char flag; int i,sum=0; for(i=0;i<n;i++) { flag=jughw( 【3】 ); if ( 【4】 ) sum++; } return sum; } char jughw(char *str) { char *p1,*p2; int n; n=strlen(str); p1=str; p2= 【5】 ; while( 【6】 ) { if(*p1!=*p2) break; else {p1++; 【7】 ;} } if( 【8】 ) return('N'); else return('Y'); } 五、编程题(30分) 1. 用指针和数组两种方法实现如下功能:将一个字符串按逆序存放。(18分) 要求(1)主函数中完成输入和输出字符串。 (2)逆序存放功能用子函数完成。 2. 一个整型数组有10个元素,编写程序删除所有值为n的元素。(12分) 要求(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。 (2)删除功能用子函数完成。 C语言模拟试卷一参考答案 一、单项选择题(选择一个最佳答案,每题2分,共20分)
二、填空题(每空2分,共18分) 1、2.500000 2、9 3、1 2 4、28 5、(a>b) max=a max=b 6、-14 三、读程序写结果(每题6分,共24分) 1、 7 8 9 2、 x=8,y=4 3、 C Lbohvbhf 4、 8 6 1 2 8 6 1 2 四、程序填空(每空1分,共8分) 【1】#include<string.h> 【2】argv+1 【3】*(p+i) 【4】flag= =’Y’ 【5】str+n-1 【6】p1<p2 【7】p2-- 【8】p1<p2 五、编程题(共30分) 1. (1)数组法(9分) #include <string.h> #include <stdio.h> #define N 20 void inv(char str[],int n); void main() {char str[N]; gets(str); inv(str,strlen(str)); puts(str); } void inv(char str[],int n) {int i,j,temp; for(i=0,j=n-1;i<=j;i++,j--) {temp=str[i]; str[i]=str[j]; str[j]=temp;} } (2)指针法(9分) #include <string.h> #include <stdio.h> #define N 20 void inv(char *str,int n); void main() {char str[N]; gets(str); inv(str,strlen(str)); puts(str); } void inv(char *str,int n) {char *i,*j,temp; for(i=str,j=str+n-1;i<=j;i++,j--) {temp=*i; *i=*j; *j=temp;} } 2.(12分) #include <stdio.h> int m; void del_element(int num[],int n); void main() {int num[10]; int i,n; m=10; for(i=0;i<10;i++) scanf("%d",&num[i]); printf("please input n\n"); scanf("%d",&n); del_element(num,n); for(i=0;i<m;i++) printf("%d ",num[i]); } void del_element(int num[],int n) {int i,j; for(i=0;i<m;i++) if(num[i]==n) { for(j=i+1;j<m;j++) num[j-1]=num[j]; m--; i--; } } | |||||||||||||||
c语言程序设计期末试题B(含答案) |
一 单项选择题(每小题1分,共10分) 1.以下4组用户定义标识符中,全部合法的一组是( ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是( ) #include <stdio.h> main( ) { int a = 1, b = 2, c = 3; printf(“%d”, c>b>a); } A) 2 B) 1 C) 0 D) 3 3.以下正确的叙述是( ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( ) A)scanf("%d",pa); B)scanf("%d",a); C)scanf("%d",&pa); D)scanf("%d",*pa); 5.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是( ) A) 0 B) 0.5 C) 1 D) 2 6.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是( ) A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 7.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是( ) main( ) { int a,b,c,d; scanf(“%d,%d,%d%d”,&a,&b,&c,&d); … } A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 4 8.有以下程序段 main( ) { int k=0; while(k=1) k++; } 则while循环执行的次数是( ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 9.以下程序的输出结果是( ) #include <stdio.h> main( ) { int a = 5, b = 4, c = 6, d; printf(“%d”,d=a>b?(a>c?a:c): b); } A) 5 B) 4 C) 6 D) 不确定 10.下面是对数组a的初始化,其中不正确的是( ) A)a[5]={"ABCD"} B)a[5]={'A','B','C','D'} C)a[5]="" D)a[5]="ABCDE" 二、填空题(每空2分,共32分) 1.结构化程序设计中的三种基本结构是 [1] 、 [2] 、 [3] 。 2.C程序的基本组成单位是 [4] 。 3.标识符的第一个字符必须是 [5] 或 [6] 。 4.实常数123.457的规范化指数表示形式是 [7] 。 5.表达式7/2的结果是 [8] 。表达式7%2的结果是 [9] 。 6.定义一个整型数组a[10],则下标最大的数组元素为 [10] 。 7.在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有 [11] 。 8.C语言提供了 [12] 命令用来实现“文件包含”的操作。 9.已知:char c[ ]={“china”};将字符数组c中整个字符串一次输出的语句书写格式为 [13] 。 10.表达式4>3 && 7<5-!0的值为 [14] 。 11.按照变量在函数中作用域不同,可以将变量分为 [15] 和 [16] 。 三、计算题(要求写出步骤)(每题4分,共8分) 1. 设int a=12,求出表达式a+=a-=a*a运算后a的值. 2. 设a=2,b=3,x=3.5,y=2.5 求算术表达式(float)(b-a)/2+(int)x%(int)y的值 四、读下列程序,写出程序的运行结果(4×3=12) 1.已知字符A的ACSII码值为65,写出以下语句的输出结果 main( ) { char ch=‘A’; printf("%c,%d",ch,ch+3); } 2. main( ) { int a = 10; printf(“%d ”, ++a); printf(“%d ”, a--); } 3.main( ) { int t=1; for(i=1 ; i<5 ; i++) t=t*i; printf("%d",t); } 4. f(int *a, int b) {b=b+*a; *a=*a+b;} main( ) { int x=2,y=4; int *p; p=&x; f(p,y); printf("%d ,%d",x,y); } 五、程序填空(每空2分,共14分) 1.下列程序段以函数swap( )调用的形式实现两个变量值的互换,请填空完善程序。 swap(int * m,int * n) { int temp; temp= [1] ; [2] ; *n= [3] ; } main( ) { int x,y; scanf(“%d,%d”,&x,&y); swap( [4] ); printf(%d,%d”,x,y); } 2.下面程序是计算1-3+5-7+…… -99+101的值,请填空完善程序。 main( ) { int i,m,t=1,s=0; for (i=1;i<=101; [5] ) { [6] ; s=s+m ; [7] ;} printf(“%d\n”,s); } 六、编程题:(共24分) 1.编程求1!+2!+3!+……+50!的值。(6分) 2.用函数的递归调用方法求下列函数式的值(要求n由用户输入),递归公式为:(8分) 1 (n=1) total(n)= total(n-1)+n+1 (n>1) 3.编写程序输出下列形式的杨辉三角形的前10行。(10分) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… C语言模拟试卷二答案及评分标准 一、单项选择题(每小题1分) 1. A 2. C 3. D 4. A 5. B 6. D 7. D 8. A 9. C 10. D 二、填空题(每空2分) 1. 顺序结构、选择结构、循环结构。 2. 函数 3. 字母、下划线 4. 1.23457e2或1.23457E2 5. 3、1 6. a[9] 7. 使递归结束的条件 8. #include 9. printf(“%s”,c) 10. 0 11. 全局变量、局部变量 三、计算题(要求写出步骤)(每题4分) 1. a-=a*a a=a-a*a a=12-144= -132 a+=-132 a=a+(-132) a=-132-132= -264 2. 1.0/2+3%2=0.5+1=1.5 四、读下列程序,写出程序的运行结果(每题3分) 1. 1. A,68 2. 2. 11 11 3. 3. 24 4. 4. 8,4 五、程序填空:(每空2分) 1.*m 2.*m=*n 3. temp 4. x,y 5. i=i+2 6. m=i*t 7. t=-t 六、编程题 1. main() { int i; float t=1,s=0; for(i=1;i<=50;i++) { t=t*i; s=s+t; } printf("s=%e\n",s); } 2. total(int n) { int c; if (n==1) c=1; else c=total(n-1)+n+1; return(c); } main() { int n; scanf(“%d”,n); printf(“%d”,total(n)); } 3. main( ) { int a[10][10],i,j; for(i=0;i<10;i++) { for(j=0;j<=i;j++) { if((j= =0)||(i= =j)) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; printf("%d",a[i][j]); } printf("\n"); } } |
选择练习题
1、C语言中最简单的数据类型包括( B )。
A、整型,实型,逻辑型 B、整型,实型,字符型
C、整型,字符型,逻辑型 D、整型,实型,逻辑型,字符型
2、C语言中,运算对象必须是整型数的运算符是(A )。
A、% B、/ C、%和/ D、*
3、为表示关系x<y<z,应使用C语言表达式( A )。
A、(x<y)&&(y<z) B、(x<y)AND(y<z)
C、(x<y<z) D、(x<y) &(y<z)
4、C语言程序的基本单位是( C )。
A、程序行 B、语句 C、函数 D、字符
5、C语言的程序一行写不下时,可以( D )。
A、用逗号换行 B、用分号换行
C、用回车符换行 D、在任意一空格处换行
标识符由字母,数字和下划线组成且第一个字符必须为字母或下划线
6、下述标识符中,( C )是合法的用户标识符。 A、A&B B、void C、_student D、ab*
7、在C语言中,字符型数据在内存中以( B )形式存放。
A、补码 B、ASCII码 C、反码 D、原码
8、一个程序由若干文件组成,共用同一变量,则此变量的存储类别应该为( B )。
auto自动变量
register寄存器变量
extern 外部变量
static静态变量
A、auto B、extern C、static D、Register版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论