admin 管理员组

文章数量: 1086019


2024年2月27日发(作者:switch会员有什么用)

C语言练习一2020

在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。

提示:既包含全部26个大写字母,也包含对应的小写字母,但大、小写字母为各自不同的字符,对应不同的ASCII编码。

正确的答案是“对”。

在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符

提示:在C语言中只要字符的ASCII码不同,则认为是不同的字符。同一字母的大、小写具有不同的ASCII码,所以为不同的字符。

正确的答案是“对”。

在C语言程序中, ABC和abc被作为同一标识符使用

提示:ABC和abc这两个标识符虽然在不区分大、小写的情况下是相同的,但若区分大、小写则是不同的,而在C语言中规定,字母是区分大、小写的,所以它们是完全不同的标识符。

正确的答案是“错”。

1.C语言中的循环类语句有3条,它们是( for,while,do )。

正确答案是:for,while,do

2.C语言中的跳转类语句有四条,它们是goto,return和(

正确答案是:break,continue

3.当不需要函数返回任何值时,则所使用的返回类型为(

正确答案是:void

4.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和(

参数表 )。

正确答案是:参数表

5.在一个程序文件的开始,若需要使用一个包含命令包含一个头文件时,则命令标识符为(

正确答案是:#include

6.在#include预处理命令中,不可以包含(

目标文件 )。

正确答案是:目标文件

7.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据占用的字符位置个数为( 6 )。

正确答案是:6

8.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其小数部分占用的字符位置个数为( 2 )。

正确答案是:2

9.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其整数部分占用的字符位置个数为( 3 )。

正确答案是:3

10.在scanf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输入的数据类型为(

正确答案是:float

11.在scanf()函数调用的格式字符串中,若使用格式符为“%Lf”,则对应输入的数据类型为(

正确答案是:double

12.每个C程序文件在编译时可能出现有严重性错误,其对应的标识符号为(

正确答案是:error

13.在VC++环境下,为运行一个程序而建立的工作区文件的扩展名为(

正确答案是:dsw

二、判断题

1.在C语言中,作为标识符的第一个字符可以是英文字母、数字或下划线字符。

正确的答案是“错”。

题目15

break,continue

void )。

)。

#include )。

float )。

double )。

error

)。

)。

dsw

2.在C语言中,标识符中的非首字符可以是英文字母、数字或下划线字符。

正确的答案是“对”。

3.当需要在程序文件中引入用户定义的头文件时,使用的不是#include命令。

正确的答案是“错”。

4.使用#include命令只能包含头文件,不能包含其他任何文件。

正确的答案是“错”。

5.注释语句的内容只会出现在源程序文件中,不会出现在编译后而生成的目标代码文件中。

正确的答案是“对”。

6.一条注释语句的最后必须使用分号结束。

正确的答案是“错”。

7.源程序文件被编译成目标文件后,其目标文件中也存在有对应的注释内容。

正确的答案是“错”。

8.源程序文件被编译成目标文件后,源程序文件中的注释语句仍然存在。

正确的答案是“对”。

9.在一条注释语句中,除了注释内容外,不需要使用任何特定的标记符。

正确的答案是“错”。

10.多行注释语句的开始和结束标记符可以互换使用。

正确的答案是“错”。

11.在执行“printf("%5d",x);”语句时,其输出的x的值所占用的显示宽度将大于等于5个字符位置。

正确的答案是“对”。

12.在执行“printf("%6d",x);”语句时,其输出的x的值所占用的显示宽度将小于6个字符位置。

正确的答案是“错”。

13.在执行“printf("%8.2f",x);”语句时,其输出的x的值所占用的显示宽度将大于等于8个字符位置。

正确的答案是“错”。

14.在“scanf("%d %d",&x,&y);”语句中,x和y变量均为整数类型。

正确的答案是“对”。

15.在“scanf("%s",x);”语句中,x变量不是字符指针类型。

正确的答案是“错”。

16.在“scanf("%d-%d=%d",&x,&y,&z);”语句中,有语法错误。

正确的答案是“错”。

17.在C语言程序上机操作的过程中,连接程序的操作步骤之前是编译程序。

正确的答案是“对”。

18.在C语言程序上机操作的过程中,需要对每个用户头文件进行单独的编译操作。

正确的答案是“错”。

19.在C语言程序上机操作的过程中,不能够对用户头文件进行单独的编译操作。

正确的答案是“对”。

C语言练习二2020

int类型的长度为( 4 )。

正确答案是:4

常数-4.25的数据类型为( )。

正确答案是:双精度型

一个有符号字符类型的值域范围是( )。

正确答案是:-128到+127

题目4

字符串"Its40n"的长度为( )。

正确答案是:5

实数340.25对应的规格化浮点数为( )。

正确答案是:3.4025e2

题目6

要利用const保留字定义整型常量ABC的值为10,则对应的定义语句为( )。

正确答案是:const int ABC=10;

题目7

要利用#define命令定义ABC常量的值为100,则对应的命令格式为( )。

正确答案是:#define ABC==100

题目8

下列数值中最大值是( )。

正确答案是:28%8

在下面运算符中,优先级最高的是( )。

正确答案是:!

设有语句序列为“int a=12; a+=a*a;”,则执行结束后,a的值为( )。

正确答案是:156

在C语言中,用于比较大小的关系运算符的总数为( )。

正确答案是:6

题目12

x>0 && y<=5的相反表达式为( )。

正确答案是:x<=0 || y>5

题目13

假定x是一个逻辑量,则(x && !x)和(x || !x)的值分别为( )。

正确答案是:0和1

题目14

假定x=4.6,则函数ceil(x)的值为( )。

正确答案是:5.0

表达式floor(2.3457*100+0.5)/100的值为( )。

正确答案是:2.35

二、判断题(每题4分,共52分)

题目16

常数3.26e4是双精度浮点数。

正确的答案是“对”。

题目17

浮点数只有单精度表示,没有双精度表示。

正确的答案是“错”。

题目18

定点数包括单精度定点数和双精度定点数两种。

正确的答案是“对”。

题目19

