C语言习题集练习含答案

更新时间:2023-11-22 00:53:01 阅读量: 教育文库 文档下载

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

C语言习题集

第一章 C语言概述

复习要点:

1. 程序的构成,main函数和其他函数。 2.语句,注释

3.运行C程序的步骤和方法

习题:

1.C程序是由 函数 构成的,一个C程序中至少包含 一个main函数 。 2. 函数 是C程序的基本单位。(最小单位是表达式) 3.C程序有且只有一个 main函数 。 4.C程序从 main函数 开始执行。

5.C程序注释符是由 /* 和 */ 组成,且不能嵌套使用。

6.C程序的语句是以 ; 结束。

7.C程序一条语句可分多行写,需要以 为连接符。(可以直接换行)

8.C程序可以用 { 和 } 将多条语句括起来,形成复合语句。

9.上机运行一个C程序必须经过 源代码输入 ,编译 , 连接 , 运行 4个步骤。

10.C程序的源文件扩展名是 。c 。 11.以下叙述中正确的是( C)

A)C语言程序将从源程序中第一个函数开始执行

B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C)C语言规定必须用main作为主函数名,main必须小写,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数 12.以下叙述中错误的是( D )

A)C语言源程序经编译后生成后缀为.obj的目标程序

B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 13.以下不是语句的是( A)

A) a=10 B)a=b+c;c=20;C) ; D){a=b;b++;} 14.运行以下程序 main()

{

int a=10; /* 定义一个变量 a

a=20; */

printf(“%d”,A); 此程序应该改写为:printf(“%d”,a) }

输出的结果是 B 。 A) 10 B)20

1

15.牢记VC++6.0的出错提示

英文提示 中文实际意义 missing ; , ( { 等 表示缺少 ; ,( {

'T' : undeclared identifier T没有定义(T要先定义然后才能使用)

'sqrt' undefined; sqrt如果是函数名则表示它的头文件没有包含 'T' : redefinition T重复定义(可能是多次定义了T) Cannot open include file 头文件的拼写或路径的不对

第二章 数据类型,运算符与表达式

复习要点:

1. C的数据类型(整型,字符型,浮点型)及其定义方法。 2. C运算符的种类、运算优先级和结合性。 3. 不同类型数据间的转换与运算。

4. C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

习题:

1.C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为 大小写字母和下划线 。

2.字符常量使用一对 单引号 界定单个字符,而字符串常量使用一对 双引号 来界定若干个字符的序列。

3.浮点数有 十进制小数形式;(2)指数形式 两种表示形式。 4. C语言%(取余的操作符)要求两个操作数是 整 型。

5.关系运算的值是 整 型。

6.Sizeof(int)的意义 返回int型变量在内存中占的字节数 。 7.假设所有变量均为整型:a=b=5;i=++a;j=b++;则i等于 6 j等于 5 。

8.假设所有变量均为整型:a=3;b=5;a>b&&++a;a

9. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+B)的值为 9 。 提示:a=2,b=5,a++,b++,i=a,j=b,a+b的值

10. a=(2,5,2+5) 则a的值为 7 。 11.表达式:(int)(7.2/2)的值是 3 。

12.C语言中,不同运算符之间运算次序存在 先后 的区别,同一运算符之间运算次序存在 结合性 的规则。

13.32与八进制数 40 相等,75与十六进制数 4b 相等

14.已知x=2.5,a=7,y=4.7则x+a%3*(int)(x+y)%2/4的值是 2.5 15. 下列关于C语言用户标识符的叙述中正确的是( C ) A) 用户标识符中可以出现下划线和字母,可以和关键字同名 B) 用户标识符中不可以出现中划线,但可以出现下划线

C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头

2

D) 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 16.有以下程序 #include main()

{ char c1,c2; c1='A'+'8'-'4'; c2='A'+'8'-'5';

printf(\

}已知字母A的ASCII码为65,程序运行输出后的结果是( A ) A)E,68

B)D,69

C)E,D

D)输出无定值

