C程实验习题答案

更新时间:2024-07-04 06:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 C语言概述

问题与思考

1.若有源程序文件t1.c,编译后生成的目标文件名是_t1.obj_,连接后生成的文件

名是__t1.exe_,它们位于磁盘什么位置?

默认情况下是obj和源文件在同一目录下,exe在源文件目录下的debug目录下,可以在编译

环境中设置到其他地方。

2.程序1_3.c中输出的10!值是多少? 3628800

第2章 数据与数据类型

问题与思考

1.实验一的程序1中,语句a=1+1/2+1/3+1/4;执行后变量a的值是__1___。怎样修

改程序才能得到正确的结果?

将a=1+1/2+1/3+1/4改为a=1+1/2.0+1/3.0+1/4.0;

2.实验二中你用什么样的方式定义符号常量?还可以用什么方法定义符号常量?

可以通过Define宏定义和const常量定义两种方式定义符号常量 3.直接阅读实验四的程序,你认为三条输出结果是什么?程序运行得到的结果是什

么?能分析一下为什么是这样的结果?

4.实验五的程序运行时,如果输入数据10 20 40 ,运行时会出现什么结果?为什

么?息样避免这样的情况发生?

面积出现不可预估值,pow参数为负数,即两边之和不大于第三边,应在算面积

之前用if语句判断。

5.下面程序段执行后,问:变量a、b在内存中所占字节数分别为__4___、___4__,

其值分别为__20_、__40__。 int a=-6.56; float b; b=(a=4*5,a*2),a+6;

6.下列定义变量的语句中错误的是______。

A) int _int; B) double int_; C) char For; D) float US$; 7.若变量x、y已正确定义并赋值,下面符合C语言语法的表达式是__A___。

A) ++x,y=x-- B) x+1=y C) x=x+10=x+y D) double(x)/10 8.数字字符0的ASCII的值为48,下面程序运行后输出结果是______。

main()

{char a='1',b='2'; printf(\

printf(\\\n\ }

A) 3,2 B) 50,2 C) 2,2 D) 2,50 9.设有 int x=11; 则表达式 x++*1/3 的值是______。

A) 3 B) 4 C) 11 D) 12

第三章 程序控制结构

习题三

第一部分:输入与输出

1.已有如下定义和输入语句,若要求a,b,c1,c2的值分别为5、6、A和B,当从第一列开始输入数据时,正确的数据输入方式是 ______ (表示回车)。

int a,b; char c1,c2;

scanf(\

A) 5 A 6 B B) 5 A6B C) 5A6B D) 5A6 B 2.以下说法正确的是_______。

A)输入项可以为一个实型常量,如scanf(“%f”,3.5);

B)只有格式控制,没有输入项,也能正确输入,如scanf(“a=%d,b=%d”);

C)当输入实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);

D)当输入数据时,必须指明地址,如scanf(“%f”,&f);

E)可以采用不同的格式符,实现对一个实型数据以八进制或十六进制形式输入/输出。

F)整型数据不能使用%f或%lf格式符。

3.若a是int型变量,则表达式(a=5*6,a*3),a+8的值是 _________ 。 4.若有定义:int b=7; float a=2.5,c=4.7; 则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为__5.5___。

5.输出长整型数据使用格式符___%ld____,输出无符号的整数用格式符__%u__ ,以指数形式输出单精实数用格式符__%e____。

6.下面程序运行时输入:10 11<回车>,输出__a=8,b=17________。

#include void main() {int a,b;

scanf(\

printf(\

}

7.下面程序段执行时,怎样输入才能让a=10,b=20 ?____a=10,b=20______________

int a,b;

scanf(\

8.若a和b均为int变量,以下语句的功能是____交换a和b的值_________。

a+=b;b=a-b;a-=b;

9.在scanf函数调用中,可以在格式字符和%之间加一星号*,它的作用是___本输入项

在读入后不赋给相应的变量_____。

10.a++、++a、a=a+1都能实现使变量a的值增1,与之等效的表达式还有__ a+=1________

第二部分:分支结构

1.若执行下面的程序时从键盘上输入5,则输出结果是______ main() {int x;

scanf(\,&x);

if(x++>5)printf(\\\n\,x); else printf(\\\n\,x--); }

A) 7 B) 6 C) 5 D) 4

