c语言题库及详解答案(c语言题库及答案免费)

http://www.itjxue.com  2023-03-18 19:47  来源:未知  点击次数: 

计算机二级C语言选择题及答案(2)

}

printf("%d\n",num);

}

程序执行后的输m结果是()。

A.35

B.37

C.39

D.3975

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

main()

{char st[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st).sizeof(st));

}

A.9 9

B.5 20

C.13 20

D.20 20

33.若有以下的定义:‘int t[3][2];”,能正确表示t数组元素地址的表达式是()。

A.t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

34.函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是()。

A.文件开始

B.文件末尾

C.文件当前位置

D.以上都不对

35.下述程序的输出结果是()。

#include

main()

{ int i;

for(i=l;i=10;i++)

{if(i*i=20)(i*i=100))

break;

}

printf("%d\n",i*i);

}

A.49

B.36

C.25

D.64

36.若有定义“int b[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值

B.数组元素b[6]的地址

C.数组元素b[7]的地址

D.数组元素b[o]的值加上6

37.设变量已正确定义,则以下能正确计算f=n!的程序是()。

A.f=0:

for(i=1;i=n;i++)f*=i:

B.F=1:

for(i=l;i2n;i++)f*=i:

C.f=l:

for(i=n;i1;i++)f*=i:

D.f=1;

for(i=n;i=2;i--)f*=i:

38.下述程序执行的输出结果是()。

#include

main()

{ char a[2][4];

strcpy(a,"are");strcpy(a[1],"you");

a[0][3]=’’;

printf("%s\n",a):

}

A.areyou

B.you

C.are

D.

39.设x=011050,则x=x01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

40.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

【答案与解析】

1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。

2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。

4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用GOT0语句。其他三项为结构化程序设计的原则。

5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

6.C。【解析】面对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。

8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。

9.A。【解析】①对软,牛开发的进度和费用估计不准确:②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普能及深入的趋势。

10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统fDBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。

12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

13.D。【解析】本题考查逻辑运算符的使用。当“”的两个运算对象都是逻辑1时,表达式返回值才是1;“||” 的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x14.C。【解析】第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

15.C。【解析】函数fun(int x,int y)的功能是返回x+y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此,逗号表达式“a++,b++,aq b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

16.D。【解析】在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表达式的值为3,因为x,y为double型变量,故选择D选项。

17.A。【解析】当x为1时,执行case 1,a自加等于1,因为case 1后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。

18.D。【解析】本题考梦自增运算符“++”、逻辑与运算符“”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或(||)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

19.A。【解析】本题考查switch语句。当i一1时,执行case 1,因为没有遇到break语句,所以依次往下运行,“a=a+ 2=2,a=a+3=5”;当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3= 10”;当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

21.A。【解析】循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。

22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k 自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

23.A。【解析】通过地址来引用数组元素的方法有下列5种:

(1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+i);(4)* (a[i][j]);(5)(aE0][0]q-3*i+j)。故A正确。

24.C。【解析】选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。

25.D。【解析】由题目ee线性链表的定义可知,要将q 和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r- next=q,这时r指向的节点为q;p-next r,这时p指向的节点为r;q-next=r-next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

26.B。【解析】在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

27.C。【解析】子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2) 的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.O。

28.C。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为

fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)

=10+9++8++7++fun(6)=10+9++8+7+6+fun (6)

=10+9++8+7+6+5+fun(4)

=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)

=10+9++8+7+6+5+4+3+2+fun(1)

=10+9++8+7+6+5+4+3+2=55

C语言编程题,求答案+解释,谢谢大佬

(1)这个位置,因为在主函数之外,只有一行。一般来说是#include了其他的库,或者是#define了一些什么,或者是前向声明(但鉴于题目里扫视了一眼只有一个非主函数,所以不会是这个)。那我最大的倾向就是#include,接着我会直接看主函数

先学会看变量,可以看到题目里有三个变量X,Y1,Y2。和我们设置的变量不谋而合,接下来输入X的值,直接就可以算Y1,Y2。因为刚刚记得只看到了一个外函数,而且下面两个空是在形参上让我们填空,我就回头看了一眼题目,原来是函数的形式完全相同,只是改变了传进去的参数,第一个直接传x+8,第二个要传sinx,那两个答案就出来了,同时(1)的答案也出来了,因为sin()这个函数是在#includemath.h里面的

接着剩下最后一个空,我们看到被调函数fun里面,这是一个返回类型float的函数,但是没有返回值,所以我们需要return 一些什么,很明显这里只有一个能return的,那就是y

综上

(1)#includemath.h

(2)return y;

(3)x+8

