logo资料库

2018年江西东华理工大学C语言程序设计考研真题.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
2018 年江西东华理工大学 C 语言程序设计考研真题 一、选择题:(共 30 小题,1-20 每小题 1 分,21-30 每小题 2 分,共 40 分) 1.C 语言提供的合法关键字是( ) A.switch B.cher C. default D. case 2.在 C 语言中,合法的字符常量是( ) A.′\084′ B. ′ab′ C. ′\x43′ D.′\0′ 3.若已定义 x 和 y 为 double 类型,则表达式: x=1,y=x+3/2 的值是( ) A. 2.0 B.2 C.1 D.2.5 4.合法的数组定义是( ) A.int a[]=〃string〃; B. char a[]={0,1,2,3,4,5}; C.char a=〃string〃; D. int a[5]={0,1,2,3,4,5}; 5.设 a 为整型变量,不能正确表达数学关系 10<a<15 的 C 语言表达式是( ) A. a>10&&a<15 B.a==11||a==12||a==13||a==14 C. 10<a<15 D.!(a<=10)&&!(a>=15) 6.若 t 为 double 类型,表达式 t=1,t+5,t++的值是( ) A. 2.0 B.6.0 C.1 D.1.0 7.若有定义和语句: char s[10];s=〃abcd〃;printf(〃%s\n〃,s);则结果是(以下 μ 代表空格)( ) A. 编译不通过 B.输出 a C.输出 abcdμμμμμ D. 输出 abcd 8.若有定义和语句:int **pp, *p, a=10, b=20; pp=&p;p=&a;p=&b;printf(〃%d,%d\n〃,*p,**pp);则输出结果是( ) A.10,10
B. 20,20 C.20,10 D. 10,20 9.若有以下定义和语句: int u=010, v=0x10, w=10; printf(〃%d,%d,%d\n〃,u,v,w);则输 出结果是( ) A. 8,8,10 B.10,10,10 C. 8,16,10 D. D.8,10,10 10.若有以下定义和语句: char c1=′b′, c2=′e′; printf(〃%d,%c\n〃,c2-c1,c2-′a′ +′A′);则输出结果是( ) A.2,M B.2,E C. 3,E D.输出项与对应的格式控制不一致,输出结果不确定 11.若有定义:int a[3][4];,( )不能表示数组元素 a[1][1]。 A.*(a[1]+1) B. *(a+5) C.(*(a+1))[1] D. *(&a[1][1]) 12.若 i、j 已定义为 int 型,则以下程序段中内循环体的总的执行次数是( ) for(i=5;i>0;i--) for(j=0;j<4;j++){…} A.30 B.24 C.25 D.20 13.若有以下定义和语句: char *s1=〃12345〃,*s2=〃1234〃; printf(〃%d\n〃,strlen(strcpy(s1,s2)));则输出结果是( ) A.9 B.5 C.4 D.10 14.若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示 a 数组元素的表达式是( ) A.*p B. a[p-a] C.*a D. a[10] 15.下面程序的输出结果是( ) A. k=2 a=3 b=2 B.k=3 a=3 b=2
C. k=3 a=2 b=3 D.k=2 a=2 b=3 16.下面程序的输出结果是( ) main( ) {unsigned a=32768; printf(〃a=%d\n〃,a);} A.a=32768 B.a=-32767 C.a=32768 D.a=-1 17.执行下面语句后的输出结果为( ) int i=-1; if(i<=0) printf(〃****\n〃); else printf(〃%%%%\n〃) A. 有语法错误,不能正确执行 B.%%%% C.%%%%c D. **** 18.对于条件表达式(M)?(a++):(a--),其中的表达式 M 等价于( ) A. M!=0 B.M==1 C. M==0 D.M!=1 19.下述程序段的输出结果是( ) int x=10; int 7nbspy=x++;printf(〃%d,%d〃,(x++,y),y++); A.10,10 B.11,11 C.11,10 D.10,11 20.若有以下的定义: int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为 3 的表达式是( ) A. p+=2,*++p B. p+=2,*(p++) C.p+=3,*p++ D.p+=2,++*p 21.假定所有变量均已正确说明,下列是程序段运行后 x 的值是( ) a=b=c=0;x=35; if(!a) x--; else if(b); if(c) x=3; else x=4; A.34 B.3 C.35 D.4 22.在以下一组运算中,优先级最高的运算符是( ) A.<= B.= C. && D. % 23.若有以下定义和语句: int w[2][3],(*pw)[3];pw=w; 则对 w 数组元素的非法引用是( ) A. pw[0][0] B.*(pw+1)[2] C. *(w[0]+2) D.*(pw[1]+2)
24.若有以下程序片段: char str[ ]=〃ab\n\012\\\\〃; printf(〃%d〃,strlen(str));上面程序片段的输出结果是( ) A.12 B.6 C.4 D.3 25.函数调用:strcat(strcpy(str1,str2),str3)的功能是( ) A.将串 str2 复制到串 str1 中后再将串 str3 连接到串 str1 之后 B.将串 str2 连接到串 str1 之后再将串 str1 复制到串 str3 中 C.将串 str1 复制到串 str2 中后再连接到串 str3 之后 D.将串 str1 连接到串 str2 之后再复制到串 str3 之后 26.以下对 C 语言函数的有关描述中,正确的是( ) A.C 函数既可以嵌套定义又可以递归调用 B.函数必须有返回值,否则不能使用函数 C.C 程序中有调用关系的所有函数必须放在同一个源程序文件中 D.在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 27.以下叙述中不正确的是( ) A.在 C 中,外部变量的隐含类别是自动存储类别 B.在 C 中,函数形参可以说明为 register 变量 C.在 C 中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 D.在 C 中,在调用函数时,实参和对应形参在类型上只需赋值兼容 28.设有以下定义或语句,则输出的结果是(用 small 模式编译,指针变量占 2 个字 节)( ) struct date {long *cat; struct date *next; double dog;} too; printf(〃%d〃,sizeof(too)); A.12 B.14 C.16 D.20 29.设有定义:struct sk{int a;float b;}data,*p; 若有 p=&data;,则对 data 中的 a 域的正确引用是( ) A.(*p).data.a B.p->data.a C.(*p).a D.p.data.a 30.以下对枚举类型名的定义中正确的是( ) A.enum a={〃one〃,〃two〃,〃three〃}; B.enum a{〃one〃,〃two〃,〃three〃}; C.enum a={one,two,three}; D.enum a{one=9,two=-1,three}; 二、程序填空题:(每空 2 分,共 50 分) 11.下列算法为奇偶交换排序,思路如下:第一趟对所有偶数的 i,将 a[i]和 a[i+1] 进行比较,第二趟对所有奇数的 i,将 a[i]和 a[i+1]进行比较,每次比较时若 a[i]>a[i+1],将二者交换;以后重复上述二趟过程,直至整个数组有序。 void oesort (int a[],int n) { int flag,i,t; do{ flag=0; for(i=0;i
if(a[i]>a[i+1]) {flag= (2) ; t=a[i+1];a[i+1]=a[i];a[i]=t; } for( (3) ) if (a[i]>a[i+1]){flag= (4) ; t=a[i+1];a[i+1]=a[i];a[i]=t; } }while (5) ; } 2. 下面是对有序表(递增)进行二分查找的递归算法(如果找到,返回起下标,否则 返回-1)。 int BSearch( ElemType A[ ],int low, int high, KeyType K ) { if (low <= high) { int mid = (1) ; if ( K= = A[ mid ].key ) return (2) ; else if ( K > A[mid].key) return (3) ; else return (4) ; } else return (5) ; } 3. 下面程序在数组 a 中查找与 x 值相同的元素所在位置。 void main( ) { int a[11], i, x ; printf( “输入 10 个整数:”); for(i=0; i<10; i++) (1) ; printf( “输入要找的数 x:”); scanf( “%d”, (2) ); a[10]=x ; i=0; while(x != (3) ) (4) ; if( (5) ) printf( “与 x 值相同的元素位置是:%d\n “, i+1 ); else printf( “找不到与 x 值相同的元素!\n “); } 4. Fibonacci 数列 A={1,1,2,3,5,8,…}有如下性质: a(0)=a(1)=1 a(i)=a(i-1)+a(i-2) i>1 另外有一个数列 xn,该数列中各元素的值为: x(i)=a(i)/a(i+1) i=0,1,…,n 要求对 xn 中的元素按升序进行排序,然后以分数形式输出排序后的 xn。 例如 n=5 时,排序前的 xn={1/1,1/2,2/3,3/5,5/8}, 排序后的 xn={1/2,3/5,5/8,2/3,1/1}。 make 函数首先生成排序前的 xn,然后调用函数 sort()进行排序,最后输出所求结果。 struct fact { long m,n; }; void sort(int n,struct fact *p) { int a; long s,t,u,v; struct fact *q,*end; for(end=p+(n-1),a=1; (1) ;end--) for(a=0,q=p; (2) ;q++) { s=q->m; t=q->n; u=(q+1)->m; v=(q+1)->n; if( (3) ) { q->m=u; (4) ; (5) ; (q+1)->n=t; a=1; } } }
void make(int n) { int i; long a,b,c; struct fact *x,*y; x=(struct fact *)malloc(sizeof(struct fact)*n); x->m=1; x->n=1; for(a=1,b=1,i=2;i<=n;i++) { c= (6) ; a=b; b=c; (x+(i-1))->m=a; (x+(i-1))->n=b; } (7) ; printf("x%d={%d/%d",n,x->m,x->n); for(y=x+1; (8) ;y++) printf(",%d/%d",y->m,y->n); printf("}\n"); (9) ; } void main() { int n; (10) ; make(n); }
分享到:
收藏