C语言程序设计作业2答案

  • 格式:doc
  • 大小:51.00 KB
  • 文档页数:10

第2次作业答案

一、 单项选择题答案

1B 2B 3D 4C 5B 6B 7D 8D 9B 10C

11C 12B 13A 14C 15B 16B 17D 18A 19D 20B

一. 单项选择题

1.若有以下定义: int a[]={3, 4, 5, 6, 7, 8, 9, 10, 11}, *p=a;

则值为5的表达式是( )。

A)p+=5, *(p+1) B)p+=1, * ++p C)p+=4, *p++ D)p+=1, ++ *p

2.下面函数调用语句含有实参的个数为()

fun( ( a, b, c, d ), ( m, n ), (f, g ) );

A)1 B)3 C)4 D)2

3.函数形式正确的是()。

A) double myfun( int x, int y) B) int myfun( int x, y)

{ m=x+y; return m; } { int m; }

C) int myfun( int x, int y) D) int myfun( int x, int y)

{ int x, y; double m; { int m; m=x+y; return m; }

m=x+y; return m; }

4.不正确的字符串赋值或赋初值方式是()。

A)char *str; str=”string”; B)char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’}

C) char str[10]; str=”string”;

D)char str[]=”string”; str2[]=””; strcpy(str2, str1);

5.以下程序的输出结果是()。

#include

main()

{ char str[]="SSSWLIA", c;

int k;

for (k=2; (c=str[k])!='\0'; k++) {

switch (c) {

case 'I': ++k; break;

case 'L': continue;

default: putchar(c); continue;

}

}

putchar('*');

}

A)SSW* B)SW* C)SW*A D)SW

6.以下程序的输出结果是()。

#include

int w=3;

fun( int k)

{

if ( k==0) return w;

return ( fun(k -1 )*k);

} 2 main()

{ int w=10;

printf("%d\n", fun(5)*w);

}

A)360 B)3600 C)1080 D)1200

7. 以下程序的输出结果是()。

#include

int w=3;

f( int a)

{ int b=0; static int c=3;

b++; c++;

return ( a+b+c);

}

main()

{ int a=2, i;

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

printf("%d ", f(a));

}

A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 9

8.以下程序的输出结果是()。

#include

main()

{ int a[]={1,2,3,4,5,6}, *p;

p=a; *(p+3)+=2;

printf("%d, %d \n ", *p, *(p+3));

}

A)0, 5 B)1, 5 C)0, 6 D)1, 6

9.以下程序的输出结果是()。

#include

#define PT 5.5

#define S(x) PT*x*x

main()

{ int a=1, b=2;

printf("%4.1f\n ", S(a+b));

}

A)49.5 B)9.5 C)12.5 D)33.5

10.下面程序段的输出结果是()。

#include

#define LETTER 1

main()

{ char str[20]="Language", c;

int i=0;

while (( c=str[i])!='\0')

{ i++; # if (LETTER)

if (c>='a'&& c<='z') c=c-32;

#else

if (c>='A'&& c<='Z') c=c+32;

#endif

printf("%c", c);

}

}

A)Language B)language C)LANGUAGE D)lANGUAGE

11.若有说明:char *s[]={“FORTRAN”, “BASIC”,”PASCAL”,”JAVA”,”C”}; 则表达式 *s[1]>*s[3]比较的是()。

A)字符F和字符P B)字符串BASIC和字符串JAVA

C)字符B和字符J D)字符串FORTRAN和字符串PASCAL

12.如下程序的输出结果是()。

#include

main()

{ char a[20]="chinese" ; char *p=a;

for (; p

}

A)chinese B)ciee C)chine D)cie

13. 若有定义: int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为()。

A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j

14. 若有以下定义和语句,则对a数组元素的正确引用为( )。

int a[2][3],(*p)[3];

p=a;

A)(p+1)[0] B)*(*(p+2)+1) C)*(p[1]+1) D)p[1]+2

15.若以下main函数经过编译、连接后得到的可执行文件名为echo.exe,若希望在系统的命令状态下输入某一命令行后得到的输出是chian tianjin,则命令行的内容应是()。

A)chian tianjin B)echo chian tianjin

C)echo D)echo

chian tianjin china

tianjin

16.以下对结构体变量stu中成员age的非法引用是()。

struct student

{ int age; int num; } stu, *p;

p=&stu;

A)stu.age B)student.age C)p->age D)(*p).age

17.已知学生记录描述为:

struct DATE

{ int year;

int month;

int day;

};

struct student 4 { int no; /*学号*/

char name[10]; /*姓名*/

char sex; /*性别*/

struct DATE birth;

};

struct student s;

设变量s中的“生日”应该是“1984年11月11日”,下列对“生日”的正确赋值方式是()。

A)year=1984; B)birth.year=1984;

month=11; birth.month=11;

day=11; birth.day=11;

C)s.year=1984; D)s.birth.year=1984;

s.month=11; s. birth.month=11;

s.day=11; s.birth.day=11;

18.若有以下定义的语句:

union data

{ int i;

char c;

float f;

}a;

int n;

则以下语句正确的是()。

A)a.i=5 B)a={2,’a’,1.2} C)printf(“%d”,a) D)n=a

19. 表达式a

A)~,&,<, || B)~,||,&,< C)~,&,||,< D)~,<,&, ||

20.若执行fopen函数时发生错误,则函数的返回值为()。

A)地址值 B)0 C)1 D)EOF

二. 填空题答案

1. [&arr[i], arr+i]

2.[(1)a[0]=1 a[1]=2 (2)实参和形参是值传递]

3.[(1)0 (2)6]

4. [*(s+j++)=*(s+i);]

5.[(1)i<=7 (2)j=i+7]

6. [123]

7.

[EFGH

IJKL]

8.[n1=1, n2=6]

9.[(1)long num (2) num!=0]

10.[120 ]

11.[FO]

12.[(1)FILE *fp(2)fname(3)fp]

二、 填空题(本大题共11小题,每空2分,共30分)