<C语言程序设计>第2次作业答案一、单项选择题答案1B 2B 3D 4C 5B 6B 7D 8D 9B 10C11C 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)23.函数形式正确的是()。
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 <stdio.h>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)SW6.以下程序的输出结果是()。
#include <stdio.h>int w=3;fun( int k){if ( k==0) return w;return ( fun(k -1 )*k);}main(){ int w=10;printf("%d\n", fun(5)*w);}A)360 B)3600 C)1080 D)12007. 以下程序的输出结果是()。
#include <stdio.h>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 <stdio.h>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, 69.以下程序的输出结果是()。
#include <stdio.h>#define PT 5.5#define S(x) PT*x*xmain(){ int a=1, b=2;printf("%4.1f\n ", S(a+b));}A)49.5 B)9.5 C)12.5 D)33.510.下面程序段的输出结果是()。
#include <stdio.h>#define LETTER 1main(){ char str[20]="Language", c;int i=0;while (( c=str[i])!='\0'){ i++;# if (LETTER)if (c>='a'&& c<='z') c=c-32;#elseif (c>='A'&& c<='Z') c=c+32;#endifprintf("%c", c);}}A)Language B)language C)LANGUAGE D)lANGUAGE11.若有说明:char *s[]={“FORTRAN”, “BASIC”,”PASCAL”,”JA V A”,”C”}; 则表达式*s[1]>*s[3]比较的是()。
A)字符F和字符P B)字符串BASIC和字符串JA V AC)字符B和字符J D)字符串FORTRAN和字符串PASCAL12.如下程序的输出结果是()。
#include <stdio.h>main(){ char a[20]="chinese" ; char *p=a;for (; p<a+7; p+=2) putchar(*p);}A)chinese B)ciee C)chine D)cie13. 若有定义: int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为()。
A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j14. 若有以下定义和语句,则对a数组元素的正确引用为( )。
int a[2][3],(*p)[3];p=a;A)(p+1)[0] B)*(*(p+2)+1) C)*(p[1]+1) D)p[1]+215.若以下main函数经过编译、连接后得到的可执行文件名为echo.exe,若希望在系统的命令状态下输入某一命令行后得到的输出是chian tianjin,则命令行的内容应是()。
A)chian tianjin B)echo chian tianjinC)echo D)echochian tianjin chinatianjin16.以下对结构体变量stu中成员age的非法引用是()。
struct student{ int age; int num; } stu, *p;p=&stu;A)stu.age B)student.age C)p->age D)(*p).age17.已知学生记录描述为:struct DATE{ int year;int month;int day;};struct student{ 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=a19. 表达式a<b||~c&d的运算顺序是()。
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.[EFGHIJKL]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分)1.int arr[20]; 则arr[i]的地址可表示为2.函数swap(int x, int y)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]和a[1]的值分别为和,原因是swap(a[0],a[1])只是将形参的值交换,实参a[0]和a[1]并不交换. 。
a[0]=1; a[1]=2; swap(a[0],a[1]);3.若有定义 int a [3][4]={{1,2}, {0},{ 4,6,78,10}}; 则初始化后a[1][2]得到的初值是 0 ,a[2][1]得到的初值是 6 。
4.函数delete_string( char s[ ],char c)将字符串s中所出现的与变量c相同的字符删除,请填空。
delete_string(char *s, char ch) /*定义外部函delete_string*/{int i,j;for (i=j=0;*(s+i)!='\0';i++)if (*(s+i)!=ch) *(s+(j++)) = *(s+i)_____________ ;*(s+j)='\0';}5.下面程序段将输出 computer,请填空。
int i, j=0;char c[for(i=0;j=7,i<8;i++)]=”it’s a computer”;for (i=0; j+=i;;i++){ printf("%c",c[j]);; printf(“%c”,c[j];)6. 如下程序段的输出结果是123。