北京师范高级程序设计c语言在线考试答案,北师17春《高级程序设计(C)》离线作业答案...

" X' d7 j1 Z. \' ?

《C语言程序设计》作业

, ^4 p& g2 ?9 E! x; H' _# M本课程作业由两部分组成。第一部分为“客观题部分”,由15个选择题组成,每题1分,共15分。第二部分为“主观题部分”,由简答题和论述题组成,共15分。作业总分30分,将作为平时成绩记入课程总成绩。0 V8 a# Z. G- V. q

% n. j9 E/ \0 u9 l! K$ b6 n3 k

客观题部分:

9 K, |! k. y8 \一、选择题(每题1分,共15题)8 A! F: }' `# S7 z: @

1、以下程序运行后,输出结果是(    )

( N: D5 C1 a- ~6 J+ U0 {4 |main()S" \, e: ~& p  W

{

) u# k: n' n  O1 W* P9 d+ ochar *s="abcde";

" R, @( H* H6 r0 v( fs+=2;

6 g, h1 m1 o- P; Nprintf("%ld\n",s);2 r7 H) d0 l# ^  H* M2 c1 P

}t$ m" @  |7 e8 T# u8 Z- y9 k. l8 i

A.cde        B.字符c的ASCII码值

4 {0 ?8 c" T) w' DC.字符c的地址         D.出错+ @: L* F& g. t7 U( g% ~0 W

2、下面的程序将输出:(       ), @; @) Q' Q7 T" p  Y& M( m) V

main()2 ]5 b2 v7 W8 U- d# n: w, k

{

4 D! T. N. g) p4 Y  u+ N4 M char ch;

7 f) h, ~4 J1 [, @9 d, K: h ch=’1’;+ `- C1 g: b# _, v9 R# \& D

ch+=1;: X% T9 R, J3 ?* Q

switch(ch)0 Z# D' v8 z, `! e# W7 ^

{

( Y" ~3 A9 S5 N: e  case ‘1’: printf("this is one. ");

! E: D' E) P5 F4 {' Q( |) X  case ‘2’: printf("this is two. ");

- x3 t: ]1 h/ G; d8 p" v  default: printf("no way! ");" o8 o! t5 g/ g$ p

}

$ x4 C* c$ B+ D/ z% n/ {8 i$ T  }+ H0 t- d& w; L) f: u+ Y9 e# {

A.this is one.         B.this is two.    C.no way!        D.this is two.no way!

( @, g, ]1 X( e6 M0 ?6 y  B3 K以下所列的C语言常量中,错误的是(  )

! \: y  I" k) ~& nA. 0xFF         B. 1.2e0.5        C. 2L                 D. '\72'

5 F" f* `" N6 m" J6 @3 `设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不正确的语句是(  )5 h9 M  a4 }2 g+ m9 Y, @3 }

A.k=*P1+*P2;    B.P2=k;       C.P1=P2;        D.k=*P1 * (*P2);

) U5 K0 S8 \( w. H6 S) a+ z设有如下定义

; \" ]3 E/ H9 Y" E; l" H8 nint arr[]={6,7,8,9,10};

4 b6 J% U  M) Sint * ptr;* ~" a" L5 ?0 C8 _9 x% j

则下列程序段的输出结果为:(       )

7 D1 v& }8 g0 gptr=arr;/ B* R9 w1 `8 P3 [8 ~

* (ptr+2)+=2;* L  Q8 G% j. p0 V

printf ("%d,%d\n",*ptr,*(ptr+2));7 B  d" R. Q; h8 X2 w1 K

A.8,10         B.6,8            C.7,9             D.6,10

$ O4 M! V; L: X  K$ r/ C* D7 K' V6、在下以下程序的输出结果是:(       )

4 w: v: P& G# [#define f(x) x*x4 V4 c3 a0 s% `. n( c+ W3 E

main()

7 x/ f. k# {* Q. L( `& e! L3 u+ E4 Q' e{

1 S9 {' L4 n0 y% ]int a=6,b=7,c;

. }  E' a$ n4 s1 v: ?    c=f(a)/f(b);

# I! l$ x- j; z. p9 p    printf(“%d\n”,c);

, |0 q( s+ c0 L/ Y& |}

* b2 J8 u* Z) P; c/ q  `8 fA.9                       B.35                          C.36                        D.18

2 Q6 t/ f3 [1 J# P7、设有以下说明和定义# c" A6 r( E  W, p" w' k

typedef union 8 A* F( Z; ?8 `; R

{ long   i;  int  k[15];  char  c; }DATE;2 P; A0 `0 G' [  _- {9 g' `

struct date ! k2 m6 X0 ]/ j. q& H* |5 R