2.已知a,b,m,n,c,d变量的定义如下,则执行完下列表达式后m,n的值为______

int a=3,b=4,m=0,n=0,c=3,d=4; (m=a

A) m=1 n=1 B) m=1 n=0 C) m=0 n=0 D) m=0 n=1 3.表达式(!7<5+1>0+4<5)的值是______

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

4.假设在程序中,x,y,z均被定义成整型,且已赋大于1的值, 则下列能正确表示1/(xyz)的表达式是______

A) 1/x*y*z B)1/(x*y*z) C) 1/x/y/(float)z D) 1.0/x/y/z 5.已知字母a的ASCII十进制代码为97,则执行以下语句后的输出为______

char a='a';a--;

printf(\\\n\-'0');

A) b,c B) a--运算不合法,故有语法错 C) 98,c D) 格式描述和输出项不匹配,输出无定值

6.为了避免嵌套的条件语句if-else的二义性,C语言规定:else与_____配对。 A) 缩排位置相同的if B) 其之前最近的if C) 其之后最近的if D) 同一行上的if

7.若给定条件表达式(M)?(a++): (a--),则其中表达式M______

A) 和(M==0)等价 B) 和(M==1)等价 C) 和(M!=0)等价 D) 和(M!=1)等价 8.若有说明语句char s='\\092'; 则该语句______

A) 使s的值包含1个字符 B) 说明不合法,s的值不确定 C) 使s的值包含4个字符 D) 使s的值包含3个字符

9.设a=1,b=2,c=3,d=4,则表达式:a

unsigned long w=5; double x=1.42,y=5.2;

则以下符合C语言语法的表达式是______

A) a+=a-=(b=4)*(a=3) B) x%(-3) C)a=a*3=2 D) y=float(i) 11.有以下变量定义: int k=7,x=12;

则下列值为3的表达式是______ A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5)

12.设 int a=3 ; 则表达式 a<1&& - - a>1 的运算结果和a的值分别是______ A) 0和2 B) 0和3 C) 1和2 D) 1和3 13.假定所有变量均已正确定义,下列程序段运行后x的值是______ ok1=1;ok2=2;ok3=3;x=15; if(!ok1) x--;

else if(ok2) if(ok3) x=3; else x=4;

A) 14 B) 4 C) 15 D) 3 14.下面程序的输出结果是______ void main()

{int x=1,a=0,b=0; switch(x)

{ case 0 :b++; case 1 :a++;

case 2 :a++;b++; }

printf(“a=%d,b=%d\\n”,a,b); }

A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2

15. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果分别是_____ void main( )

{ int x;

scanf(\

if(x++>5)printf(\ else printf(\\\n\ }

A) 7和5 B) 6和3 C) 7和4 D) 6和4 16.有定义:int a=1,b=3,c=5,d=4,x; 则执行完下面一段程序后x的值是 ______。

if(a

if(c

if(a

if( b

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

17.能正确表示a和b同时为正或同时为负的表达式是________。

A) (a>=0||b>=0)&&(a<0||b<0) B) (a>=0&&b>=0)&&(a<0&&b<0) C) (a+b>0)&&(a+b<=0) D) a*b>0

18.当a=3,b=2,c=1时,表达式f=a>b>c的值是 __0____ 。

19.当c的值不为0 时,在下列选项中能正确将c的值赋给变量a、b的是________。 A) c=b=a B) (a=c)||(b=c) C) (a=c)&&(b=c) D) a=c=b 20.下面程序程序后输出结果是_____。

void main()

{int a=3,b=2,c=1,t; if(a>b>c) t=1;

else if(a

else t=-1;

printf(\}

A) 1 B) 0 C) -1 D) 不确定的数 21. 以下程序运行后的输出结果是__3 5 3______。

void main()