17.以下各组标识符中,合法的用户标识符是( D ) A)B01 table_1 0_t k% B)Fast_ void pbl book C)xy_ longdouble *p CHAR

D)sj Int _xy w_y23

18.在C语言中,字符型数据在内存中以( D)形式存放。

A)原码 B)BCD码 C)反码 D)ASCII码

19.已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句printf(\后,输出结果是C A)A,B B)A,68 C)65,66 D)65,68 20.1MB等于(D)

A)1000字节 B)1024字节 C)1000*1000字节 D)1024*1024字节 21. 与十六进制数200等值得十进制数为(B )

A)256 B)512 C)1024 D)2048

22.设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( B )

A)n=(n*100+0.5)/100.0 B)m=n*100+0.5, n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 23.以下叙述中错误的是(D )

A)C程序中的#include和#define行均不是C语句 B)除逗号运算符外,赋值运算符的优先级最低 C)C程序中,j++;是具有赋值功能的语句

D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算 24.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(D ) A)均占4个字节 B)根据数据的大小来决定所占内存的字节数 C)由用户自己定义 D)由C语言编译系统决定 25.已知x=10,y=20,则表达式y+=5+x的值为( C ) A) 25 B) -10 C) 35 D) 10 26.以下常量正确的是( D ) A)0X7a, 078, 6a, 57L, B)10., -.5e3, 1e0, 0.0012e-101

C)‘ ’, ‘\\”’, ‘\\0127’, ‘\\xff’ D) 56, -.3, .e2, 1.2e2.1 ,”xy”

27.有以下定义语句,编译时会出现编译错误的是C

3

A) char a=’a’; B)char a=’\\n’; C) char a=’aa’; D)char a=’\\x2d’;

第三章 顺序结构

复习要点:

1. 赋值

2. 输入与输出函数的调用,正确输入数据并正确设计输出格式。 3. 常见的编程题

习题:

1.已知x=1,y=2,则表达式y*=5+x的值为 12 。

2.putchar(getchar( ));从键盘上输入A。则最终的输出是 A 。 3.printf函数和scanf函数的格式说明都使用 % 字符开始。

4. printf(“%-m . nf ”, A);其中-m表示 长度为m,左对齐 , n表示 小数位长度为n。

5.已知a=17则printf(“%o,%#o”,a,A);输出的结果是 。(#输出0八进制标志) 6.已知a=17则printf(“%*d,%d”,-5,a) ;输出的结果是 17 0 。;*表示跳过改项目,%d没有对应会输出0

7.scanf处理输入数据时,遇到下列情况时该数据认为结束: 空格 , Tab , 回车 。

8.一般地,调用标准字符或格式输入输出库函数时,程序开头应有包含头文件的预编译命令: stdio。h 。

9.下列符合语法的赋值语句是(cd )

A)a=7+b=8; B)++a=7; C)a=b,b++,a+7; D)a+=2*b,c=++b; 10.关于赋值过程中类型转换叙述错误的是(d )

A)实数赋值给整数变量时,将小数位不会四舍五入,会直接截断 B)整数赋值给实数变量时,整数位不变,小数位补0

C)整型变量赋值给short 时,则只保留2个低字节

D)Double变量赋值给float变量, 则只保留前面的7位有效数字 E)长度相同的有符号整型变量和无符号整型变量可以直接赋值 11.putchar ( )函数可以向终端输出一个。d

A)整型变量表达式值 B)实型变量值

C)字符串 D)字符或字符型变量值 12.有以下程序 main()

{ printf(\

程序运行后的输出结果是(A )

A)0 B)1 C)-1 D)NULL没定义,出错 13.执行下列程序片段时输出结果是( a )。 unsigned int a=65535;

printf(“%d”,A);

A)65535 B)-1 C)-32767 D)1 14.执行下列程序片段时输出结果是( B )。

4

float x=-1023.012

printf(“\\n%8.3f,”,x); printf(“.3f”,x);

A)1023.012, -1023.012 B)-1023.012,-1023.012 C)1023.012,-1023.012 D)1023.012, 1023.012

15.对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按( D ) 方式输入数据。