{ int cat;  DATE cow;  double   dog; } too;

7 ]# E6 p0 g3 w7 o- pDATE   max;

* s: j& k# Z+ Z则下列语句的执行结果是:(       )

2 e# n! |& w! x7 h9 b/ J" kprintf ("%d",sizeof (struct date ) +sizeof(max));& g3 B$ Z$ f5 o# |* ?8 W

A.30         B.35           C.70           D.75, |7 K8 ?0 g. O5 p

8、若已知int a[3][4],*p;p=(int *)a;那么对数组a的第2行第2列的正确引用是:(       )

* \7 d8 Y$ `$ rA.a[2][2]        B.p[9]         C.a[9]                     D.p[1][1]" I4 j9 i% L) Z: M- c3 w8 J) H5 g* f. Q

9、下列程序段所表示的逻辑关系是:(       ), U+ l" J( ~! w9 B0 u, t

if(a

A. x =           7 ]& Q" z& M  i" @: p

B. x =

( g; G( m/ E/ K- MC. x =

+ ^/ Q/ ^- s7 E' {2 ?        D. x =   5 z& L: Y% u# Z$ W1 L" e

10、若有说明int a[2][2];那么,下面正确的C赋值语句是:(       )% q( }/ v. y- Z6 D2 |; a' ?

A.a=2;                B.a[1]=2;        C.a[1]={1,2};         D.a[0][1]=a[1][0];" I; @8 {" S* m

11、给出以下定义:

4 C+ L- h( S% k$ w. N2 Zchar x[ ]="abcdefg";

' v9 R4 \. C8 I  Lchar y[ ]={'a','b','c','d','e','f','g'};, u7 f9 b! T) o5 ?+ o2 _

则正确的叙述为

4 P+ l  |% f* {8 c" g! i) T) IA、数组X和数组Y等价             B、数组x和数组Y的长度相同* Q6 I/ r+ J5 N7 L

C、数组X的长度大于数组Y的长度   D、数组X的长度小于数组Y的长度

! X* R$ ?) i. w6 j9 F/ n) J12、有以下程序" N2 j7 _8 M. e* G

main()$ q* |# @6 K4 |

{ char   a[]="programming", b[]="language";

5 ]- |4 f3 b$ R+ ^) ?. L& }' e$ ?char   *p1,*p2;8 z: T- A4 K0 i" T0 K2 F

int    i;6 B' B/ \/ q& r! N$ [" W- |

p1=a;      p2=b;' B# i, S5 L  w

for(i=0;i<7;i++)

3 p9 G* M- a5 i. z* h% o; ?if(*(p1+i)==*(p2+i))   printf("%c",*(p1+i));# i9 m7 G' ^% C2 c' k) O

}; q$ t4 p& v- s# m3 }) z

输出结果是:

8 p# k, L- {  `A、gm         B、rg           C、or              D、ga

& ~* S! q- ?- E3 t* G/ e6 b13、下面函数调用语句含有实参的个数为:$ }* N: f  Z. Q' }

func((exp1,exp2),(exp3,exp4,exp5));

, m: N8 C0 W; L7 e3 j! ?6 ]% O" qA、1          B、2             C、3           D、4" `4 [4 p7 u7 R8 b

14、当执行下面的程序时,如果输入ABC,则输出结果是+ i( x- E/ }9 Q/ n$ k

#include "stdio.h"

/ i9 |7 _8 G& _$ a& w8 z#include "string.h"

8 h) O. _% ~4 ^, Omain(){

0 F8 S5 ?) e  U1 b; u( L1 J        char ss[10]="1,2,3,4,5";

* [' [" I2 O$ _* t        gets(ss);

! n1 g- k+ ^7 P) B8 c4 |        strcat(ss, "6789");

; P- ^7 S7 m; W- p/ G, x        printf("%s\n",ss);/ }+ R/ U6 v3 G2 _! x0 p

}

' \- u8 y/ P9 e# }. bA、ABC6789         B、ABC67                C、12345ABC6        D、ABC456789

4 S) C5 p7 M8 j% [15、若二维数组a 有m列,则在a[i][j]之前的元素个数为(    )! R* }, H' v0 S/ \3 |. o

A、j*m+i        B、i*m+j         C、 i*m+j-1     D、i*m+j+1

: d/ X( [1 U5 |; z! s" [主观题部分:8 d* s0 d/ J- `9 k9 j" Y& e

一、简答题(每题2.5分,共2题)

' E( k; e) a  Q2 i/ Z9 T& D: K1、阅读程序写结果

3 T7 x, E2 B% h#include - o* d3 }+ h5 p8 v