定义符号常量只有一种方法,就是采用预处理命令#define的方法。

正确的答案是“错”。

题目20

使用const语句定义一个符号常量时,则必须对它同时进行初始化。

正确的答案是“对”。

题目21

在一条变量定义语句中,定义的变量和赋给它的初值之间只能使用等号(=)。

正确的答案是“对”。

题目22

假定x=5,则表达式2+x++的值为7。

正确的答案是“对”。

题目23

表达式(int)14.6%5的值为0。

正确的答案是“错”。

题目24

表达式x=x+1表示成增量表达式为x++。

反馈

正确的答案是“错”。

题目25

假定x=5,则执行“a=(x?10:20);”语句后a的值为10。

正确的答案是“对”。

题目26

逻辑表达式(a>b || b==5)的相反表达式为(a>b && b==5)。

正确的答案是“错”。

题目27

在C语言中,求一个整数的绝对值的数学函数为abs(x)。

正确的答案是“对”。

题目28

在C语言中,退出程序运行的系统函数为exit()。

正确的答案是“对”。

C语言练习三2020

一、单项选择题

若x的值为15,则执行“if(x>10) x++; else x--;”语句后,x的值为( )。

正确答案是:16

题目2

若x的值为-10,则执行“if(!x) x++; else x--;”语句后,x的值为( )。

正确答案是:-11

题目3

若x的值为10,则执行“switch(x%3){case

0: x++; case 1:x++; case 2: x++;}”语句后,x的值为( )。

正确答案是:12

题目4

若x的值为10,则执行“switch(x%3){case

0: x++; break; case 1:x++; default: x++;}”语句后,x的值为( )。

正确答案是:12

题目5