(4)sin(x)

(在我写完之后看到3分钟前下面还有个答案,include用了""。需要说明的是,一般只有使用非库头文件,也就是自定义的头文件时,会选择"",这并不是一个好习惯,会不会引发报错可以自己尝试一下)

求一份大一c语言考试试卷,加答案

附件上传失败...

C语言期末考试题及答案(1)

1、构成C语言的基本单位是___B____。

过程?

函数?

语句?

命令?

2、设x为整型变量,不能正确表达数学关系:5x10的c语言表达式是__B___。

5

x5x10?

x==6||x==7||x==8||x==9?

!(x=5)(x10)?

3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。

、||、!?

||、、!?

、!、||?

!、、||?

4、下面语句中,正确的是__D___。

printf("%c\n","student");?

printf("%c\n","c");?

printf("%s\n",a);?

printf("%s\n","hello");?

5、对于for(表达式1;;表达式3)可以理解为__B___。

for(表达式1;0;表达式3)?

for(表达式1;1;表达式3)?

for(表达式1;表达式1;表达式3)?

for(表达式1;表达式3;表达式3)?

6、执行下面程序段的结果是__B___。 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",a,b); }

a=1,b=1?

a=2,b=1?

a=1,b=0?

a=2,b=2?

7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x);

打印出321?

打印出23?

不打印任何结果?

陷入死循环?

8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(xy) if(yz)x=y; else z=y;

7?

6?

5?

4?

9、如果一个函数被说明为static,那么__B___。

该函数只能被main函数调用?

该函数能被当前文件的函数调用,但不能被其他文件的函数调用?

该函数不能被当前文件的函数调用,可以被其他文件的函数调用?

任何文件的函数都可以调用该函数?

10、下面关于局部变量的描述中,错误的是__D___。

函数的局部变量的有效范围只能在本函数?

函数的形式参数也是局部变量?

局部变量的名称不能和函数同名称?

不同的函数中不能定义相同名称的局部变量?

11、下列初始化字符数组的语句中,错误的是__A___。

char str[5]="hello";?

char str[]={'h','e','l','l','o','\0'};?

char str[5]={"hi"};?

char str[100]="";?

12、引用数组元素时,数组下标可以是__D___。

整型常量?

整型变量?

整型表达式?

以上均可?

13、 已知:char str[10],*p=str; 下面的语句中正确的是__B___。

str="ABC";?

p="ABC";?

*str="ABC";?

*p="ABC";?

14、下面语句中,错误的是___D__。

int i;int *p;p=i;?

int i,*p;p=a;?

int i,*p=a;?

int i,*p;*p=i;?

15、下面对于结构体类型的描述正确的是__A___。

结构体类型的大小为各成员变量所占内存的总和?

结构体类型变量与简单数据类型变量的引用规则一致。?

结构体类型的大小为其成员中所占内存空间最大的变量的大小?

结构体类型的大小为其最后一个成员中所占内存空间的大小?

16、C语言规定:在一个源程序中,main函数的位置____C____。

必须在最开始?

必须在系统调用的库函数的后面?

可以任意?

必须在最后?

17、表达式18/4*sqrt(4.0)/8值的数据类型是 ___C____。

int?

float?

double?

不确定?

18、在c语言中,char型数据在内存中的存储形式是 ___D___。

补码?

反码?

原码?

ASCII码?

19、阅读以下程序,当输入的数据形式为:25,13,10CR时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",x,y,z); printf("x+y+z=%d\n",x+y+z); }

x+y+z=48?

x+y+z=35?

x+z=35?

不能确定?

20、有如下程序 void main() { float x=2.0,y; if(x0.0) y=0.0; else if(x10.0) y=1.0/x; else y=1.0; printf(“%f\n”,y); } 该程序的输出结果是( C )。

0.000000?

0.250000?

0.500000?

1.000000?

21、判断char型变量s是否为小写字母的正确表达式是__C____。

'a'=s='z'?

(s='a')(s='z')?

(s='a')(s='z')?

('a'=s)and('z'=s)?

22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y ++z;

0?

1?

2?

不确定值?

23、有如下程序段: int number=0; while(number++=3) printf(“%d\n”,number++); 则正确的执行结果是___C___。

2 3 4?

0 1 2?

1 3?

2 4?

24、有如下程序 void main() { int n=9; while(n6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。

987?

876?

8765?

9876?

25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i=___B___;printf("%d\n",i+=2));

15?

18?

20?

10?

26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。

fun(“abc”,3)?

t=fun(‘D’,5)?

fun(‘ab’,3)?

fun(‘78’,1)?

27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。

s=s+n;return s;?

s=s+i;return s;?

return s;?

return s+=I;?

28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;in;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(a[2],2)); } 则程序的运行结果为___C___。