int k1,k2,k3,k4;

scanf(“%d%d”,&k1,&k2);

scanf(“%d,%d”,&k3,&k4);

A)1020↙ B)10 20↙ C)10,20 ↙ D) 10 20↙ 10 20↙ 10 20↙ 10,20↙ 10,20↙ 16.若运行时输入:12345678↙,则下列程序运行结果为( d )。 main ( )

{ int a,b;

scanf(“--=”,&a,&b); 可以在后面加&c就对了a printf(“%d\\n”,a+b);

}//按照教育部考试中心教材标准

A)46 B)579 C)5690 D)出错

17.有定义语句:int x, y; scanf(\若想让x值为11,下面四组键盘输入正确的是( D ) A)11 12<回车> B)11, 12<回车>

C)a=11,b=12<回车> D)x=11,y=12<回车>

18.阅读以下程序

#include main ( )

{ int case ; float printF;

printf(“请输入2个数:”); scanf(“%d %f”,&case,&printF); printf(“%d %f\\n”,case,printF); }

该程序在编译时产生错误,其出错原因是A

A) 定义语句出错,case是关键字,不能用作用户自定义标识符 B) 定义语句出错,printF不能用作用户自定义标识符 C) 定义语句无错,scanf不能作为输入函数使用 D) 定义语句无错,printf不能输出case的值 19. 有以下程序

#include main ( )

{ int a=1,b=0;

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

程序运行后的输出结果是D

5

值为12, y

A)0,0 B)1,0 C)3,2 D)1,3 20. 有以下程序段 int m=0,n=0; char c='a';

scanf(\printf(\

若从键盘上输入:10A10<回车>,则输出结果是: A A) 10,A,10 B) 10,a,10 C) 10,a,0 D) 10,A,0

21.在屏幕中显示如下字符(提示:用printf ) ****Hello*****

World

============

22.从键盘输入一个小写字母,将其变成大写字母输出?

(提示:1.假定输入的字母一定符合要求2.大小写字母ASCII码相差32)

23.从键盘输入一个100—999之间的数,将该数的个,十,百位数字相加的和输出? (提示:1.假定输入的数一定符合要求2.可以通过 %, / 实现)

int a,b,c,num,sum; scanf(“%d”,&num);

a=num;b=num/10;c=num/100; sum=a+b+c;

printf(“%d”,sum);

第四章 选择结构

复习要点:

1.逻辑关系的表示。 2.条件运算符。

3.用if语句实现选择结构。

4.用switch语句实现多分支选择结构。 5.选择结构的嵌套。

1.下面各逻辑表达式的值,设a=3,b=4,c=5。 (1)a>b

(2)!(a>B)&&!c|| 1: 1 (3)!(x=A)&&(y=B)&&0: 0

2.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求( B )。 A)x%2==0 B)!x%2!=0 C)(x/2*2-x)==0 D)!(x%2)

3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( C )。 A)(x>=1) && (x<=10) && (x>=200) && (x<=210) B)(x>=1) | | (x<=10) | | (x>=200) | | (x<=210) C)(x>=1) && (x<=10) | | (x>=200) && (x<=210) D)(x>=1) | | (x<=10) && (x>=200) | | (x<=210)

4.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是(A ) A)if((a>B)&&(b>C)) k=1; B) if((a>B)||(b>C)) k=1 else k=0;

C)if(a<=B) k=0; D) if(a>B) k=1;

6

else if(b<=C) k=1; else if(b>C) k=1;

else k=0;

5.对if语句的理解错误的是: ( C )

A)if结构,将判断表达式的值视为逻辑值 B)系统将if---else结构视为一条语句 C)else总是与其之前最近的且尚未配对的if配对 D)else可以独立出现 (以下6到12题必须掌握) 6.有如下程序。 #include void main ( ) {

int n=20; if(n<10);