若n的值为10,则执行“for(i=1;

i

正确答案是:1

题目6

若n的值为10,则执行“for(i=0;

; i++) if(i>n/3) break;”语句后,i的值为( )。

正确答案是:4

题目7

若n的值为10,则执行“for(i=1;

i

正确答案是:n-1

题目8

若n的值为10,则执行“for(i=0;

i

正确答案是:n(n+1)/2

题目9

若n的值为10,则执行“while(n-->0)

s+=n;”语句的过程中,循环体被执行的次数为( )。

正确答案是:10

题目10

若n的值为5,s的值为0,则执行“while(n-->0) s+=n;”语句后,s的值为( )。

正确答案是:10

题目11

在下列的语句中,必须以分号作为结束的语句是( )。

正确答案是:do

题目12

若n的值为5,s的值为0,则执行“do s+=n--; while(n>0);”语句后,s的值为( )。

正确答案是:15

题目13

要结束任一种循环语句或switch语句的执行,则在其中使用的语句为( )。

正确答案是:break

二、判断题

题目14

在if语句中,必须带有else子句,不能省略它。

正确的答案是“错”。

题目15

在for循环语句的头部,for后面括号内共有3个表达式位置。

正确的答案是“对”。

题目16

for循环语句不能够被转换为while循环语句。

正确的答案是“错”。

题目17

while循环语句中的循环体可能不会被执行。

正确的答案是“对”。

题目18

while循环语句的循环体,只能是复合语句,不能是简单语句。

正确的答案是“错”。

题目19

do-while循环语句中的循环体可能不会被执行。

正确的答案是“错”。

题目20

do-while循环语句的循环体,只能是复合语句,不能是简单语句。

正确的答案是“错”。

题目21

do-while循环语句是以循环体结尾的。

正确的答案是“错”。

题目22

break语句可以使用在switch语句中。

正确的答案是“对”。

题目23

return语句中可以带有返回表达式。

正确的答案是“对”。

题目24

continue只能使用在任一种循环语句的循环体中。

正确的答案是“对”。

三、程序填空题

题目25

#include

void main() {

int a=5,b=8,c=6,d=15,x,y;

if(a>=b) x=a; else x=b;

if(c>=d) y=c; else y=d;

if(x>=y) printf("%dn",x);

else printf("%dn",y);

}

答案:正确答案是:15

题目26

#include

void main() {

int x=5,y=8,z=12;

if(x>y && x>z) printf("%dn",x);

else if(y>x && y>z) printf("%dn",y);

else printf("%dn",z);

}

答案:正确答案是:12

题目27

#include

void main() {

int a=5,b=8,c;

if(3*a>2*b) c=2*a+3*b;

else if(a==b) c=a*a+b*b;

else c=a*b+3;

printf("c=%dn",c);

}

答案:正确答案是:c=43

题目28

#include

void main() {

int x=5,y=0;

switch(2*x-3) {

case 4: y+=x;

case 7: y+=2*x+1;

case 10: y+=3*x;

}

printf("y=%dn",y);

}

答案:正确答案是:y=26

题目29

#include

void main() {

char ch;

int a,b,c;

scanf("%c",&ch);

scanf("%d %d",&a,&b);

switch(ch) {

case '+': c=a+b; break;

case '-': c=a-b; break;

case '*': c=a*b; break;

case '/': c=a/b; break;

default: printf("Error!n");

}

printf("%d%c%d=%dn",a,ch,b,c);

}

答案:正确答案是:3 5=15

题目30

#include

void main() {

int i,s=0;

for(i=16; i>0; i-=2)

if(i%3==0 || i%4==0) s+=i;

printf("s=%dn",s);

}

答案:正确答案是:s=46

题目31

#include

void main() {

int i,x,y,s=0;

scanf("%d %d",&x,&y);

if(x>y) {i=x; x=y; y=i;}

for(i=x; i<=y; i++)

if(i%2==1) s+=i*i;

printf("s=%dn",s);

}

答案:正确答案是:奇数

题目32

#include

const int N=100;

void main() {

int a,b;

for(a=2; a<=N; a++) {

for(b=2; b*b<=a; b++)

if(a%b==0) break;

if(b*b>a) printf("%d ",a);

}

}

答案:正确答案是:素数(质数)

题目33

#include

void main() {

int i=0, s=0;

while(s<50) {i+=2; s+=i*i;}

printf("s=%dn",s);

}

答案:正确答案是:s=56

题目34

#include

void main() {

int x,p=2;

scanf("%d",&x);

while(x>=p)

if(x%p==0) {printf("%d=%d*%dn",x,p,x/p); break;}

else p++;

}

答案:正确答案是:35=5 7

题目35

#include

void main() {

int x,y,a,p=1;

scanf("%d %d",&x,&y);

if(x

if(x%y==0) {printf("%dn", y); return;}

a=2;

while(y>=a)

if(x%a==0 && y%a==0) {x=x/a; y=y/a; p*=a;}

else a++;

printf("%dn",p);

}

答案:

正确答案是:公约数

题目36

#include

void main() {

int x=36,y=48,z;

do {z=x%y; x=y; y=z;} while(y>0);

printf("x=%dn",x);

}

答案:正确答案是:x=12

题目37

#include

void main() {

int x,i=0,s=0;

scanf("%d",&x);

do {i+=2; s+=i*i;}while(s

printf("n=%dn",i-2);

}

答案:正确答案是:最大

题目38

#include

void main() {

int x=37,k=2;

do {if(x%k==0) break; k++;} while(k*k<=x);

if(k*k>x) printf("Yes!n");

else printf("No!n");

}

答案:正确答案是:Yes!

C语言练习四2020

一、单项选择题

题目1

假定有一个元素类型为int的数组a[10],它所占用的存储空间的字节数为( )。

正确答案是:40

题目2

假定一维数组的定义为“char* a[8];”,则该数组所占用的存储空间的字节数为( )。

正确答案是:32

题目3

假定有一个定义语句为“int a[10]={3,4,2,8,6};”,则元素a[5]的值为( )。

正确答案是:0

题目4

在下面的一维数组定义语句中,有语法错误的是( )。

正确答案是:int a[];

题目5

假定二维数组的定义语句为“int a[3][5];”,则该数组所含元素的个数为( )。

正确答案是:15

题目6

假定有一个定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为( )。

正确答案是:6

题目7

对于一个长度为n的字符串,保存它至少需要占用的存储字节数为( )。

正确答案是:n+1

题目8

对于一个二维字符数组a[M][N],存储每个字符串的长度至多为( )。

正确答案是:N-1

题目9

若需要比较两个字符串的大小,则选用的函数是( )。

正确答案是:strcmp

二、判断题

题目10

一维数组元素带有两个下标。

正确的答案是“错”。

题目11

对于二维数组元素,数组名后使用两对中括号。

正确的答案是“对”。

题目12

在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数据表。

正确的答案是“对”。

题目13

在一维数组的定义语句中,数组名前为元素类型关键字。

正确的答案是“对”。

题目14

在二维数组的定义语句中,数组名后带有两对圆括号。

正确的答案是“错”。

题目15

假定二维数组的定义语句为“double a[M][N];”,则每个数组元素的列下标取值范围在1~N之间。

正确的答案是“错”。

题目16

使用“typedef char BB[10];”语句定义标识符BB为含有10个元素的一维字符数组。

正确的答案是“错”。

题目17

使用“typedef char BB[10][50];”语句定义标识符BB为含有10行50列共500个元素的二维字符数组类型。

正确的答案是“对”。

题目18

一个二维字符数组a[10][20]中存储每个字符串的最大长度为19。

正确的答案是“对”。

三、程序填空题

题目19

#include

void main() {

int a[8]={10,8,6,15,9,21,8,16};

int i,x=a[0];

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

if(a[i]>x) x=a[i];

printf("x=%dn",x);

}

答案:正确答案是:x=21

题目20

#include

void main() {

int a[8]={12,15,20,8,5,9,16,10};

int i,s[3]={0};

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

s[a[i]%3]+=a[i];

printf("%d %d %dn",s[0],s[1],s[2]);

}

答案:正确答案是:36 26 33

题目21

#include

void main() {

int a[3][3]={{3,8,6},{5,9,2},{8,5,12}};

int i,j,b[3]={0};

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

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

b[j]+=a[i][j];

for(j=0; j<3; j++) printf("%d ",b[j]);

}

答案:正确答案是:16 22 20

题目22

#include

void main() {

int a[3][4]={{60,75,83,52},{76,94,88,35},{80,74,46,90}};

int i,j,x=a[0][0],y=-1;

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

for(j=0; j<4; j++)

if(a[i][j]>x) {y=x; x=a[i][j];}

else if(a[i][j]>y) y=a[i][j];

printf("%d %dn",x,y);

}

答案:正确答案是:94 90

#include

#include

void main() {

char a[10],b[10],c[10];

int c1,c2,c3;

scanf("%s %s %s",a,b,c);

c1=strlen(a); c2=strlen(b); c3=strlen(c);

if(c1>c2 && c1>c3) printf("%s ",a);

else if(c2>c1 && c2>c3) printf("%s ",b);

else printf("%s ",c);

}

答案:正确答案是:xucong

题目24

#include

void main() {

char a[]="abcdbfbgacd";

int i=0,i1=0,i2=0,i3=0;

for(i=0; a[i]!='0'; i++) {

switch(a[i]) {

case 'a': i1++; break;

case 'b': i2++; break;

case 'c': i3++; break;

}

}

printf("%d %d %d %dn",i1,i2,i3,i);

}

答案:正确答案是:2 11

题目25

#include

void main() {

char a[]="356";

int i,c[7]={0};

for(i=0; a[i]!='0'; i++)

c[a[i]-48]++; //48为数字字符0的ASCII码

for(i=1; i<7; i++) printf("%d ",c[i]);

}

答案:正确答案是:4

C语言练习五2020

题目1

一个指针指向一个数据对象,它保存着该数据对象的地址,若数据对象为DataType类型,则该指针的类型为( )。

正确答案是:DataType*

题目2

NULL是一个符号常量,通常作为空指针值,它的取值为( )。

正确答案是:0

题目3

若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为( )。

正确答案是:(char*)p

题目4

若要定义整型指针p并初始指向x,则所使用的定义语句为( )。

正确答案是:int *p=&x;

题目5

假定p所指对象的值为25,p+1所指对象的值为42,则表达式*p++的值为( )。

正确答案是:25

题目6

假定p是一个指针变量,则该变量的地址表示为( )。

正确答案是:&p

题目7

已知“char

*s="Hello world!";”,要使变量p指向s所指向的同一个字符串,则p应定义为( )。

正确答案是:char *p=s;

题目8

假定a为一个数组名,则下面表达式中错误的是( )。

正确答案是:*a++

题目9

已知“char

b[10]=”12345”, *p=b;”,则*(p+2)的值为(

)。

正确答案是:'3'

题目10

已知“int a[6][5];”,则元素a[2][4]的地址比该数组的首地址大( )。

选择一项:

正确答案是:56题目11

个字节

要使p指向二维整型数组a[10][20],p应定义为( )。

正确答案是:int(*p)[20]=a;

题目12

执行“int *p=malloc(sizeof(double)*2);”语句后得到的动态存储空间的字节数为( )。

正确答案是:16

题目13

利用动态存储分配创建具有10个字节的一维数组空间的正确语句是( )。

正确答案是:char *p=malloc(10);

二、判断题

在定义指针变量的语句中,对指针变量不允许赋初值。

正确的答案是“错”。

题目15

在定义指针变量的语句“int *p,pp;”中,p和pp具有相同的数据类型。

正确的答案是“错”。

题目16

在语句“typedef

int* inPointer;”中,把标识符inPointer定义为int*类型。

正确的答案是“对”。

题目17

假定a是一个一维数组,则a+i的值与&a[i]的值相等。

正确的答案是“对”。

题目18

已知“int a[10], *p=a;”,则进行*p++运算是不允许的。

正确的答案是“错”。

题目19

假定a是一个二维数组,则表达式*(a[j]+i)所对应的元素为a[i][j]。

正确的答案是“错”。

题目20

假定a是一个二维数组,则数组名a的值和a[0]的值相等。

正确的答案是“对”。

题目21

进行动态存储分配的calloc()函数带有一个参数。

正确的答案是“错”。

题目22

用于释放动态存储空间的函数为free,调研它需要带有一个参数。

正确的答案是“对”。

题目23

假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i个字节。

正确的答案是“对”。

三、程序填空题

题目24

执行下面程序的输出结果为回答正确答案是:80

题目25

#include

void main() {

int a[8];

int s1=0,s2=0,*p;

printf("请输入8个整数:");

for(p=a; p

for(p=a; p

if(*p%2) s1+=*p;

else s2+=*p;

}

printf("%d %dn",s1,s2);

}

答案:正确答案是:偶数

题目26

#include

void main() {

char a[5][10]={"12345","asde45","wer45t","zxc12","89uy78"};

char *p;

int i,c=0,k=0;

for(i=0; i<5; i++) {

p=&a[i][0];

while(*p!='0') {

if(*p>='0' && *p<='9') k++;

c++; p++;

}

}

printf("%d %dn",k,c);

}

答案:正确答案是:15 28

题目27

#include

#include

void main() {

int i,n,*a;

do scanf("%d",&n); while(n<2);

a=calloc(n,sizeof(int));

for(i=0; i

if(i%2) a[i]=2*n+i; else a[i]=2*n-i;

for(i=0; i

}

答案:正确答案是:13 6

题目28

#include

#include

void main() {

int i=0,j,n=10,*a;

a=calloc(10,sizeof(int));

while(i

a[i]=rand()%30+10; //每次得到一个随机整数

for(j=0; j

if(a[i]==a[j]) break;

if(i==j) i++;

}

for(i=0; i

}

答案:正确答案是:相同(相等)

C语言练习六2020

一、单项选择题

在下面的函数声明语句中存在着语法错误的是( )。

正确答案是:AA(int a; int b)

题目2

如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为( )。

正确答案是:static

题目3

假定一个函数定义为“extern char* f1(char*

x){return x;}”,表示该函数作用域的关键字为( )。

正确答案是:extern

题目4

假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是( )。

正确答案是:ff(a[0])

题目5

假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为( )。

正确答案是:int* a

题目6

假定一个函数的参数说明为const int a,则在函数体中不能进行的操作是( )。

正确答案是:a=10

题目7

在函数体中定义的变量具有( )。

正确答案是:局部作用域

题目8

在函数外定义的变量,若带有作用域关键字static,则它具有( )。

正确答案是:文件作用域

题目9

在函数体中定义一个静态变量时,选用的存储属性关键字为( )。

正确答案是:static

题目10

假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为( )。

正确答案是:void

(*ff)(int*a,int)

二、判断题

函数定义格式中的参数表被称为实参表。

正确的答案是“错”。

题目12

函数定义格式中的参数表被称为形参表。

正确的答案是“对”。

题目13

函数调用参数表中的每个实参可以是表达式。

正确的答案是“对”。

题目14

对于标识为static属性的变量,若没有对它进行初始化,则默认的初值为0。

正确的答案是“对”。

题目15

在函数体中定义一个变量时,若不选用任何存储属性关键字进行标识,则它为静态变量。

正确的答案是“错”。

题目16

在C语言程序中,主函数也可以成为递归函数。

正确的答案是“错”。

题目17

在C语言程序中,除主函数外的任何用户定义的函数都可以是递归函数。

正确的答案是“对”。

三、程序填空题

题目18

void xk9(int x) {

char a[10];

int i=0,rem;

do {

rem=x%8; x=x/8;

a[i]=48+rem; //'0'字符的ASCII码为48

i++;

} while(x!=0);

while(i>0) printf("%c",a[--i]);

printf("n");

}

答案:正确答案是:八

题目19

int wr1(int a[], int n, int x) {

int i;

for(i=0;i

if(a[i]==x) return 1;

return 0;

}

答案:正确答案是:查找(顺序查找)

题目20

题干

void wr4(int a[], int b[], int n) {

int i;

b[0]=b[1]=0;

for(i=0;i

if(a[i]%2==0) b[0]++; else b[1]++;

}

答案:正确答案是:奇数

题目21

#include

int wr11(int a[], int n, int k) {

int i,c=0;

for(i=0;i

if(a[i]>=k) c++;

return c;

}

void main() {

int a[9]={9,5,7,12,4,8,15,10,15};

int c=wr11(a,9,8);

printf("%dn",c);

}

答案:正确答案是:6

题目22

未回答

#include

int c=15;

void main() {

int a=10, b=20;

{ int b=a+15; printf("%d ",a+b+c);}

printf("%dn",a+b+c);

}

答案:正确答案是:50 45

题目23

#include

void fn2(int* a, int* b) {

int x=*a;

*a=*b; *b=x;

}

void main() {

int x=15, y=26;

fn2(&x,&y);

printf("%d %dn",x,y);

}

答案:正确答案是:26 15

题目24

#include

int fn1() {

int x=0;

static int y=0;

x++; y++;

return x+y;

}

void main() {

int x1=fn1();

int x2=fn1();

printf("%d %dn",x1, x2);

}

答案:

正确答案是:2 3

题目25

int ff3(int m, int n, int b) {

if(m

else if(m%b==0 && n%b==0) return b*ff3(m/b,n/b,b);

else return 回答}

正确答案是:ff3(m,n,++b)

四、程序设计题

题目26

;

编写一个函数,求出一维整型数组a[n]中所有元素的平方之和。

int fun1(int a[], int n);

反馈

int fun1(int a[], int n)

{

int i,s=0;

for(i=0;i

return s;

}

题目27

编写一个函数,分别求出一维整型数组a[n]中所有奇数元素的个数和所有偶数元素的个数,假定分别用c1和c2所指的对象保存。

void fun2(int a[], int n, int* c1, int* c2);

反馈

void fun2(int a[], int n, int* c1, int* c2)

{

int i;

*c1=*c2=0;

for(i=0;i

if(a[i]%2!=0) (*c1)++; else (*c2)++;

}

题目28

编写一个非递归函数过程,求出两个自然数m和n的最大公约数。

int fun5(int m, int n);

反馈

int fun5(int m, int n)

{

int r;

while(1) {

if(n==0) return m;

r=m%n;

m=n; n=r;

}

}

C语言练习七2020

题目1

在结构类型的定义中,对于类型标识符后的定义体,使用的起止标记符是一对( )。

正确答案是:圆括号

题目2

假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为( )。

正确答案是:16

题目3

假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长度为( )。

正确答案是:8

题目4

假定有结构定义“struct Book{char title[20]; double price;};”,则不正确的语句定义为( )。

正确答案是:struct Book b=("C++ Programming",27.0)

题目5

假定有结构定义“struct Book{char title[20]; double price;};”,则正确的语句定义为( )。

正确答案是:struct Book *x=calloc(6,sizeof(struct Book));

题目6

假定要访问一个结构指针变量x中的数据成员a,则表示方法为( )。

正确答案是:x->a

题目7

与结构成员访问表达式p->name等价的表达式为( )。

正确答案是:(*p).name

题目8

在一个链表中,每个结点必然存在着一个指向自身结点类型的指针域,用来保存下一个结点的( )。

正确答案是:地址

题目9

假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。

正确答案是:p->next=f和f=p

题目10

假定一个联合类型的定义为 “union D{int a; D* next;};”,则该类型的长度为( )。

正确答案是:4

二、判断题

题目11

在同一个结构类型的定义中,各数据成员名必须不同。

正确的答案是“对”。

题目12

在结构类型的定义中,其中的数据成员可以是本身类型的指针对象。

正确的答案是“对”。

题目13

在结构类型的定义中,不允许出现结构类型不完整的超前定义。

正确的答案是“错”。

题目14

定义结构类型的同时能够定义它的变量。

正确的答案是“对”。

题目15

定义结构类型的变量时,能够用同类型的其他变量进行初始化,不能用数据表进行初始化。

正确的答案是“错”。

题目16

使用结构类型时,必须一起使用关键字struct和类型标识符。

正确的答案是“对”。

题目17

在一个链表中,表头结点和表尾结点均无后继结点。

正确的答案是“错”。

题目18

在一个链表中,若表头指针的值非空,则表头和表尾结点必然不是同一个结点。

正确的答案是“错”。

题目19

在C语言中,一个结构类型的长度等于所含的所有数据成员类型长度的最大值。

正确的答案是“错”。

三、程序填空题

题目20

int xb3(struct intNode *f) {

int x=0;

while(f!=NULL) {

if(f->data>x) x=回答 f=f->next;

}

return x;

}

正确答案是:f->data

题目21

;

struct intNode* xb5(int n) {

struct intNode *f, *p;

if(n==0) return NULL;

f=p=malloc(sizeof(struct intNode));

printf("从键盘输入 %d 个整数: ",n);

while(n--) {

scanf("%d",&(p->data));

if(n==0) {p->next=NULL; break;}

p->next=malloc(sizeof(struct intNode));

p=p->next;

}

回答}

正确答案是:return f

题目22

;

#include

#include

struct Worker {char name[15]; int age; int pay;};

void main() {

struct Worker x,*p=&x;

strcpy(,"weirong");

=35; =2600;

p->age+=12; p->pay+=1200;

printf("%s %dn",p->name,);

}

答案:正确答案是:weirong 47

题目23

#include

struct Worker {char name[15]; int age; int pay;};

int xh2(struct Worker a[], int n) {

int i, x=a[0].pay;

for(i=1; i

if(a[i].pay>x) x=a[i].pay;

return x;

}

void main() {

struct Worker a[4]={{"abc",25,420},{"defa",58,638},

{"ghin",49,560},{"jklt",36,375}};

printf("%dn",xh2(a,4));

}

答案:正确答案是:638

题目24

#include

struct AAA {int a[6]; int n;};

struct AAA x;

void main(void) {

int i;

int b[6]={20,35,46,18,24,52};

x.n=6;

for(i=0; i

for(i=0; i

printf("n");

}

答案:正确答案是:52 18 35

题目25

#include

#include

struct CCC {char *a; int n;};

void main(void) {

int n;

struct CCC *a;

scanf("%d",&n);

a=calloc(n,sizeof(struct CCC));

printf("%dn",n*sizeof(struct CCC));

}

答案:正确答案是:40

C语言练习八2020

一、单项选择题

题目1

标准输出设备显示器的文件流标识符是( )。

正确答案是:stdout

题目2

表示文件结束符的符号常量EOF的值为( )。

正确答案是:-1

题目3

假定一个磁盘数据文件占用n个字节的存储空间,则按字节进行编址的范围是( )。

正确答案是:0˜(n-1)

题目4

在C语言中,为只写操作打开一个文本文件的方式为( )。

正确答案是:"w"

题目5

在C语言中,文本文件的打开方式共有( )。

正确答案是:6

题目6

在C语言中,为读和写操作打开一个二进制文件,若文件不存在则自动建立空文件的打开方式为( )。

正确答案是:"wb+"

题目7

从一个文本文件中读取以换行符结束的一个字符串的系统函数为( )。

正确答案是:fgets()

题目8

不正确

向一个文本文件中写入一个字符的系统函数为( )。

正确答案是:fputc()

题目9

向一个二进制文件中写入数据的系统函数为( )。

正确答案是:fwrite()

题目10

从一个二进制文件中读取数据的系统函数为fread(),它的参数有( )。

正确答案是:4个

二、判断题

题目11

一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。

正确的答案是“对”。

题目12

当向字符文件输出一个换行符时,实际将输出的是回车符或换行符。

正确的答案是“错”。

题目13

C语言系统中提供一个用来描述文件属性的类型标识符为FILE。

正确的答案是“对”。

题目14

在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。

正确的答案是“对”。

题目15

在数据文件打开方式字符串中,字符加号(+)只用于打开二进制文件的方式中,不能用于打开文本文件的方式中。

正确的答案是“错”。

题目16

每次只能从文本文件中读取一个字符,不能一次读取一行字符串。

正确的答案是“错”。

题目17

从文本文件中输入数据时,需要调用系统函数fgetc()或fgets()。

正确的答案是“对”。

题目18

向文本文件中输出数据时,需要调用系统函数fputc()或fgetc()。

正确的答案是“错”。

题目19

对二进制文件进行读和写操作将使用同一个系统函数。

正确的答案是“错”。

题目20

在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。

正确的答案是“对”。

三、程序填空题

题目21

void xw2(char* fname) {

FILE *fin=fopen(fname,"r");

char ch;

while(1) {

ch=fgetc(回答 if(ch!=EOF) printf("%c",ch);

else break;

}

fclose(fin);

}

正确答案是:fin

题目22

);

int xw6(char* fname) {

FILE *fin=fopen(fname,"r");

char ch;

int c=0;

while(1) {

ch=fgetc(fin);

if(ch!=EOF) {

if(ch>='a' && ch<='z') c++;

else if(ch>='A' && ch<='Z') 回答 }

else break;

}

fclose(fin);

return c;

}

正确答案是:c++

题目23

;

void xw2(char* fname) {

FILE *in=fopen(fname,"rb");

int c,x;

while(1) {

c=fread(&x,sizeof(int),1,回答 if(c==0) break;

printf("%d ",x);

}

fclose(in);

}

正确答案是:in

题目24

);

int xw5(char* fname) {

FILE *fin=fopen(fname,"rb");

int c,x,max=0;

while(1) {

c=fread(&x,sizeof(int),1,fin);

if(c==0) break;

if(x>max) 回答 }

fclose(fin);

return max;

}

正确答案是:max=x

;

C语言形考一

标记题目

信息文本

一、选择题(共40分,每小题2分)

题目1

正确

获得2.00分中的2.00分

标记题目

题干

在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( main )。

C语言源程序文件的缺省扩展名为( c )。

由C语言目标文件连接而成的可执行文件的缺省扩展名为( exe )。

程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为(空格或回车 )。

每个C语言程序文件的编译错误被分为( 2类 )。

不符合C语言规定的复合语句是( {y=10} )。

C语言程序中的基本功能模块为( 函数 )。

在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和( 参数表)。

在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对( 双引号 )。

在C语言程序中,多行注释语句使用的开始标记符为( /* )。

在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为( char )。

在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为( 5 )。

转义字符''表示的字符是( 反斜线 )。

枚举类型中的每个枚举常量的值都是一个( 整数 )。

运算符优先级最高的是( != )。

设x和y均为逻辑值,则x && y为真的条件是( 它们均为真 )。

设有语句“int a=12; a+=a*a;”,则执行结束后,a的值为( 156 )。

x>0 && x<=10的相反表达式为( x<=0 || x>10 )。

字符串“a+b=12n”的长度为( 7 )。

在下列的符号常量定义中,错误的定义语句格式为( constint M3 10; )。

二、判断题(共60分,每小题2分。叙述正确则回答“是”,否则回答“否”)

题目21

C语言中的每条简单语句以分号作为结束符。(对 )

题目22

C语言中的每条复合语句以花括号作为结束符。(错)

选择一项:

反馈

恭喜你,答对啦!!

题目23

在C语言程序中,在行尾使用注释的开始标记符为一对单斜线字符。(对 )

题目24

注释内容的开始所使用的标记符为/*,则注释内容的结束所使用的标记符为*/。(对 )

题目25

在一个C语言程序文件中,若要包含一个头文件,则使用以百分号开始的预处理命令。(错)

题目26

用于输出表达式值的标准输出函数是printf()。(对 )

题目27

当不需要函数返回任何值时,则需要使用保留字void作为函数的返回值类型。(对 )

题目28

每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为error。(错)

题目29

十进制数25表示成符合C语言规则的八进制数为31。(错)

题目30

十进制数25表示成符合C语言规则的十六进制数为0x19。(对 )

题目31

在C语言中,转义字符'n'表示一个换行符。(对 )

题目32

执行“printf("%c",'F'-2);”语句后得到的输出结果为H。(错)

题目33

已知字符'C'的ASCII码为67,当执行“int x='C'+5;”语句后x的值为72。(对 )

题目34

假定一个枚举类型的定义为“enum RB{ab,ac=3,ad,ae}x=ad;”,则x的值为2。(错)

题目35

float的类型长度为8。(错)

题目36

在C语言中,常数28和3.26具有相同的数据类型。(错)

题目37

若需要定义一个符号常量,并且使C语言能够进行类型检查,则应在定义语句的开始使用保留字const。(对 )

题目38

使用const语句定义一个符号常量时,不必对它进行初始化。(错)

题目39

表达式45%13的值为3。(错)

题目40

假定x=5,则表达式2*x++的值为12。(错)

题目41

表达式(float)25/4的值为6。(错)

题目42

表达式x=x+1表示成增量表达式为++x。(对 )

题目43

关系表达式(x!=0)的等价表达式为(x)。 (对 )

题目44

关系表达式x+y>5的相反表达式为x+y<=5。(对 )

题目45

逻辑表达式(a>b || b==5)的相反表达式为(a>b && b==5)。(错)

题目46

若x=5,y=10,则x>y逻辑值为真。(错)

题目47

假定x=5,则执行“a=(x?10:20);”语句后a的值为10。 (对 )

题目48

带有随机函数的表达式rand()%20的值所在的区间范围是0~19。(对 )

题目49

假定x=5,则执行“y=x++;”语句后,x的值为5。(错)

题目50

假定x=5,则执行“y=++x;”语句后,y的值为6。(对 )

C语言形考二

标记题目

信息文本

一、选择题(共20分,每小题2分)

1、当处理特定问题时的循环次数已知时,通常采用的语句是( for )。

2、在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是( if )。

3、for语句能够被改写成的语句是( while )。

4、下面循环语句执行结束后输出的i值为( n/2+1 )。

for(int i=0; in/2) {cout<

5、在下面循环语句中,内层循环体S语句的执行总次数为( n(n+1)/2 )。

for(int i=0; i

for(int j=i; j

题目6

在下面的do循环语句中,其循环体被执行的次数为( 3 )。

int i=0; do i++; while(i*i<10);

题目7

在下面的一维数组定义中,有语法错误的选项是( int a[]; )。

题目8

在下面的二维数组定义中,语法正确的选项是( int a[][3]={{1,3,5},{2}}; )。

题目9

假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][1]的值为( 8 )。

题目10

假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( 0)。

二、判断题(共20分,每小题1分。叙述正确则回答“是”,否则回答“否”)

题目11

在执行“typedefintDataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。(对)

题目12

在switch语句中,每个case和冒号之间的表达式只能是常量。(对)

题目13

为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句。(对)

题目14

在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置。(错)

题目15

在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口。(错)

题目16

假定一维数组的定义为“char* a[8];”,则该数组所含元素的个数大于8。(错)

题目17

假定二维数组的定义为“int a[3][5];”,则该数组所占存储空间的字节数为60。(对)

题目18

假定二维数组的定义为“char a[M][N];”,则该数组所含元素的个数为M+N。(错)

题目19

假定二维数组的定义为“double a[M][N];”,则每个数组元素的行下标取值范围在0~M-1之间。

选择一项:(对)

题目20

假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在0~N之间。

选择一项:(错)

题目21

存储一个空字符串需要占用0个字节的存储空间。(错)

题目22

使用“typedef char BB[10][50];”语句定义标识符BB为含有10行50列的二维字符数组类型。

选择一项:(对)

题目23

存储字符'a'需要占用1个字节的存储空间。(对)

题目24

空字符串的长度为1。(错)

题目25

字符串"a:xxk数据"的长度为13。(错)

题目26

为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1。(对)

题目27

strcmp函数用于进行两个字符串之间的比较。(对)

题目28

strcpy函数用于把一个字符串拷贝到另一个字符数组空间中。(对)

题目29

一个二维字符数组a[10][20]能够最多存储9个字符串。(错)

题目30

一个二维字符数组a[10][20]能够存储的每个字符串的长度不超过20。(错)

三、填空题:写出下列每个程序运行后的输出结果(共40分,每小题4分)

题目31

#include

void main()

{

int x=5;

switch(2*x-3) {

case 4: printf("%d ",x);

case 7: printf("%d ",2*x+1);

case 10: printf("%d ",3*x-1); break;

default: printf("%s","defaultn");

}

}

11 14

题目32

#include

void main() {

inti,s=0;

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

printf("s=%dn",s);

}

答案:题目33

s=55

#include

void main() {

int i, s1=0, s2=0;

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

if(i%2) s1+=i; else s2+=i;

printf("%d %dn",s1,s2);

}

答案:题目34

25 20

#include

void main() {

int n=6,y=1;

while(n) y*=n--;

printf("y=%dn",y);

}

答案:题目35

y=720

#include

constint M=20;

void main()

{

int i,c2,c3,c5;

c2=c3=c5=0;

for(i=1; i<=M; i++) {

if(i%2==0) c2++;

if(i%3==0) c3++;

if(i%5==0) c5++;

}

printf("%d %d %dn",c2,c3,c5);

}

答案:题目36

10 6 4

#include

void main()

{

inti,s;

for(i=1,s=0;i<10;i++) {

if(i%3==0) continue;

s+=i;

}

printf("%dn",s);

}

答案:题目37

27

#include

void main() {

int a[8]={12,39,26,41,55,63,72,40};

int i, i1=0, i2=0;

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

if(a[i]%2==1) i1++; else i2++;

printf("%d %dn",i1,i2);

}

答案:题目38

4 4

#include

int a[10]={4,5,6,15,20,13,12,7,8,9};

void main()

{

inti,s[4]=0;

for(i=0; i<10; i++) {

switch(a[i]%4) {

case 0: s[0]+=a[i];break;

case 1: s[1]+=a[i];break;

case 2: s[2]+=a[i];break;

default: s[3]+=a[i];break;

}

}

for(i=0; i<4; i++) printf("%d ",s[i]);

}

答案:题目39

44 27 6 22

#include

void main() {

char a[]="abcdbfbgacd";

int i1=0, i2=0, i=0;

while(a[i]) {

if(a[i]=='a') i1++;

if(a[i]=='b') i2++;

i++;

}

printf("%d %d %dn",i1,i2,i);

}

答案:题目40

2 3 11

#include

void main() {

int a[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}};

int m=a[0][0];

inti,j;

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

for(j=0; j<4; j++)

if(a[i][j]>m) m=a[i][j];

printf("%dn",m);

}

答案:12

四、简答题:根据下列每个题目要求编写程序(共20分,每小题4分)

题干

编写一个函数,函数头格式为“double Mean(double a[M][N],intm,int n)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程中采用变量v存放平均值。

double Mean(double a[M][N],int m,int n)

{

int i,j;

double v=0.0;

for(i=0; i

for(j=0; j

v/=m*n;

return v;

}

反馈

double Mean(double a[M][N],intm,int n)

{

inti,j;

double v=0.0;

for(i=0; i

for(j=0; j

v/=m*n;

return v;

}

题目42

编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。

#include

int FF(int a[] , int n){

int mul=1;

if(n==1)mul*=a[0];

else mul=a[n-1]*FF(a,n-1);

return mul;

}

/*void main()

{

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

printf("%dn",FF(a,6));

}*/

反馈

int FF(int a[], int n)

{

if(n==1) return a[n-1];

else return a[n-1]*FF(a,n-1);

}

题目43

编写一个主函数,利用while循环,求出并显示满足不等式的最小n值。

#include

void main()

{

int i=0; double s=0; //或int i=1; double s=1;

while(s<5) s+=(double)1/++i;

printf("n=%dn",i);

}

反馈

#include

void main()

{

int i=0; double s=0; //或int i=1; double s=1;

while(s<5) s+=(double)1/++i;

printf("n=%dn",i);

}

题目44

编写一个主函数,求出满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。

#include

void main()

{

int i=0; //用i作为依次取值偶数的变量

int s=0; //用s作为累加变量

do {

i+=2;

s+=i*i;

}while(s<1000);

printf("n=%dn",i-2);

}

反馈

#include

void main()

{

int i=0; //用i作为依次取值偶数的变量

int s=0; //用s作为累加变量

do {

i+=2;

s+=i*i;

}while(s<1000);

printf("n=%dn",i-2);

}

题目45

编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入。

#include

void main()

{

int i; //用i作为计数(循环)变量

int s=0; //用s作为累加变量

int n;

printf("输入一个自然数: ");

scanf("%d",&n);

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

printf("s=%dn",s);

}

反馈

#include

void main()

{

int i; //用i作为计数(循环)变量

int s=0; //用s作为累加变量

int n;

printf("输入一个自然数: ");

scanf("%d",&n);

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

printf("s=%dn",s);

}

C语言形考三

标记题目

信息文本

一、选择题(共30分,每小题2分)

题目1

在下面的函数声明语句中,存在着语法错误的是( AA(int a; int b) )。

题目2

在下面的保留字中,不能作为函数的返回值类型的是( enum )。

题目3

假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为( 4 )。

题目4

假定a为一个数组名,在下面的表达式中,存在语法错误的是( *a++ )。

题目5

用calloc函数创建具有10个整型元素的一维数组的正确语句是( int *p=calloc(10,4); )。

题目6

假定变量m定义为“int m=7;”,则下面正确的语句为( int *p=&m; )。

题目7

假定k是一个double类型的变量,则定义变量p的正确语句为( char *p="Thank you!"; )。

题目8

若有语句为“int a[10], x, *pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为( x=*pa+3; )。

题目9

假定有语句为“int b[10]; int *pb;”,则下面不正确的赋值语句为( pb=b[5]; )。

题目10

已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为( free(p); )。

题目11

在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的( 原型语句 )。

题目12

假定一个函数定义为“static int f1(intx,int y){return x+y;}”,该函数名称为( f1 )。

题目13

假定一个函数的原型语句为“intff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是( ff(a[0]) )。

题目14

假定一个函数的数组参数说明为char a[],与之等价的指针参数说明为( char* a )。1B

题目15

假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明

为( char (*w)[N] )。

二、判断题(共30分,每小题2分。叙述正确则回答“是”,否则回答“否”)

题目16

在C语言中,一个函数由函数头和函数体组成。(对)

题目17

在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。(对)

题目18

如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。(错)

题目19

如果在一个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。(对)

题目20

调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。

选择一项:(对)

题目21

函数形参变量不属于局部变量。(错)

题目22

假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为46。(错)

题目23

假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。(错)

题目24

假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。(对)

题目25

假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i字节。(对)

题目26

若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。(对)

题目27

假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。(错)

题目28

假定x为一个简单变量,则&x表示x的地址。(对)

题目29

若p指向x,则*p与x的值不同。(错)

题目30

正确

NULL是一个符号常量,通常作为空指针值,它代表的值为0。(对)

三、写出下列每个程序运行后的输出结果(共20分,每小题4分)

题目31

#include

int WF(int x, int y) {

x=x+y;

y=x+y;

returnx+y;

}

void main() {

int x=5, y=7;

int z=WF(x,y);

printf("z=%dn",z);

}

z=31

反馈

z=31

题目32

#include

#include

void fun(char ss[]);

void main( ) {

char s[15]="";

fun(s);

printf("%sn",s);

}

void fun(char ss[]) {

int i, n=strlen(ss) ;

for(i=0; i

char c=ss[i];

ss[i]=ss[n-1-i];

ss[n-1-i]=c;

}

}

9876543210

反馈

9876543210

题目33

#include

int Count(int a[], int n, int x)

{

inti,c=0;

for(i=0;i

if(a[i]>x) c++;

return c;

}

void main() {

int a[8]={20,15,32,47,24,36,28,70};

int b=Count(a,8,30);

printf("b=%dn",b);

}

b=4

反馈

B=4

题目34

#include

void main() {

int a[8]={3,5,7,9,2,3,4,8};

int s=0,*p;

for(p=a;p

printf("s=%dn",s);

}

s=41

反馈

s=41

题目35

#include


本文标签: 语句 函数 定义 文件 使用