C语言程序设计 笔试试卷(三).docx
C语言程序设计 笔试试卷(三)考试时间:120分钟注意:所有答案必须书写在答卷纸上,否则不给分!一、 选择题(每小题1.5分,共60分)1、在C语言中,不正确的int类型的常数是( )。A) 32768 B) 0 C) 037 D) 0xAF2、以下程序输出的结果是( )。main()int a=65535; printf("du",a,a);A) -1 -1 B) 65535 65535 C) -1 65535 D) 65535 -l3、能正确表示a和b同时为正或同时为负的逻辑表达式是( )。A) (a>=0b>=0)&&(a<0b<0) B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0) D) a*b>04、下述合法的C语言的字符常量是( )。A)A B)65 C)"A" D)'t'5、以下程序的输出结果是( )。main()int a=5,b=4,c=6,d; printf("dn",d=a>c?(a>c?a:c):(b);A) 5B) 4 C) 6D) 不确定6、以下程序中,while循环的循环次数是( )。main()int i=0:while(i<10)if(i<1) continue; if(i=5) break; i+: A) 1B) 10 C) 6 D) 死循环,不能确定次数7、x为奇数时值为“真”,x为偶数时值为“假”的表达式是:( )。 A) !(x%2=1) B) x%2=0 C) x%2 D) !(x%2)8、以下程序的输出结果是( )。#include<stdio.h>main()int i=0,a=0;while(i<20)for(;)if(i10)=0) break; elsei-:i+=11;a+=i;printf("dn",a);A) 21 B) 32 C) 33 D) 119、以下程序的输出结果是( )。intf()static int i=0; int s=1: s+=i;i+; return s;main()int i,a=0; for(i=0;i<5;i+) a+=f(); printf("dn",a);A) 20 B) 24 C) 25 D) 1510、有以下程序段:int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b;b=p5;b中的值是( )。A) 5 B) 6C) 8 D) 911、在C语言中,形参的缺省存储类是( )。A) autoB) register C) staticD) extern12、以下不能正确进行字符串赋初值的语句为( )。A) charstr5= "good! " B) charstr="good! "C) char*str="good! "D) charstr5='g','o','o','d'13、若有定义:int aa8;,则以下表达式中不能代表数组元素aa1的地址的是( )。A) &aa0+l B) &aa1C) aa0+D) aa+114、有以下程序段 int m=0,n=0; char c='a'scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%dn",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是( )。A) 10,A,10 B) 10,a,10 C) 10,a,0 D) 10,A,015、下面叙述中正确的是( )。A) 全局变量的作用域一定比局部变量的作用域范围大B) 静态类别变量的生存期贯穿于整个程序的运行期间C) 函数的形参都属于全局变量D) 未在定义语句中赋值的auto变量和static变量的初值都是随机值16、若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值是( )。A) 1.4 B) 1 C) 2.0 D) 217、以下程序的输出结果是( )。int x=3;main()int i; for(i=l;i<x;i+) incre();incre() static int x=l;x*=x+l:printf("d",x);A)33B)22C)26D)2518、下列程序输出结果是( )。 main() int i; for(i=1;i<=5;i+) if(i%2) printf("*"); else continue; printf("#"); printf("$n"); A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$19、有以下程序:#define f (x) X*Xmain()int i;i=f(4+4)f(2+2);printf("dn",i);程序运行后的输出结果是( )。A) 28B) 22 C) 16 D) 420、 若要打开A盘上的user子目录下名为abctxt的文本文件进行读、写操作,下面符合此要求的函数调用是( )。A) fopen("A:userabc.txt","r") B) fopen("A:userabc.txt","r+")C) fopen("A:userabc.txt","rb")D) fopen("A:userabc.txt","w")21、请读程序:#include<stdioh>func(int a,int b)int c; c=a+b; return c; main()int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf("dn",r);上面程序的输出结果是( )。A) 11 B) 20 C) 2l D) 3122、请读程序:#include<stdio.h>main()int a,b; for(a=l,b=1;a<=100;a+)if(b>=20) break; if(b3=1) b+=3;continue; b-=5:printf("dn",a);上面程序的输出结果是( )。A) 7 B) 8 C) 9 D)1023、下列选项中不能正确定义结构体的是( )。A) typede fstruct B) struct color c1 int red; int red; int green; int green; int blue; int blue; color; ; color cl;C) struct color D) struct int red; int red; int green; int green; int blue; int blue; cl; cl;24、设有static char str="Beijing";则执行printf(dn",strlen(strcpy(str,"China");后的输出结果为( )。A) 5 B) 7 C) 12 D) 1425、 若有以下程序:main()int k=2,i=2,m; m=(k+=i*=k); printf("d,dn",m,i);执行后的输出结果是( )。A) 8,6 B) 8,3 C) 6,4 D) 7,426、有以下程序#include<string.h>main() char p="abcde0fghjik0"; printf("dn",strlen(p);程序运行后的输出结果是( )。A) 12 B) 15 C) 6 D) 527、若有一些定义和语句#include <stdio.h>int a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是( )。A) *q=0; B) w=p; C) *p=&a; D) *p=*w;28、程序中头文件typel_h的内容是:#define N 5#define Ml N*3程序如下:#include"type1.h"#define M2 N*2main() int i; i=M1+M2; printf("dn",i);程序编译后运行的输出结果是( )。A) l0 B) 20 C) 25 D) 3029、以下程序执行后sum的值是( )。main()int i,sum; for(i=1;i<6;i+) sum+=i; printf("dn",sum);A) 15 B) 14 C) 不确定 D) 030、有以下程序:void sum(int *a)a0=a1;main()int aa10=1,2,3,4,5,6,7,8,9,10,i; for(i=1;i>0;i-) sum(&aai); printf("dn",aa0);程序运行后的输出结果是( )。A) 4 B) 3 C) 2 D) 131、在c语言中,引用数组元素时,其数组下标的数据类型允许是( )。A) 整型常量 B) 整型表达式C) 整型常量或整型表达式 D) 任何类型的表达式32、有以下程序段int x=3:doprintf("d",x-=2);while(!(-x);其输出结果是( )。A) l B) 30 C) 1-2 D) 死循环33、设变量定义为:int n,*p;char ch,*q,*g;,则语句( )是不正确的。 A)p=&n;g=q=&ch; B)p=&n;q=&ch; C)p=&n;g=&ch D)p=&n;q=&ch;g=p;34、设变量定义如下,则对其中的结构分量num正确的引用是( )。 struct studentint num; char name20; float score; stud10; A)stud1.num = 10; B)student.stud.num = 10; C)struct.stud.num = 10; D)struct.student.num = 10;35、下列程序段的输出结果是( )。 int t,a3 = 10,5,1; int *p; for(p =a; p<a+3; p+) t =t + *p; printf(“%d” ,t); A)15 B)16 C)10 D)不确定36、下列程序的输出结果是( )。main()char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5; printf("d",*-p);A) 非法 B) a4的地址 C) 5 D) 337、当调用函数时,实参是一个数组名,则向函数传送的是( )。A) 数组的长度 B) 数组的首地址C) 数组每一个元素的地址 D) 数组每个元素中的值38、有以下程序段,其中n为整型变量,执行后输出结果是:( )。 n=20 while(n-) printf(“%d”,n) A) 2 B) 10 C) -1 D) 039、有以下程序: main() int x=0,y=0; while(x<5&&+y) y-,x+; printf(“%d,%d”,y,x); 程序的输出结果是:( )。 A) 0,5 B) 1,5 C) 0,4 D) 1,440、若有以下程序: #define N 50void fun( int a, int n, int m ) int i,j for(i=n;i<m;i+) ai-1=ai; main() int i, aN=1,2,3,4,5,6; fun( a,4,10 ); for(i=0;i<6;i+) printf(“%d”,ai); 程序执行后的输出结果是:( )。A) 123560 B) 123456C) 134560 D) 123345二、填空题(每空2分,共40分)1、下列程序执行后输出的结果是【1】。f(int a) static c=0; c=a+c+:return(c);main()int a=2,i,k;for(i=0;i<2;i+)k=f(a+);printf("dn",k);2、下面程序执行后输出的结果是【2】。int m=13:int fun(int x,int y)int m=3; return(x*y-m);main()int a=7,b=5; printf("dn",fun(a,b)m);3、下面程序的功能是输出以下形式的金字塔图案是: * * * *main( )int i,j; for(i=1;i<=4;i+) for(j=1;j<=4-i;j+) printf(“ “); for(j=1;j<= 【3】_;j+) printf(“*”); printf(“n”);4、如果在运行以下程序时从键盘输入:bcd<回车>。输出结果【4】。#include<stdioh>main()char i='a',j='a',k='a'; scanf("c*cc",&i,&j,&k); printf("ccc",i,j,k);5、设有如下程序:main()int nl,n2;scanf("%d",&n2);while(n2!=0)nl=n2%l0; n2=n2/10;printf("%d",n1);程序运行后,如果从键盘上输入1298,则输出结果为 【5】。6、以下fun函数的功能是将一个字符串的内容颠倒过来,请填空。#include “string.h”void fun(char str) int i,j,k; for(i=0,j= 【6】 ; i<j; i+, 【7】 ) k=stri; stri=strj; strj=k; 7)以下函数用于求出一个2×4矩阵中的最大元素值。max_value(arr)int arr4;int i,j,max;max=arr00;for(i=0;i<2;i+)for(j=0;【8】;j+)if(【9】>max) max= 【10】 ;return(max);8、下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请补充完整。main()int i,j;for(i=0;【11】;i+) j=i*10+6;if(【12】) continue;printf("%d",j);9、以下函数的功能是删除字符串s中的所有数字字符。请填空。viod dele(char *s) int n=0,i;for(i=0;si;i+) if( 【13】 )sn+=si;sn= 【14】 ;10、以下函数fun用于求两个整数a和b的最大公约数。fun(a,b)int a,b;int i,j,m,n;if(a>b)m=a;a=b;【15】;i=aj=b;while(n=【16】)!=O)j=i;i=【17】;retum(i);11、有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。#define N 100main()float aN+1,x;int i,p;for(i=0;i<N;i+)scanf("f",&ai);scanf("f",&x);for(i=0,p=N;i<N;i+)if(x<ai)【18】;break;for(i=N-1;【19】;i-)ai+1=ai;ap=x;for(i=0;【20】;i+) printf("8.2f",ai);if(i5=0)printf("n");11