printf(\

if(n=10)printf(\ else

if(n>10) printf(\ else printf(\ }

程序执行后输出的结果是: 7.有如下程序。 main ( )

{

int n;

scanf(\ switch (n/10)

{

default: printf(\

case 6: printf(\ case 10:

case 9: printf(\ case 8: printf(\ case 7: printf(\

} }

从键盘上输入的数是:999,输出的结果是 从键盘上输入的数是:100,输出的结果是 8.有如下程序。 void main ( ) {

int x , y; char op; x=20; y=10;

scanf(\ switch (op)

7

{ case '+': y+=x;break; case '-': y-=x;break; case '*': y*=x;break; case '/': y/=x;break; default: y+=x; }

printf(\

}

从键盘上输入的字符是:’+’,输出的结果是

9.以下if嵌套中实现的逻辑意义不同的是

(1)void main ( ) {

int n; scanf(\

if(n==10)printf(\ \ else

if(n>10) printf(\ \ else printf(\ \ }

(2)#include void main ( ) {

int n; scanf(\ if(n!=10)

if(n>10) printf(\ \ else printf(\ \ else printf(\ } (3)

void main ( ) {

int n; scanf(\

if(n==10)printf(\

if(n>10) printf(\ \

else printf(\ \ }

10.下面程序的输出结果是: #include main() {

int x=100,a=20,b=10;

8

int v1=5,v2=0; if(a

if(b!=15)if(! v1) x=1; else if(v2)x=10; x=-1; printf(\}

}

11. 有如下程序段。 if (a

if (a

if (b

else x=3; else x=6; else x=7;

当a=1,b=3,c=5,d=4时执行完下面一段程序后x的值是 当a=4,b=3,c=5,d=4时执行完下面一段程序后x的值是 当a=1,b=3,c=4,d=3时执行完下面一段程序后x的值是 当a=1,b=3,c=1,d=1时执行完下面一段程序后x的值是

12.有三个整数a,b,c,由键盘输入,输出其中最大的数。

13.某商店推出打折活动,要求购物达到或超过2000元的打八折,购物达到或超过1000元不到2000元的打八五折,购物达到或超过500元不到1000元的减50元,购物不到500元的原价,请写出相应的程序(分别用switch和if—else结构)

13.随机给出一个不多于5位的数,计算出他的位数,按个十百千的顺序输出。

第五章 循环结构

复习要点:

1. for循环结构。

2. while和do- while循环结构。 3. continue语句和break语句。

4. 循环的嵌套。

1.C语言三个循环语句分别是 while 语句, do-while 语句和 for 语句。 2.至少执行一次循环体的循环语句是 do-while 。 3.以下对循环结构相关知识描述错误的( E )。

A)循环结构需要包含结束循环的条件,否则循环结构将陷入死循环

9

B)break的意义是直接跳出循环结构,continue的意义是结束本次循环进入下次循环 C)死循环是指无限循环下去,永远不结束,所以死循环一定是有害的 D)for循环结构的表达式1,只执行一次

E)for循环结构的表达式1,2,3都可以省略,所以表达式1,2,3之间的分号可以省略 F)for循环结构如表达式2省略,则系统认为表达式2的值永远为真 4.下面程序段 int n=2;

while (n=0) {printf(“%d”,n);n--;} 则下面描述中正确的是( C )。

A)while循环执行2次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 5.下述程序段中,( C输出5150 ) 与其他程序段的作用不同。 A)s=0;k=1; B)s=0;k=1; while (1) { Repeat : s+=k ; s+=k ;

k=k+1 ; if (++k<=100)

if (k>100) break ; goto Repeat;

} printf(“\\n%d”,s) ; 输出5050

printf(“\\n%d”,s) ; 输出5050

C)k,s=0; D)s=0;k=1;

for (k=1;k<=100;s+=++k); do printf(“\\n%d”,s) ; s+=k;

while (++k<=100) ; printf(“\\n%d”,s) ;

6.以下程序段的循环次数是( B ) 。

for (i=2; i= =0; ) printf(“%d” , i--) ;

A)无限次 B)0次 C)1次 D)2次 7.有以下程序 main( )

{ int i,n=0; for(i=2;i<5;i++) { do

{ if(i%3) continue; n++;

} while(!i);

n++;}

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

} 程序执行后的输出结果是(D ) A)n=5 B)n=2 C)n=3 D) n=4

8.下面程序的输出结果是 。 main ( ) { int x=9;

10

for (; x>0; x--) { if (x%3==0) {

printf(“%d”,--x); continue ;

} } }

9.有以下程序 main( )

{ int x=0,y=5,z=3;

while(z-->0&&++x<5) y=y-1; printf(“%d,%d,%d\\n”,x,y,z);

} 程序执行后的输出结果是

10.下面程序的功能是输出以下形式的金字塔图案是: * *** ***** ******* ********* main( ) { int i,j;

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

{ for(j=1;j<=5-i;j++) printf(“ “); for(j=1;j<=_______;j++) printf(“*”); printf(“\\n”);}

} 在下划线处应填入的是 11.有以下程序 main ( ) { int x=9;

While(x>=0);

{ printf(“%d”,--x); } }

执行程序以后,x等于

12.从键盘输入一个整数,判断一个整数是否是素数,若是显示”OK”,否则显示”NO”。 13.从键盘输入两个整数,求其最大公约数和最小公倍数

14.打印出水仙花数,水仙花数是指一个3位数,其各位数字和等于该数本身。例如:153是水仙数153=1

3

+53+33

15.一个球从100m高度自由落下,每次落地后反弹回原来高度的一半,在落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高? 16.求 1!+2!+3!+…+9!。

17.利用双重for循环打印乘法口诀表 18.利用循环的嵌套方法来打印下面的图形: *

11

*** ***** ******* ********* ******* ***** *** *

注意: 6到12题,17,18题都要掌握。

第六章 数组

复习要点:

1. 一维数组和二维数组的定义、初始化和数组元素的引用。

2. 字符串与字符数组。

1.C语言数组的下标总是从 0 开始,不可以为负数;构成数组各个元素具有相同的 数据类型 。

2.欲将字符串S1复制到字符串S2中,其语句是 strcpy(s2,s1); 。 3.在C语言中,二维数组的元素在内存中的存放顺序是按先 行 后 列 。 4.以下为一维整型数组a的正确说明是( D )。

A)int a(10); B) int n=10,a[n]; C)int n; int a[n]; D) int a[2+3]; 5.以下不能对二维数组a进行正确初始化的语句是( C ) 。 A)int a[2][3]={0} ;

B)int a[][3]={{1,2},{0}} ;