{int a=3,b=4,c=5,t=99; if(ac,c>b) t=b;b=a;a=t; printf(\\\n\ }

22. 以下程序运行后的输出结果是___2 1_______。

void main()

{int x=1,y=0,a=0,b=0; switch(x)

{case 1:switch(y)

{case 0:a++;break; case 1:b++;break; }

case 2:a++;b++;break; }

printf(\ %d\\n\ }

23.有以下程序 void main( )

{ int i=1,j=1,k=2;

if((j++||k++)&&i++) printf( \执行后输出结果是_____。

A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 224.以下程序执行后输出结果是_____。 void main( )

{ int a=3,b=4,c=5,d=2; if(a>b) if(b>c)

printf(\); else

printf(\); printf(\}

A) 2 B) 3 C) 43 D) 44 25.以下程序执行后输的结果是____-4____ 。 main( )

{ int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3;

printf(\}

,2,3 第三部分:循环控制

1.对下面程序段描述正确的是__________。

int k=10;

while(k=0) k=k-1;

A) while循环执行10次 B) 循环是无限循环

C) 循环体语句一次也不执行 D) 循环体语句执行一次 2.语句while(!E);中的表达式!E等价于________.

A) E==0 B) E!=1 C) E!=0 D) E==1 3.下面程序段的运行结果是__________.

int n=0;

while(n++<=2); printf(\

A) 2 B) 3 C) 4 D) 有语法错 4.下面程序的运行结果是___________. #include main()

{int num=0; while(num<=2) {num++;

printf(\\\n\ } }

A)1 B)1 C) 1 D) 1 2 2 2 3 3 4 5.以下程序段________.

x=-1;

do{ x=x*x; }while(!x);

A) 是死循环 B) 循环执行二次 C) 循环执行一次 D) 有语法错误 6.如下程序段 _________.

int x=3;

do{printf(\\\n\

}while(!(--x));

A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环 7.下面程序的运行结果是______.

#include main()

{int y=10;

do{y--;}while(--y); printf(\\\n\ }

A) -1 B) 1 C) 8 D) 0

8.若i为整型变量,则以下循环执行次数是_____.

for(i=2;i==0;)printf(\--); A) 无限次 B) 0次 C) 1次 D) 2次

9.执行语句for(i=1;i++<4; ); 后变量i的值是______. A) 3 B) 4 C) 5 D) 不定 10.以下正确的描述是_______.

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句体内使用break语句 C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句

11. 运行下面程序时,从键盘输入20357,则下面程序的运行结果是__66277879______。

#include main( ) {int c;

while((c=getchar())!='\\n') switch(c-'2')

{case 0:

case 1: putchar(c+4);

case 2: putchar(c+4); break; case 3: putchar(c+3);

default: putchar(c+2); break;

}

putchar('\\n'); }

12.下面程序段是从键盘输入的字符串中统计数字字符的个数,用换行符结束循环。请填空。

int n=0,c; c=getchar();

while(__c!='\\n'_____)

{if(__c>='0'&&c<='9'______)n++; c=getchar(); }

13.下面程序的功能是用\辗转相除法\求两个正整数的最大公约数。请填空。

#include main()

