《高级语言程序设计试题四》 单项选择题(每题1分,共20分) 下列for循环执行的次数为() for(nti=0,x=0;!x&&i<=5;i+) C、1 D、无限 2、C语句中whie和do-whil循环的主要区别是() A、do- whilel的循环体至少无条件执行一次 B、 while的循环控制条件比do-whie的循环控制条件严格 C、 do-while允许从外部转到循环体内 D、do- while l的循环体不能是复合语句 3、在函数声明时,下列()项是不必要的 A、函数的类型 B、函数参数类型和名字 C、函数名字 函数体 C语言中运算对象必须是整型的运算符是 A、% B、/ C 下列变量定义中合法的是 A、 short a=l-.le-l; B、 double b=1+5e2.5; C、 long do=0 xfdeL D、 float2and=1-e-3 6.语句:prnt(“%d”、a=2)k&(b=-2的输出结果是 A、无输出B、结果不确定 C、-1 7.C语言中,int类型数据占2个字节,则long类型数据占 A、1个字节 B、2个字节 C、3个字节 D、4个字节 8、函数调用: strcat( strcpy(strl,st2),st3)的功能是() A、将串str1复制到串st2中,然后再连接到str3之后 B、将串strl连接到串st2中,然后再复制到st3之后 C、将串s2复制到串str1中,然后再将串str3连接到串str1之后 D、将串st2复制到串str1中,然后再将串strl连接到串str3之后 9、已知: char s[5],c,intb,则调用函数 scanf的正确语句是 A、 scant(%os%c”,s,c) B、 scanf(%od%c”&b,c), D、 scanf(%s%c”,s,&c) 10、已知函数abc的定义为 void abc o 则函数定义中void的含义是() A、执行函数abc后,函数没有返回值B、执行函数abc后,函数不再返回 C、执行函数abc后,可以返回任意类型D、以上三个答案都不对 11、已知inta[3I4]:则对a数组元素的正确引用是() A、a[24] C、a[1+1joj]D、a(2)(1) 12.运行下面程序段的输出结果是 Int I: for(i=0;i<10;++) printf((“%d”,n 13.若有以下定义: char s{20}” programming”,*ps=s; 则不能代表字符o的表达式是 A、ps+2 C、ps[2] 14.C语言中,函数的隐含存储类别是 B、 statIc C、 exter D、无存储类别
《高级语言程序设计试题四》 一、单项选择题(每题 1 分,共 20 分) 1、下列for循环执行的次数为( ) for(int i=0,x=0;!x&& i<=5; i++) A、5 B、6 C、1 D、无限 2、C语句中while 和do-while循环的主要区别是( ) A、do-while的循环体至少无条件执行一次 B、while 的循环控制条件比do-while的循环控制条件严格 C、do-while 允许从外部转到循环体内 D、do-while的循环体不能是复合语句 3、在函数声明时,下列( )项是不必要的 A、函数的类型 B、函数参数类型和名字 C、函数名字 D、函数体 4.C语言中运算对象必须是整型的运算符是 A、%= B、/ C、= D、<= 5.下列变量定义中合法的是 A、short _a=1-.1e-1; B、 double b=1+5e2.5; C、long do=0xfdeL; D、 float 2_and=1-e-3; 6.语句:printf(“%d”,(a=2)&&(b=-2));的输出结果是 A、无输出 B、结果不确定 C、-1 D、1 7.C语言中,int类型数据占2个字节,则long类型数据占 A、1个字节 B、2 个字节 C、3个字节 D、4个字节 8、函数调用:strcat(strcpy(str1,str2),str3)的功能是( ) A、将串 str1 复制到串 str2 中,然后再连接到 str3 之后 B、将串 str1 连接到串 str2 中,然后再复制到 str3 之后 C、将串 str2 复制到串 str1 中,然后再将串 str3 连接到串 str1 之后 D、将串 str2 复制到串 str1 中,然后再将串 str1 连接到串 str3 之后 9、已知:char s[5], c; int b; 则调用函数 scanf 的正确语句是( ) A、scanf(“%s%c”, s, c); B、scanf(“%d%c”,&b, c); C、scanf(“%d%c”, b, &c); D、scanf(“%s%c”, s , &c); 10、已知函数abc的定义为: void abc () {……….} 则函数定义中void 的含义是( ) A、执行函数abc后,函数没有返回值 B、执行函数abc后,函数不再返回 C、执行函数abc后,可以返回任意类型 D、以上三个答案都不对 11、已知 int a[3][4];则对a数组元素的正确引用是( ) A、a[2][4] B、a[1,3] C、a[1+1][0] D、a (2)(1) 12.运行下面程序段的输出结果是 int i; for(i=0;i<10;i++); printf(“%d”,i); A、 9 B、10 C、8 D、11 13.若有以下定义:char s[20]=”programming”,*ps=s; 则不能代表字符o的表达式是 A、ps+2 B、s[2] C、ps[2] D、ps+=2,*ps 14.C语言中,函数的隐含存储类别是 A、auto B、static C、 extern D、无存储类别
f int i char c float a 则 sizeof(tst)的值是() A、4 16、在C语言中,从计算机内存中将数据写入文件中,称为() A、输入 B、输出 C、修改 D、删除 17、已知:int*p,a;则语句“p=&a;”中的运算符“&”的含义是() A、位与运算B、逻辑与运算 取指针内容D、取变量地址 18、在进行文件操作时,写文件的一般含义是() 将计算机内存中的信息存入磁盘 B、将磁盘中的信息存入计算机内存 C、将计算机CPU中的信息存入磁盘 D、将磁盘中的信息存入计算机 19、若执行 fopen函数时发生错误,则函数的返回值是() A、地址值 B、0 C、1 D、EOF 20.有如下程序 long fib(int n i if(n>2)return(fib(n-1Ffib(n-2)) else return(2) maino printf((“%ldn”,fib(3);} 该程序的输出结果是 A、2 B、4 C、6 D、8 、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。每题2分,共10分) 1.若变量已正确定义并赋值,下面符合C语言语法的表达式是 1)a:=b+12)a=b=c=23)a+=b+34)*p++5)a=a+7=c+b 2.以下叙述中正确的是 1)在不同的函数中可以使用相同名字的变量 2)函数中的形式参数是局部变量 )在一个函数内定义的变量只在本函数范围内有效 4)在一个函数内的复合语句中定义的变量在本函数范围内有效 5)用 static标识的变量是全局变量 3.设有如下定义:int(*ptr)();则以下叙述中不正确的是 )ptr是指向一维数组的指针变量 2)ptr是指向int型数据的指针变量 3)ptr是指向函数的指针,该函数返回一个int型数据 4)ptr是一个函数名,该函数的返回值是指向int型数据的指针 5)ptr是一个指向二维数组的指针变量 以下叙述正确的是 l)do- while语句构成的循环不能用其它语句构成的循环来代替 2)do- while语句构成的循环只能用 break语句退出 3)由do- while语句构成的循环,其循环体至少执行一次 4)用do- while语句构成的循环,在 while后的表达式为非零时结束循环 5)用do- while语句构成的循环,在 while后的表达式为零时结束循环 5.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,能表示a[1]地址的表达 式是 1)p+12)a+13) )&a[1
15、已知:union { int i; char c; float a; } test; 则 sizeof(test)的值是( ) A、4 B、5 C、6 D、7 16、在 C 语言中,从计算机内存中将数据写入文件中,称为( ) A、输入 B、输出 C、修改 D、删除 17、已知:int *p, a;则语句“p=&a; ”中的运算符“&”的含义是( ) A、位与运算 B、逻辑与运算 C、取指针内容 D、取变量地址 18、在进行文件操作时,写文件的一般含义是( ) A、将计算机内存中的信息存入磁盘 B、将磁盘中的信息存入计算机内存 C、将计算机CPU中的信息存入磁盘 D、将磁盘中的信息存入计算机CPU 19、若执行fopen函数时发生错误,则函数的返回值是( ) A、地址值 B、0 C、1 D、EOF 20. 有如下程序 long fib(int n) { if(n>2) return (fib(n-1)+fib(n-2)); else return (2); } main() { printf(“%ld\n”,fib(3));} 该程序的输出结果是 A、2 B、4 C、6 D、8 二、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。每题 2 分,共 10 分) 1.若变量已正确定义并赋值,下面符合 C 语言语法的表达式是 1)a:=b+1 2)a=b=c=2 3)a+=b+3 4)*p++ 5)a=a+7=c+b 2.以下叙述中正确的是 1)在不同的函数中可以使用相同名字的变量 2)函数中的形式参数是局部变量 3)在一个函数内定义的变量只在本函数范围内有效 4)在一个函数内的复合语句中定义的变量在本函数范围内有效 5)用 static 标识的变量是全局变量 3.设有如下定义:int (*ptr)( ); 则以下叙述中不正确的是 1)ptr 是指向一维数组的指针变量 2)ptr 是指向 int 型数据的指针变量 3)ptr 是指向函数的指针,该函数返回一个 int 型数据 4)ptr 是一个函数名,该函数的返回值是指向 int 型数据的指针 5)ptr 是一个指向二维数组的指针变量 4.以下叙述正确的是 1)do-while 语句构成的循环不能用其它语句构成的循环来代替 2)do-while 语句构成的循环只能用 break 语句退出 3)由 do-while 语句构成的循环,其循环体至少执行一次 4)用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环 5)用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环 5.若已定义:int a[9],*p=a; 并在以后的语句中未改变 p 的值,能表示 a[1]地址的表达 式是 1)p+1 2)a+1 3) a++ 4)++p 5)&a[1]
三、判断对错题(每题1分,共5分) 1、在C程序中,一行只能写一条语句。 2、若已定义 char strl7若要输入字符串”acup”,应使用str="acup”。 3、不可以用关系运算符对字符数组中的字符串进行比较。 4、在调用函数时,当实参与形参都是简单变量时,它们之间的数据传递方式 是单向值传递。 5、C语言中文件和存取方式只能顺序存取。 四、阅读程序,写出程序的运行结果(每题3分,共15分) {int*pl,*p2,i=10,12=20 pI=&il; printf("%d, %dn,pl, *p2); 2、manO i int a, b, c: c=++a-b++ printf("%d", c) 3、 void addo i static printf("%d x) void maino for(i=0i<3++) addo { char ch[2]5}={“6934,8254”},*p[2]; for(=0i<2i++) pl=ch([]; for(i=0;1<2;计+) for(=0p[0&&p[[j9=2 S=10*s+p[-0; printf( %d”,s) long fun(int n) gs if(n==1)(n=2)s=2 else s-n+fun(n-1); return(s) fun(4)
三、判断对错题(每题 1 分,共 5 分) 1、在C程序中,一行只能写一条语句。 2、若已定义char str[7];若要输入字符串”a cup”,应使用str=”a cup”。 3、不可以用关系运算符对字符数组中的字符串进行比较。 4、在调用函数时,当实参与形参都是简单变量时,它们之间的数据传递方式 是单向值传递。 5、C语言中文件和存取方式只能顺序存取。 四、阅读程序,写出程序的运行结果(每题 3 分,共 15 分) 1、main() { int *p1,*p2,i1=10,i2=20; p1=&i1; p2=&i2; printf("%d,%d,",*p1,*p2); p2=p1; printf("%d,%d\n",*p1,*p2); } 2、main() { int a,b,c; a=-1;b=-2; c=++a-b++; printf("%d",c);} 3、void add() { static int x=0; x++; printf("%d ",x); } void main() { int i; for(i=0;i’0’&&p[i][j]<’9’;j+=2) s=10*s+p[i][j]-‘0’; printf(“%d”,s); } 5. long fun(int n) { long s; if(n==1)||(n==2) s=2; else s=n+fun(n-1); return (s); } main() { long x; x=fun(4);
printf( %old x) 五、填空题(每空2分,共20分) 1.xyzt均为int变量,则执行下面语句后,t的值为( 2.以下函数返回数组s中最大元素的下标,数组中元素的个数由t传入。 Findmax(int s[, int t) Int m, n; for(n=0, m=n, ns(m( n( return 3.下面 Invert函数的功能是将一个字符串str的内容颠倒过来。 nclude<string void invert(char str Int 11( ; for(I=0 j=( f k=strl] str[I=strLiI stril=k; 4.下列程序的功能是将数组a中的偶数输出。 int a[ 10],i, *p; for(=0;i<10;i++ scanf(%d”,&a[i) hile(p<( printf("%d”,*p) 5.下面程序的功能是统计文件中字符的个数 # include< stdio.h” FILE"fp fp= fopen( "test dat”,"r”) if( i printf("cannot open test. dat") exit(O); fgetc(p) printf("%d”n), fclose(fp) 六、程序题(共30分) 1.请编写一个程序,求序列2/1+3/2+5/3+8/5…前20项之和(4分) 2.编程求一个3x3矩阵的主对角线元素之和(设该矩阵元素均为整型数据)(5分)
printf(“%ld”,x); } 五、填空题(每空 2 分,共 20 分) 1.x,y,z,t 均为 int 变量,则执行下面语句后,t 的值为( ). x=y=z=1; t=++x||++y&&++z; 2.以下函数返回数组 s 中最大元素的下标,数组中元素的个数由 t 传入。 Findmax(int s[],int t) { int m,n; for(n=0,m=n;ns[m]) ( ); return ( ); } 3.下面 invert 函数的功能是将一个字符串 str 的内容颠倒过来。 #include void invert(char str[]) { int i,j,( ); for(I=0,j=( );( );I++,j--) { k=str[I]; str[I]=str[j]; str[j]=k; } } 4.下列程序的功能是将数组 a 中的偶数输出。 main() { int a[10],i,*p; for(i=0;i<10;i++) scanf(“%d”,&a[i]); p=a; while(p< ( )) { if( ) printf(“%d”,*p); p++: } } 5.下面程序的功能是统计文件中字符的个数。 #include<stdio.h” main() { FILE *fp; long n=0; fp=fopen(“test.dat”,”r”); if( ) { printf(“cannot open test.dat”); exit(0); } while( ) { fgetc(fp); n++; } printf(“%d”,n); fclose(fp); } 六、程序题(共 30 分) 1.请编写一个程序,求序列 2/1+3/2+5/3+8/5……前 20 项之和(4 分) 2.编程求一个 3ⅹ3 矩阵的主对角线元素之和(设该矩阵元素均为整型数据)(5 分)
3.请编程序,输入一个4位数字,要求输出这4个数字字符,每个数字间空一个空格。 如输入1990,应输出“1990“。(6分 4.输入三行字符,每行60个字符,要求统计出共有多少个大写字符,多少个小写字符。(7分) 5.编写函数fun,求 fibonacci数列中大于t的最小的一个数,结果由函数返回。 部分程序已给出。(8分) 例如:当t=1000时,函数值为1597 部分程序如下: #includeconio. h #include #include<stdio h int fun (int t) maino i int n; n=1000: printf("n=%d, f=%dn,n, fun(n);
3.请编程序,输入一个 4 位数字,要求输出这 4 个数字字符,每个数字间空一个空格。 如输入 1990,应输出“1 9 9 0“。(6 分) 4.输入三行字符,每行 60 个字符,要求统计出共有多少个大写字符,多少个小写字符。(7 分) 5.编写函数 fun,求 fibonacci 数列中大于 t 的最小的一个数,结果由函数返回。 部分程序已给出。(8 分) 例如:当 t=1000 时,函数值为 1597。 部分程序如下: #include #include #include int fun(int t) { } main() { int n; n=1000; printf(“n=%d,f=%d\n”,n,fun(n)); }