C)int a[2][3]={{1,2},{3,4},{5,6}} ; D)int a[][3]={1,2,3,4,5,6} ;

6.以下不能正确定义二维数组的选项是(D ) A)int a[2][2]={{1},{2}}; B)int a[][2]={1,2,3,4}; C)int a[2][2]={{1},2,3};

D)int a[2][]={{1,2},{3,4}}; 7.若二维数组a有m列,则计算任一元素(假设一个元素占一个字节)a[i][j]在数组中位置的公式为 ( D )。(设a[0][0]位于数组的第一个位置上) A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

8.在C语言中,引用数组元素时,其数组下标的数据类型允许是( B )。 A) 整型常量 B)整型表达式(或整型常量) C)整型变量 D)任何类型的表达式 9.以下对二维数组a的正确说明是( C ).

A)int a[3][]; B)float a(3,4); C)double a[1][4] D)float a(3)(4); 10.以下下关于C语言中数组的描述正确的是( C )。

A. 数组的大小是固定的,但可以有不同的类型的数组元素。 B. 数组名也是变量,可以对它赋值。

12

C. 数组的大小是固定的,所有数组元素的类型必须相同。

D. Int a[10];则a+1= =&a[2]。

11.在定义int a[10];之后,对a的引用正确的是( D )。

A.a[10] B. a[6.3] C. a(6) D. a[10-10] 12.在执行int a[][3]={1,2,3,4,5,6};语句后, a[1][1]的值是( D )。 A.4 B. 1 C. 2 D. 5

13.以下程序运行后的输出结果是( 1 3 7 15 ) main()

