北师大教育 c语言作业答案,北师17春《高级程序设计(C)》离线作业答案

0 O. \4 G, \6 C$ z8 |  H7 J( L1 A《C语言程序设计》作业( y& ?6 @4 ]7 V

本课程作业由两部分组成。第一部分为“客观题部分”,由15个选择题组成,每题1分,共15分。第二部分为“主观题部分”,由简答题和论述题组成,共15分。作业总分30分,将作为平时成绩记入课程总成绩。' W, c; ?7 V; x& p6 W4 Y# I; H7 |

! e! q% C2 j# E客观题部分:& R+ W" A- s" K5 e) L  k4 V6 [4 |

一、选择题(每题1分,共15题)

U4 r: x3 L, V' o6 Z9 d& v1、以下程序运行后,输出结果是(    ): d" D/ d# A8 I1 O* S' n2 b/ _

main()( W) [9 I0 }" d2 c2 k! G! b

{ + D. {+ X* A5 e% l) ]$ D' ~

char *s="abcde";/ j- x3 T) ]/ a2 [+ \

s+=2;

& \; v+ S* y) G$ j9 R2 X- gprintf("%ld\n",s);- p( u8 Z" {0 V6 [  ^1 h/ W+ U

}( [' S6 e' V' `6 c, }( t9 ^

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

' S, f6 F9 M1 P# G# }, J; kC.字符c的地址         D.出错

/ {5 j( P  k* ]9 {5 P+ S2、下面的程序将输出:(       )

, K2 u$ F6 }! \. Nmain()

% \( |. V3 }. `, s6 k0 ~* k- v{

: ^+ @( a. F7 G9 u8 X4 G char ch;

, ?- D, @2 T! p% U- I ch=’1’;

0 _9 ^, G- D* j6 J" ` ch+=1;& u# t8 F6 [/ q/ n

switch(ch): R+ \3 F" P' B1 ~' m0 q" \

{

& d+ c$ J4 T8 ^" V  case ‘1’: printf("this is one. ");

& G* b/ z" ^+ i  case ‘2’: printf("this is two. ");* {5 }4 C) _5 B! m1 @

default: printf("no way! ");: `4 t6 y/ t. @0 Z/ v9 L

}1 d5 o5 H7 E5 q

}

! ~2 t& J  ?1 o& y1 ]+ x7 d$ L4 YA.this is one.         B.this is two.    C.no way!        D.this is two.no way!2 S9 `# L1 h7 b( H: X3 J

以下所列的C语言常量中,错误的是(  )2 {8 k7 m7 D$ E! E

A. 0xFF         B. 1.2e0.5        C. 2L                 D. '\72'

8 |6 u  g6 j6 ^: b" U  l; E设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不正确的语句是(  )' K& m9 k& U  M7 g( Y

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

5 ]' ]" \$ P6 n: P3 P3 M6 u设有如下定义

8 G: ~! I9 \- A$ P7 f% C$ Jint arr[]={6,7,8,9,10};

7 [, r- g4 x) ]# [7 g& K. Rint * ptr;, D* ~9 `# A) t3 [

则下列程序段的输出结果为:(       )5 {% v7 ?# l$ t4 m- O

ptr=arr;

) C7 W* ?" I& P' p7 B1 ^7 o( j  f* (ptr+2)+=2;

' ?8 c! Y& g; Xprintf ("%d,%d\n",*ptr,*(ptr+2));* I  x! n/ Q5 L& @1 @- e

A.8,10         B.6,8            C.7,9             D.6,10$ T7 G6 Y/ a. {% Z$ T7 N- D

6、在下以下程序的输出结果是:(       )& Y7 B0 N: ^5 X. m" J

#define f(x) x*x% N* h, {# }% F! X2 W- _* l

main()8 n0 Z+ Q& f" m0 j, F3 G9 }

{

( I- `  j  l9 aint a=6,b=7,c;

1 B) S& R3 b  U" I1 W3 }! Y( B    c=f(a)/f(b);" |, r" w/ W+ ?' O( {

printf(“%d\n”,c);

+ v  x8 Z9 C8 v# b6 ?( J: K& w2 T( o}

/ Y. D8 H, c$ `5 ~2 m5 ~- a. f9 _A.9                       B.35                          C.36                        D.187 L- y; W/ U0 E& f! I* f4 r

7、设有以下说明和定义8 U! O. ~; \+ {4 |

typedef union

[; [  o; h# q3 u) r{ long   i;  int  k[15];  char  c; }DATE;

$ {- s, D  l) w. g% W( l5 R- Estruct date u  v4 w# y& d9 P0 U

{ int cat;  DATE cow;  double   dog; } too;) [" r. ^; B& t' V% v: a1 M

DATE   max;5 C. A) t- b0 D& b- K/ }' l8 C

则下列语句的执行结果是:(       )2 k2 E2 n  _1 _: R! k( F6 f/ i  v

printf ("%d",sizeof (struct date ) +sizeof(max));* I4 u& D6 m, \

A.30         B.35           C.70           D.75

! E. d# Q( W2 A# ~" ^2 M( S8、若已知int a[3][4],*p;p=(int *)a;那么对数组a的第2行第2列的正确引用是:(       )# d& P8 O" `+ |% G

A.a[2][2]        B.p[9]         C.a[9]                     D.p[1][1]

% \# N: k2 U6 v) k9 U9、下列程序段所表示的逻辑关系是:(       ): a# P+ ^3 X* B( S

if(a

A. x =           2 I" T/ g3 ?5 {8 o6 P

B. x =

" _9 U9 S! c, X+ [C. x =           n( e5 A2 N9 R1 N9 }7 B; v( {

D. x =   $ `4 g/ U: n  x- f

10、若有说明int a[2][2];那么,下面正确的C赋值语句是:(       )

1 [" {' C/ l& l: n# e0 C0 W% FA.a=2;                B.a[1]=2;        C.a[1]={1,2};         D.a[0][1]=a[1][0];

0 j& \+ h- R, y; X+ G11、给出以下定义:

% q) ?; r6 X! G. }1 ], v1 uchar x[ ]="abcdefg";& ^* R9 Q& ?& f) g

char y[ ]={'a','b','c','d','e','f','g'};7 @2 n6 D* R; s4 h2 x; U/ f

则正确的叙述为7 t. s7 Y7 T, n

A、数组X和数组Y等价             B、数组x和数组Y的长度相同- k5 _3 X% W" R' j7 b& t: H5 d2 V6 Y

C、数组X的长度大于数组Y的长度   D、数组X的长度小于数组Y的长度0 `6 E" k$ `8 z2 y4 d

12、有以下程序

$ ^: @4 b' j& L0 L, `; P7 lmain()* v, N# V& u/ ~8 }- w) [, Q

{ char   a[]="programming", b[]="language";2 I3 X7 C  N7 t

char   *p1,*p2;

& {4 G! y& r, H2 x5 Z) Xint    i;

+ _+ W# }: s' l1 c' p+ C* d+ Np1=a;      p2=b;

- F# X5 c9 Q; V- g: p1 |for(i=0;i<7;i++)

* o: J6 b. e: y1 d0 T$ S$ a+ b" vif(*(p1+i)==*(p2+i))   printf("%c",*(p1+i));

) G% W: [8 F) w2 x& M}$ X' r5 |3 b# \( s

输出结果是:/ U2 `/ k# Q$ k% \8 k

A、gm         B、rg           C、or              D、ga% I/ g3 I+ M- {! _+ T

13、下面函数调用语句含有实参的个数为:

/ t; ], W1 A5 p; C5 @/ q. Jfunc((exp1,exp2),(exp3,exp4,exp5));

+ P+ g! g# q' J8 H1 {& CA、1          B、2             C、3           D、42 `8 M+ p, R& `  R0 ?$ n% G! b

14、当执行下面的程序时,如果输入ABC,则输出结果是

; h% e) d0 u0 a: o4 ~#include "stdio.h"

- u" x3 y. B( Z#include "string.h"

1 {- B- _# m" Z" I2 a. q$ p) [main(){

9 m) S0 E% D9 |4 r* N! W, E        char ss[10]="1,2,3,4,5";

3 o) E. i$ @7 E- F6 k        gets(ss);7 U) I- Z) i, f/ Z+ u! s& f! _

strcat(ss, "6789");

' S" S9 w# w4 y9 [# b# v* i        printf("%s\n",ss);

2 V! b6 B" E4 ]# [+ U( L4 j& R}$ u, ~( I6 e  n& h, C' q

A、ABC6789         B、ABC67                C、12345ABC6        D、ABC4567897 i% ~% ~5 u, g: O

15、若二维数组a 有m列,则在a[i][j]之前的元素个数为(    )' W! @" L( `# ^/ ]7 J0 {

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

7 o7 T# p- p( ]  I- j1 ~: }; M% M" n. F主观题部分:

( v* Q* J5 p3 v一、简答题(每题2.5分,共2题)+ n1 q$ C! p3 Y$ H

1、阅读程序写结果3 S6 b1 F0 m' H! K# X

#include % F& B" I! j) {! @3 ~1 y

int f(int n)' ?$ x! Z3 }- j* @$ t# `: A" I" ^

{static int s=1;) L5 V* r# Y# Z1 Z# e0 j

while(n) s*=n--;

1 S  u& a/ ^% ] return s;

. b% p8 w0 \6 Q+ r}1 x( k- `! B" ^( N5 u

main()9 V; q  S$ j  D0 v/ \. _% E, r

{

' v" c2 Z2 U+ `- k: Mint i,j;

: K- e; A+ t# t8 J' V  m         i=f(3); j=f(5)+f(2);/ Y' |1 P1 Z! m

printf("\nThe outputis:\n");7 |' |) d, b, L- t, Z% }

printf("i=%#x,j=%d \n",i,j);# j8 z- r8 j) m( \( q8 ]3 v

}. Q4 t/ }7 J3 ?1 e% X

2、阅读程序写结果

5 Q" G$ g9 G# A4 x) q#include     

& A5 ~; L5 a2 f! W! ptypedef struct     stu

. q* e* _, E3 y9 Y. ?  B# x* w{ char     name[10];

: l! v% P* n: Y- l1 r9 F. [' j' D  int      age;

O  u9 d* m  x* ?' e% D }STU;

" T8 S1 S7 x$ zchar *fun(STU *p,int m)

8 F/ [( T1 g# C0 g5 o{ int k,i;

' ]* L/ N" `$ y& z+ H, A4 C. ]  STU *q;9 @0 r, l- x& h0 k

k=200;% }  Y* k' j! ^

for(i=0;i

8 n  q/ ~8 H1 g5 C. z    if((p+i)->age

{: g. H- R& n2 W: a

k=p->age;% ?" I5 Z: N; b3 U9 L+ P

q=p+i;4 \+ [+ t) V: X

}4 X5 a! ]2 ?5 \- L, N

return q->name;

/ g+ ?" X  _# T: [# X}, @2 M, f; f3 d3 _0 d

main(), K" X3 e$ x( q, Q& w

{ struct  stu   students[3]=

& d) J+ r8 \% F1 O; j{

9 u; c3 ?+ p, R$ n: }"Zhang",20,

2 W  y6 K# N. P0 q& X: ?"Wang",19,

! Q! Z# S! f9 {5 W. _& A"Zhao",18};* I# h3 f. a- ]9 p  L5 @" ]

printf("%s\n",fun(students,3));& t, c+ K7 P& `

}

. @9 A  |/ C& I4 z  S二、论述题(每题5分,共2题)

0 l' c0 n6 M/ ]; p) e6 ~( D1、编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值,并输出最大值与最小值的和、差、积、商。0 r3 K* N8 H# d1 u$ o

2、下面程序的功能是将一个字符串续接到另一个字符串上,至少包含有10处错误。请纠正错误的地方,使之成为正确运行的程序。3 I: n( ?, I; f4 X

#include "string.h"

# h) r4 q9 H- P7 W) w. q#include “stdio.h”

6 R* {6 a) O; X! r( r) N. Tvoid main()

- t# R( i' S- n  {# W1 J& z, n{4 Y3 J  B6 v9 L1 c" _

char str1[4];l' q8 @4 i* B+ I3 a

char *str2="4567";8 W& b% Q2 }2 N! p% S" b

void StringCat(char s1;char *s2)6 f$ x: D% y* O# t, Q* e2 ~9 p

str1="123";

; ]; W' e( X7 W0 S; G; V6 y2 @ StringCat(str1,str2);) k* X/ b7 [5 e6 N( G+ t

printf("%s",str1);

. j1 ]8 v+ G. s% d }

3 k  E4 M. F6 |1 Y6 @' G4 Kvoid StringCat(char s1;char *s2);

]& Y) t9 H7 S) H! t' h; D{" T& {2 ?# V% F; N

char *p1,p2;

% d$ F. g; n' g  m! Y2 K2 j p1=s1;

2 p7 {* I: J; o$ A% Q p1+=strlen(s1);5 v7 }/ s# u3 c0 {

p2=s2;

6 J1 g( i& V/ A+ U! i2 ?. y& ] while(p2)

; P, e2 {0 _2 C   *p1++=*p2++;0 S  G( O% I3 U) }# d# s

*p1=0;6 _" T  P: N3 Z

}. ^! u2 H, y7 o  H( c

转载请注明无忧答案网) a+ I; |& ?3 r4 y& t

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值