{int r,m,n;

scanf(\

if(m

{m=n;n=r;r=__ m%n____; }

printf(\\\n\ }

14.下面程序的运行结果是___s=254______.

#include main()

{int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7){n=n*a;s=s+n;++count;} printf(\ }

15.下面程序段的运行结果是__a=-5_______.

i=1;a=0;s=1;

do{a=a+s*i;s=-s;i++;

}while(i<=10); printf(\

16.下面程序段的运行结果是___8____.

i=1;s=3; do{s+=i++;

if(s%7==0)continue; else ++i; }while(s<15); printf(\

17.下面程序用于打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。完成程序。

main( )

{int i,a,b,c;

for(i=100;i<1000;i++ ) {a = i/100;

b =_i/10__________; c = i;

if(__i==a*a*a+b*b*b+c*c*c_________) printf( \ \ } }

第4章 构造数据类型

第一部分 数组习题

1. 定义如下变量和数组 : int k ;

int a[3][3]={ 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; 则下面语句的输出结果是( )

for(k=0;k<3;k++) printf("%d",a[k][2-k]); A、357 B、369 C、 159 D、 147 2. 执行下面的程序段后,变量k中的值为( )

int k=3,s[2];

s[0]=k;k=s[1]*10;

A、不定值 B、33 C、30 D、10

3. 设有数组定义:char array [ ]=\; 则数组 array所占的空间为( A、4个字节 B、5个字节 C、6个字节 D、7个字节4. 如下程序的输出结果是( )

void main( )

{ int n[5]={0,0,0},i,k=2;

for(i=0;i

A、不确定的值 B、2 C、1 D、0 5. 有如下程序

void main( )

{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++)

for(j=0;j<=i;j++) s+=a[i][j]; printf(\}

该程序的输出结果是( )

A、18 B、19 C、20 D、21 6. 以下程序的输出结果是( )

void main( )

{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++) printf(\,\

}

A、1,5,9, B、1,4,7, C、3,5,7, D、3,6,9, 7. 当执行下面的程序时,如果输入ABC,则输出结果是( )

#include \#include \void main( )

{ char ss[10]=\,2,3,4,5\gets(ss);

strcat(ss,\; printf(\}

A、ABC6789 B、ABC67 C、12345ABC6 D、ABC456789 8.以下程序段的输出结果是( )

char s[ ]= \printf(\;

A、9 B、12 C、13 D、14 9. 下面是对s的初始化,其中不正确的是( )

A、char s[5]={“abc” }; B、char s[5]={‘a’,’b’,’c’}; C、char s[5]=“”; D、char s[5]=”abcde” 10. 以下程序的输出结果是____ abc________________

void main( )

{char s[ ]=\ s[3]= '\\0';

printf(\,s); }

11. 下列程序段的输出结果是___ Hello__________

void main( )

{ char b[]=\; b[5]=0;

printf(\\\n\}

12. 在C语言中,二维数组元素在内存中的存放顺序是___行优先__________

13. 设有定义语句 “ int a[3][4]={{1},{2},{3}} ” ,则a[1][1]值为_______0______,

a[2][1]的值为____0_________

14. 若在程序中用到 “ putchar() ” 函数时,应在程序开头写上包含命令#include

_____ ,若在程序中用到 “ strlen() ” 函数时,应在程序开头写上包含命令__#include string.h_____ 15. 下面程序的功能是输出数组s中最大元素的下标,请填空。

void main() { int k,p;

int s[]={1,-9,7,2,-10,3}; for(p=0,k=p;p<6;p++)

if (s[p]>s[k]) __k=p___________ ;

printf(\\\n\ }

16. 以下程序执行时输入Language Programming的结果是_Language_

#include void main()

{ char str[30];

scanf(\

printf(\\\n\

17. 以下程序可把输入的十进制长整型数以十六进制数的形式输出,请填空。 void main()

{ char b[17]={\ int c[64],d,i=0,base=16; long n;

printf(\\\n\ scanf(\

do{c[i]= __ n % 16________;

i++; n=n/base; }while(n!=0);

printf(\\\n\ for (--i;i>=0;--i)

{d=c[i];

printf(\[ ______ i______ ]; }

}

18. 以下数组定义中,错误的是( C )

A、 int a[]={1,2,3}; B、 int a[5]={1,2,3};

C、 int a[3]={1,2,3,4}; D、 int a[5],b; 19.以下数组定义中,正确的是( B )

A、 int n=4,a[n]={1,2,3,4}; B、 int a[][2]={1,2,3,4};

C、 int a[2][]={1,2,3,4}; D、 int a[][]={{1,2},{3,4}}; 20.设有如下定义:int a[8][10];在C中一个整数占用4字节,设a的起始地址为1000,则a[1][1]的地址是( )

A、 1000 B、 1004 C、 1036 D、 1044

21. 有数组定义:int a[ ][3]={1,2,3,4,5,6,7,8,9},则a[1][2]的值是( ) A、 2 B、 5 C、 6 D、 8

22.设已定义 char str[6]={'a','b','\\0','c','d','\\0'}; 执行语句

printf((\r) 后,输出结果为( )

A、 a B、 ab C、 abcd D、 ab\\0cd\\0 23.引用数组元素时,数组元素下标不可以是( )

A、 字符常量 B、 整型变量 C、 字符串 D、 算术表达式 24.下面程序段的运行结果是( )

void main()

{char a[]=\ strcpy(a,b);

printf(\}

A、 123 B、 123d C、 abcd D、 abcd123

25.下面程序段的运行结果是( )

void main()

{char a[]=\ if(a>b) printf(\\\n\else printf(\}

A、 123 B、 编译时出错 C、 abcd D、

第二部分 结构体习题

1. 下面程序的运行结果是___________. void main()

{ struct cmplx{int x; int y;

}cnum[2]={1,3,2,7};

printf(\}

a)0 b)1 c)3 d)6

2. 以下程序的运行结果是__10,x______. struct n { int x; char c; };

void main()

{struct n a={10,'x'}; func(a);

printf(\ }

func(struct n b) { b.x=20; b.c='y'; }

3. 根据下面的定义,能打出字母M的语句是 。运行时出错

struct person { char name[9]; int age; }

struct person class[10]={ 〞John〞,17, 〞Paul〞,19, 〞Mary〞,18,

〞Adam〞,16};

A.printf(〞%c\\n〞,class[3].name); B.printf(〞%c\\n〞,class[3].name[1]); C.printf(〞%c\\n〞,class[2].name[1]); D.printf(〞%c\\n〞,class[2].name[0];

第五章 指针类型数据

习题

一、选择题

1. 变量的指针,其含义是指该变量的________. a)值 b)地址 c)名 d)一个标志

2. 若有说明;int *p,m=5,n;以下正确的程序段的是________. a)p=&n; b)p=&n;

scanf(\ c)scanf(\d)p=&n; *p=n; *p=m;

3. 若有以下定义,则对a数组元素的正确引用是_________. int a[5],*p=a;

a) *&a[5] b) a+2 c) *(p+5) d) *(a+2)

4. 若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______. a) *(a[i]+j) b) (a+i) c) *(a+j) d) a[i]+j

5. 下面程序段的运行结果是_________. char *s=\ s+=2;printf(\

a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果

6. 以下正确的程序段是_________.

a)char str[20]; b)char *p;

scanf(\

c)char str[20]; d)char str[20],*p=str; scanf(\

7. 若有说明语句

char a[]=\ char *p=\

则以下不正确的叙述是________. a)a+1表示的是字符t的地址

b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符

8. 下面程序的运行结果是_______. #include #include main() {

char *s1=\ char *s2=\ s1+=2;s2+=2;

printf(\ }

a)正数 b)负数 c)零 d)不确定的值

9. 已知说明语句int (*p)[ ];,则下列叙述正确的是:______。 A) p是一个指针变量,它指向一个整型一维数组 B) p是一个指针变量,它指向一个整型数据 C) p是一个指针数组 D) 以上都不对

10. 已知有声明语句char s1[10]= "abcde",s3[10];以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是:______。

A)s3=s1,s1=s2,s2=s3;

B)s3[0]=s1[0],s1[0]=s2[0],s2[0]=3[0];