{ int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(\}

14.以下程序运行后 的输出结果是( 1 2 3

0 5 6

0 0 9 )

main()

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

for(j=i+1;j<3;j++) a [j][i]=0;

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

{ for(j=0;j<3;j++) p rintf(\printf(\}

15.有以下程序: #include #include main()

{char a[10]=”abcd”;

printf(“%d, %d\\n”,strlen(A),sizeof(A)); }

程序运行后的输出结果为:B

A)7,4 B)4,10 C)8,8D)10,10

16.有两个字符数组a、b,则以下正确的输入语句是( B ).

(提示因为数组名代表数组的首地址,所以不需要取地址符号)

A)gets(a,B); B)scanf(\ C)scanf(\ D)gets(\ 17.下面程序段的运行结果是( C ).

(提示,凾数strcpy(a,B);将字符串b拷贝到a,所以a的前面三个字符变成ABC第四个变成’\\0’,但e和f仍然存在)

char a[7]=\

char b[4]=\

13

strcpy(a,B);

printf(\

思考:如果改成printf(\输出结果是??? A)空格 B)\\0 C)e D)f 18.有下面程序段,则( D )。 char a[3],b[ ]=\“%s”,a);

A)运行后将输出China B) 运行后将输出Ch

C)运行后将输出Chi D)编译出错

19. 若有说明: int a[ ][3]={1,2,3,4,5,6,7};则a 数组第一维的大小是( B )。(后面系统默认赋值为0,补两个0) A)2

B)3

C)4

D)无确定值

20.以下叙述中错误的是( C )。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D)可以通过赋初值的方式确定数组元素的个数

21.下列函数inverse的功能是使一个字符串按逆序存放,请填空。 void inverse (char str[]) {

char m;

int i,j;

for (i=0,j=strlen(str);i< strlen(str)/2 ;i++, j-- ) { m=str[i];

str[i]= str[j-1] ;

str[j-1]=m; ;

} }

注意:22---24题可以不看

22.编写一个程序,从键盘输入10个学生的成绩,统计最高分、最低分和平均分。 解:使用一维数组A存储学生的成绩,然后用for循环进行判定求值。程序如下:

23.编写一个程序,将用户输入的十进制整数转换成任意进制的数。

解:采用辗转相除法进行进制之间的相互转换,将结果存储在一维数组num中,最后显示其值即可。

24.有一行文字,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由终端输入。

第七章 函数

复习要点:

1. 库函数的正确调用。

14

2. 函数的定义方法。 3. 函数的类型和返回值。

4. 形式参数与实在参数,参数值的传递。 5. 函数的正确调用,嵌套调用,递归调用。 6. 局部变量和全局变量。

7. 变量的存的作用域和生存期。

1.C语言函数返回类型的默认定义类型是 。

2.函数的实参传递到形参有两种方式: 和 。

3.在一个函数内部调用另一个函数的调用方式称为 。在一个函数内部直接或间接调用该函数成为函数 的调用方式。

4.在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 。 5.以下正确的说法是( )。

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

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

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

6.以下正确的函数定义是。

A)double fun(int x, int y) B)double fun(int x,y) { z=x+y ; return z ; } { int z ; return z ;} C)fun (x,y) D)double fun (int x, int y) { int x, y ; double z ; { double z ;

z=x+y ; return z ; } return z ; }

7.若调用一个函数,且此函数中没有return语句,则正确的说法是 。 A)该函数没有返回值

B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值

8.以下正确的函数定义是 。

A)double fun(int x , int y) B)double fun(int x ; int y)

C)double fun(int x , int y) ; D)double fun(int x,y)

9.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( ) A)float型 B)int型 C)long型 D)double型 10.若程序中定义了以下函数

double myadd(double a,double B)

{ return (a+B);}

并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误是( ) A)double myadd(double a,B); B)double myadd(double,double); C)double myadd(double b,double A);

D)double myadd(double x,double y);

11..C语言规定,非地址类变量做实参时,它和对应的形参之间的数据传递方式是( )。

15

本文来源:https://www.bwwdw.com/article/2irv.html

Top