3?

5?

7?

9?

29、若有说明:int a[10];则对数组元素的正确引用是___D____。

a[10]?

a[3,5]?

a(5)?

a[10-10]?

30、以下不正确的定义语句是___B___。

double x[5]={2.0,4,0,6,0,8,0,10.0};?

int y[5]={0,1,3,5,7,9};?

char c1[]={'1','2','3','4','5'};?

char c2[]={'\x10','\xa','\x8'};?

31、下面程序的运行结果是___B____。 #include "stdio.h" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c

SWA?

SW*?

SW*A?

SW?

32、以下能正确进行字符串赋值操作的是___D___。

char s[5]={"12345"};?

char s[5]={'1','2','3','4','5',‘6’};?

char *s;*s="12345";?

char *s="12345";?

33、以下程序段的运行结果是___C___。 Char a[ ]="program", *p; p=a; while (*p!='g') { printf("%c", *p-32); p++; }

PROgram?

PROGRAM?

PRO?

proGRAM?

34、若有说明:char *pc[ ]={"aaa", "bbb", "ccc", "ddd"};,则以下叙述正确的是__C____。

*pc[0]代表的是字符串"aaa"的首地址?

*pc[0]代表的是字符'a'的首地址?

pc[0]代表的是字符串"aaa"的首地址?

pc[0]代表的是字符'a'的首地址?

35、下列程序的运行结果是___B___。 #include stdio.h #include string.h void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s

GAGGAGA?

AGAAGAG?

GFEDCBA?

AGADAGA?

36、定义如下的结构体描述同学信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假设此同学的序号为1002,姓名为黎明,班级为冶金3班,则描述正确的为___C__。

id=1002; name=黎明; class=冶金3班;?

id=1002; name=”黎明”; class=”冶金3班”;?

s.id=1002; s.name=”黎明”; s.class=”冶金3班”;?

s.id=1002; s.name=黎明; s.class=冶金3班;?

37、用来描述C程序中注释的是__C___。

//?

?

**?

38、下列变量中合法的定义是__A___。

short _a=2-1?

long if=0xabcL?

double 1_d=1.5e2?

float a=1.5e2.7?

39、当c的值不为0时,能够将c的值赋给变量a和b的是__C___

c=b=a?

(a=c)||(b=c)?

(a=c)(b=c)?

a=c=b?

40、设有以下程序段,执行后的输出结果是___B__ int x=100,y=200; printf("%d",(x,y));

100?

200?

100,200?

编译出错

C语言期末考试题及答案(2)

1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a; scanf(“%d”,a); if(a++10) printf(“%d\n”,++a); else printf("%d\n",a--); }

12?

11?

10?

9?

2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);

打印出321?

打印出23?

不打印任何结果?

陷入死循环?

3、执行与句:for(n=0;n++4; ); 后,变量n的值是__C__。

3?

4?

5?

不定?

4、以下关于循环的描述中,错误的是__D___。

可以用for语句实现的循环一定可以用while语句实现?

可以用while语句实现的循环一定可以用for语句实现?

可以用do…while语句实现的循环一定可以用while语句实现?

do…while语句与while语句的区别仅仅是关键字while的位置不同?

5、下面的描述错误的是__C__。

函数可以有多个形式参数?

函数可以没有返回值?

函数内可以嵌套定义函数?

函数可以被其他函数调用?

6、函数返回值的类型是由__A__决定的。

定义函数时指定的返回类型?

函数中return语句的表达式类型?

主调函数的实际参数类型?

主调函数的返回值类型?

7、定义了一维int型数组a[10]后,下面错误的引用是__B__。

a[0]=1;?

a[10]=2;?

a[0]=5*2;?

a[1]=a[2]*a[0];?

8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。

24?

25?

18?

17?

9、下面语句中,错误的是__D__。

int i; int *p; p=i;?

int i,*p; p=a;?

int i,*p=a;?

int i,*p; *p=i;?

10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。

a[1][2]?

a[1]+2?

*a[1]+2?

*(a+1)+2?

11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。

char

char=int

char

char=int=long int=float

12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。

7?

8?

6?

2?

13、若有说明语句:char c='\72';则变量c ___A___。

包含1个字符?

包含2个字符?

包含3个字符?

说明不合法,c的值不确定?

14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。

scanf("%d%lx,%le",x,y,z);?

scanf("%2d * %d%lf",x,y,z);?

scanf("%x%*d%o",x,y,z);?

scanf("%x%o%6.2f",x,y,z);?