C)strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]); D)strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,s3);

11. 设int b[ ]={1,2,3,4},y,*p=b; 则执行语句y=*p++;之后,变量y的值为( )

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

二、填空题:

1. 以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。 请填空。

#include \ main()

{int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z;

printf(\输入3个整数:\ scanf(\

printf(\ num=*a;

if(*a>*b)__num=*b____; if(num>*c)_num=*c____;

printf(\输出最小整数:%d\\n\ }

2. 下面程序段的运行结果是__hELLO!______. char s[80],*sp=\ sp=strcpy(s,sp); s[0]='h'; puts(sp);

3. 下面程序段的运行结果是___ef_____. char str[]=\ printf(\若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是__4____. *(a+5)的值是____12_____.

4. 若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8___. *(*(a+1)+0))的值是____8____.

5. 以下程序将数组a中的数据按逆序存放,请填空。 #define M 8 void main()

{int a[M],i,j,t;

for(i=0;i

t=*(a+i);_*(a+i)=*(a+j)_______;*(__a+j_____)=t; i++;j--; }

for(i=0;i

6. 若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用 五种形式引用。它们是: (1)a[i][j] (2)*(a[i]+j) (3)*(*(a+i)+j); (4)(*(a+i))[j] (5)*(__*a__+5*i+j)

7. 下面程序的运行结果是_Coble

dBase

C language

Pascal________.

void main()

{char *a[]={\ char (**p)[]; int j; p=a+3;

for(j=3;j>=0;j--)printf(\ }

8. char (*pa)[10];则pa的类型是:__数组指针_ ___。

9. 设int a[10],b[3][3];数组元素a[5]和b[1][2]分别用指针表示的形式是____*(a+5)_________和_____*(*(b+1)+2)________。

第6章 函数

习题

1. 有如下程序

#include long fib( int n)

{if(n>2) return(fib(n-1)+fib(n-2)); else return(2); }

void main( )

{ printf(\,fib(3));} 该程序的输出结果是( )

A、2 B、 4 C、 6 2. 在C语言中,函数的隐含存储类别是( )

A、 auto B、 static C、 extern 3. 以下所列的各函数首部中,正确的是( ) A、 void play(var:Integer,var b:Integer) B、 void play(int a,b) C、 void play(int a,int b)

D、 Sub play(a as integer,b as integer) 4. 以下程序的输出结果是( )

A、 0 B、 29 C、 31 fun(int x,int y,int z) { z=x*x+y*y;} main( )

{ int a=31;

fun(5,2,a); printf(\,a); }

5. 以下程序的输出结果是( ) f(int b[ ],int m,int n) {int I,s=0;

for(i=m;i

main( )

{int x,a[ ]={1,2,3,4,5,6,7,8, x=f(a,3,7);

D、8 D、 无存储类别 D、 无定值

9}; printf(\ }

A、10 B、18 C、8 D、15 6. 以下程序的输出结果是( )

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

long fun( int n) { long s;

if(n==1 || n==2) s=2; else s=n-fun(n-1); return s;} main( )

{ printf(\\\n\; } 7. 以下程序的输出结果是( ) int f( )

{ static int i=0; int s=1; s+=i;i++; return s; }

main( )

{ int i,a=0;

for(i=0;i<5;i++) a+=f(); printf(\,a); }

A、20 B、24 C、25 D、15

8. 以下程序的功能是调用函数fun计算:m=1-2+3-4+?+9-10,并输出结果。请填空。 int fun( int n) { int m=0,f=1,i;

for(i=1; i<=n; i++)

{ m+=i*f;

f= __-f___________ ; }

return m; }

main()

{ printf(\f(10)______ ); } 9. 以下程序输出的最后一个值是______120_______

int ff(int n)

{ static int f=l;

f=f*n; return f;

}

main( ) { int i;

for(i=1;i<=5;i++ ) printf(\\\n\,ff(i)); }

10. 以下函数的功能是:求x的y次方,请填空。

double fun( double x,int y) { int i; double z;

for(i=1, z=x; i

11. 以下正确的说法是( )

A、用户若需要调用标准库函数,调用前必须重新定义

B 、用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C 、系统不允许用户重新定义标准库函数

D 、用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。

12. C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是( ) A、地址传递 B 、值传递

C 、有实参传给形参,再由形参传给实参 D 、由用户指定传递方式

13. 下面程序的输出是( ) int i=2 ;

printf(“%d%d%d”,i*=2,++i,i++) ;

A、 8 , 4 , 2 B 、 8 , 4 , 3 C、 4 , 4 , 5 D 、 4 , 5 , 6 14. 以下不正确的说法是( )

A 、 register 变量可以提高变量使用的执行效率

B 、 register 变量由于使用的是 CPU 的寄存器,其数目是有限制的 C 、 extern 变量定义的存储空间按变量类型分配

D 、全局变量使得函数之间的 “ 耦合性 ” 更加紧密,不利于模块化的要求 15. C 语言函数返回类型的默认定义类型是___int_________

16. 函数的实参传递到形参有两种方式:_____传值_______ 和_____传址______ 。 17. C 语言变量按其作用域分为____全局变量________和___局部变量_________ 。按其生存期分为____静态________和___动态________ 。

18. 已知函数定义 : { ?? }, 其函数声明的两种写法为__ void dothat(int n,double x);__________ , _____ void dothat(int ,double );_______ 。 19. C 语言变量的存储类别有____auto________ ,_____static_______ ,____register________ 和______extern______ 。

20. 在一个 C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 ____extern________。

18. 已知函数定义 : { ?? }, 其函数声明的两种写法为__ void dothat(int n,double x);__________ , _____ void dothat(int ,double );_______ 。 19. C 语言变量的存储类别有____auto________ ,_____static_______ ,____register________ 和______extern______ 。

20. 在一个 C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 ____extern________。

本文来源:https://www.bwwdw.com/article/7xn.html

Top