int f(int n). |" _8 W: y; X# t0 R$ K

{static int s=1;

! L" T" R. s# k% r$ ^5 M while(n) s*=n--;1 a* `& ^9 ^% W7 x

return s;) n8 E" u5 B! K; K4 T2 J7 \3 K' h& Z( t

}

. W/ n* @* x2 ~( H5 fmain()

3 }* V" U! h  e1 `{* B- U- |2 u4 ?

int i,j;

7 a2 U; f! q8 ~$ I         i=f(3); j=f(5)+f(2);& S3 O5 }; f2 R) R

printf("\nThe outputis:\n");

/ _" x! W$ o4 T/ U( R: C1 D' e         printf("i=%#x,j=%d \n",i,j);

# H) X; o! j9 [6 w/ e0 o}

: H  d" Q6 ?8 ^$ X( s. t3 C: H2、阅读程序写结果6 s' ~" B4 n; _- M( d* t: x; I

#include     4 L8 x7 @1 d0 w  c! u4 Y9 _# ^. q0 i  d

typedef struct     stu* h1 T+ s( _  i

{ char     name[10];

% k) y, d; q: M. m  int      age;. n! O7 ~* E9 {* G

}STU;9 i  N, e! R; t% V

char *fun(STU *p,int m)7 H2 z( N, h+ H) Z

{ int k,i;

- A7 I! h+ `3 z8 R  STU *q;

1 r( [5 p; b0 R2 c+ h  k=200;

% l, T9 `1 m8 ~* A, C; ]  for(i=0;i

! ^: x. R  G& }8 B* R, T    if((p+i)->age

. y+ e, v/ d9 P- S. \      {

) ~, Z4 h" @1 C: s        k=p->age;

: w9 a7 X/ z- I# K2 ?        q=p+i;

: l2 A5 H7 |4 X3 o2 u8 C0 b6 N        }

- h( \! O0 P" `- M  return q->name;

/ d# \& A' ?  S0 @! F$ s}{7 @- f% F7 b$ V! X" k1 P

main()

6 f) d" E4 ]# g8 W' C  p{ struct  stu   students[3]=

; _/ `* W7 @2 T5 O, H1 _{. ^* a( r5 ]/ @, W

"Zhang",20,' u6 o6 m: O% F3 L; g, w: b; W

"Wang",19,8 T# S1 `' U7 |9 R( {# O( k1 C1 |

"Zhao",18};- g: w9 e% U: b

printf("%s\n",fun(students,3));7 v8 {" T. E8 ~- b( |3 H! R% @

}3 i7 l, m( n0 ~& B- }* f

二、论述题(每题5分,共2题)$ H4 }$ ]5 X" A

1、编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值,并输出最大值与最小值的和、差、积、商。

- `  r' t% b% g8 S6 e5 w2、下面程序的功能是将一个字符串续接到另一个字符串上,至少包含有10处错误。请纠正错误的地方,使之成为正确运行的程序。6 \2 F5 u- @: o3 E: D& t

#include "string.h"

; C+ V0 ~- z( Y#include “stdio.h”6 |+ C: Y$ I, i9 p7 l

void main()

( [2 W  L1 i4 \: D* Q  f$ i# k1 {{

) o; D6 V8 F& F$ Q char str1[4];

' S' E6 D. T" [8 F3 x) h. a- z. k char *str2="4567";9 @  m0 v0 k- P! D( J9 W! B2 C% e2 Y" `

void StringCat(char s1;char *s2)

! o6 y3 A$ A3 s2 v% Q; K, \ str1="123";

$ L. ], v5 B4 _' C1 q: s; T StringCat(str1,str2);0 n: j# v' i1 f2 z* O2 o) p

printf("%s",str1);2 i/ a! r( Q! l: w! o

}1 ]; W1 D' L0 Z& N. X1 S6 }0 u6 z

void StringCat(char s1;char *s2);% h+ @( y: N% w) O( h$ r1 O# z9 W

{

( X, B8 v8 ~! a8 G! ]* C& C; m char *p1,p2;

% d/ V% m7 U3 W6 m2 g p1=s1;

; j. ?1 e$ C$ f+ _9 Q p1+=strlen(s1);& W5 }1 N0 a6 s! o- R7 c

p2=s2;! N& W7 \  B2 c9 p* x+ k

while(p2)5 X3 a8 o9 z8 J5 f' I5 @( H& L

*p1++=*p2++;

i) f0 n0 @2 Z( B4 K; Z' s& W' b *p1=0;4 i7 J" m, w" d) D& o% J$ i

}+ R1 m1 y" g( H) v) s8 C3 `

转载请注明无忧答案网

& ~) K" A0 z( K

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值