15、若输入字符串:abcde回车,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("*");

1次?

死循环?

0次?

5次?

16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n);

3?

63?

36?

2?

17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a=0);

10?

3?

5?

4?

18、下面程序段的运行结果是__D____。 x=2; do{printf("*");x--;}while(!x==0);

*?

***?

没有输出?

**?

19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i=10); printf("%d",a);

2?

-2?

3?

0?

20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是___A___。

0?

1?

2?

3?

21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。

fun函数无返回值?

fun函数的返回值可以是任意的数据类型?

fun函数没有形式参数?

void 可以省略?

22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。

s=s+n; return s;?

s=s+i; return s;?

return s;?

return s+=i;?

23、 有以下程序 int f1(int x,int y){return xy?x:y;} int f2(int x,int y){return xy?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___

4,3,7?

3,4,7?

5,2,7?

2,5,7?

24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。

2?

3?

4?

无确定值?

25、判断字符串s1是否大于字符串s2,应当使用___D____。

if(s1s2)?

if(strcmp(s1,s2))?

if(strcmp(s2,s1)0)?

if(strcmp(s1,s2)0)?

26、当运行以下程序时,从键盘输入:AhaMA AhaCR CR表示回车,则下面程序的运行结果是___A____。 #include "stdio.h" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)

ahAMa?

AhAMa?

AhAMa ahA?

ahAMa ahA?

27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, *p=k; a=p!=m; printf("%d\n",a); }

-1?

0?

1?

2?

28、以下能正确读入字符串的程序段是____C___。

char *p;scanf("%s", p);?

char str[10];scanf("%s", str);?

char str[10], *p;p=str; scanf("%s", p);?

char str[10], *p=str;scanf("%s", p[1]);?

29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。

i=x[1][1] ?

i=*(*(x+1))?

i=*(*(x+1)+1)?

i=*(x[1]+1)?

30、下面程序的运行结果是____A___。 # include stdio.h # include string.h fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++z--) { t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a

abdddfg?

afcdebg?

gbedcfa?

gfedcba?

31、用来描述C程序中注释的是__C___

/ /?

?

* *?

32、对于"xy\n\102\\\'"字符串的长度是__B___

7?

6?

12?

13?

33、已知:int x=10;执行语句x-=x+x;后x的值是__A___

-10?

10?

-20?

20?

34、下列描述中,正确的是__A___

所有的输入/输出都是通过调用库函数处理的?

所有的输入/输出都是通过输入/输出语句实现的?

getchar和putchar可以省略#include?

在输入/输出格式中的*表示跳过数据的含义?

35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(xy) if(yz)x=y; else z=y;

7?

6?

5?

4?

36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);

打印出321?

打印出23?

不打印任何结果?

陷入死循环?

37、以下关于switch语句和break语句的描述正确的是__D___

在switch语句中必须使用break语句?

break语句只能用于switch语句体中?

break语句只能用于循环语句中?

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

38、与语句while(!x)等价的语句是__A___

while(x==0)?

while(x!=0)?

while(x!=1)?

while(~x)?

39、下面的描述错误的是__C___

?函数可以有多个形式参数?

?函数可以没有返回值?

?函数内可以嵌套定义函数?

?函数可以被其他函数调用?

40、 下面关于局部变量的描述中,错误的是__D___

?函数的局部变量的有效范围只能在本函数?

?函数的形式参数也是局部变量?

?局部变量的名称不能和函数同名称?

?不同的函数中不能定义相同名称的局部变

有关C语言的几道题,求答案及解释

1、题目倒数第二句改为“输入字符A后”的话,ch的值是'A',getchar()是从标准输入流读取一个字符,并返回这个字符,赋值给了ch,所以ch的值就是你输入的那个字符,你输入A,它的值就是A

2、暂时还不是很明白,C和D都能在win-tc下编译通过,值都存在变量str3,和str4里面,可以通过printf("%s",strX);看,但是没有字符串没有存在指针指向的地址,不懂,指针还待学习……

3、输出为goodgood;

*sp = s表示把s数组的首地址赋予指针sp,

sp = sp + 2让指针sp往前移两个位置,也就是它现在指向了s[2],原来是指向s[0]

sp = “to”我想是把“to”赋予sp,因为sp本身也是个变量,原来存储的是s数组的地址,现在变成了“to”,如果你在后面加上

printf("%s",sp);

你会发现输出的是to,

puts(s)就是输出字符串s;

可以明显发现,后面几条语句根本没有对数组S进行操作,所以输出结果就是s初始化的值

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

目前的认识就这些了

(责任编辑:IT教学网)

更多

推荐excel文章