文档库 最新最全的文档下载
当前位置:文档库 › C语言相关习题2含解析

C语言相关习题2含解析

C语言相关习题2含解析
C语言相关习题2含解析

(1)在深度为5的满二叉树中,叶子结点的个数为

A)32

B)31

C)16

D)15

解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个叶子结点。这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。

(2)若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是

A)bdgcefha

B)gdbecfha

C)bdgaechf

D)gdbehfca

解析:前序遍历的第一个结点a为树的根结点;中序遍历中a的左边的结点为a的左子树,a 右边的结点为a的右子树;再分别对a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。

(3)一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用

A)栈

B)堆

C)数组

D)链表

解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。

(4)软件工程的理论和技术性研究的内容主要包括软件开发技术和

A)消除软件危机

B)软件工程管理

C)程序设计自动化

D)实现软件可重用

解析:软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。

(5)开发软件时对提高开发人员工作效率至关重要的是

A)操作系统的资源管理功能

B)先进的软件开发工具和环境

C)程序人员的数量

D)计算机的并行处理能力

解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。

(6)在软件测试设计中,软件测试的主要目的是

A)实验性运行软件

B)证明软件正确

C)找出软件中全部错误

D)发现软件错误而执行程序

解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。

(7)数据处理的最小单位是

A)数据

B)数据元素

C)数据项

D)数据结构

解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

(8)索引属于

A)模式

B)内模式

C)外模式

D)概念模式

解析:内模式(Internal Schema)又称物理模式(Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。

(9)下述关于数据库系统的叙述中正确的是

A)数据库系统减少了数据冗余

B)数据库系统避免了一切冗余

C)数据库系统中数据的一致性是指数据类型一致

D)数据库系统比文件系统能管理更多的数据

解析:数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

(10)数据库系统的核心是

A)数据库

B)数据库管理系统

C)模拟模型

D)软件工程

解析:数据库管理系统(Database Management System,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。

(11)C语言规定,在一个源程序中,main函数的位置

A)必须在最开始

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

C)可以任意

D)必须在最后

解析:一个C程序总是从main函数开始执行的,不论main函数在整个过程中的位置如何。

(12)下列数据中,不合法的C语言实型数据的是

A)0.123

B)123e3

C)2.1e3.5

D)789.0

解析:在C语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,e3、2.1e3.5、.e3、e等都是不合法的指数形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必须有数字,且e的后面必须是整数。

(13)下面四个选项中,均是不合法的用户标识符的选项是

A)A P_0 do

B)float la0 _A

C)b-a goto int

D)_123 temp int

解析:C语言规定的标识符只能由字母、数字和下划线三种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a 中′-′不是组成标识符的三种字符之一,选项D)中int是关键字。所以,均是不合法用户标识符的选项是C)。

(14)设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为

A)int

B)float

C)double

D)不确定

解析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。

(15)能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式是

A)a>=10 or a<=0

B)a>=0|a<=10

C)a>=10 &&a<=0

D)a>=10‖a<=0

解析:本题考查C语言的逻辑表达式及逻辑或("||")运算符的用法。"||"表示或的意思,"|"是按位或的意思,"&&"是并且的意思,C语言中没有"or"。

(16)设以下变量均为int类型,表达式的值不为7的是

A)(x=y=6,x+y,x+1)

B)(x=y=6,x+y,y+1)

C)(x=6,x+1,y=6,x+y)

D)(y=6,y+1,x=y,x+1)

解析:本题考查逗号表达式的用法。C语言中逗号","也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1, 表达式2 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n,它的值为表达式n

的值。

(17)若有说明:int *p,m=5,n;以下正确的程序段是

A)p=&n;scanf("%d",&p);

B)p=&n;scanf("%d",*p)

C)scanf("%d",&n);*p=n;

D)p=&n;*p=m;

解析:"&"是求址运算符,"*"是指变量说明符。选项A)、B)应改为scanf("%d",p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险建议不使用。

(18)以下程序段的输出结果是

int a=1234;

printf("%2d\n",a);

A)12

B)34

C)1234

D)提示出错、无结果

解析:在C语言中,对于不同类型的数据用不同的格式字符,其中,"%d"是按整型数据的实际长度输出,"%md"中,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

(19)若变量a是int类型,并执行了语句:a=′A′+1.6;,则正确的叙述是

A)a的值是字符C

B)a的值是浮点型

C)不允许字符型和浮点型相加

D)a的值是字符′A′的ASCII值加上1

解析:字符′A′要转换成相应的ASCⅡ码值,由于运算结果要赋值给int型变量,所以对1.6进行取整运算,最后a的值应是66。

(20)有如下程序

main()

{ int a=2,b=-1,c=2;

if(a

if(b<0)c=0;

else c++;

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

}

该程序的输出结果是

A)0

B)1

C)2

D)3

解析:if语句嵌套使用时,应当注意if 与else的配对关系,else总是与它上面的最近的if配对。因此,本题中先判断(a

(21)有如下程序

main()

{ int x=23;

do

{ printf("%d",x--);}

while(!x);

}

该程序的执行结果是

A)321

B)23

C)不输出任何内容

D)陷入死循环

解析:解答本题,当然先要清楚do...while语句的执行过程:先执行一次指定的循环体语句,本题中执行x--后判断表达式,表达式的值为!x为假,程序结束循环。

(22)执行语句for(i=1;i++<4;); 后变量i 的值是

A)3

B)4

C)5

D)不定

解析:除了考查基本的for循环结构外,本题还考查自加运算的相关知识,但均为基础。注意:for语句中的表达式可以部分或全部省略,但两个";"不能省略。

(23)有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。

#include

main()

{ int i;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if(_______)

printf("%d",i);

}

A)i%9=5

B)i%9!=5

C)(i-5)%9!=0

D)(i-5)%9==0

解析:本题中需要填空的是for循环的第3个条件,即"若分成9个零件一组,则多5个零件",当总零件数零减去5后,并与9取余为0即可满足本题的条件。

(24)已有定义int a=-2;和输出语句printf("%8lx",a);以下正确的叙述是

A)整型变量的输出形式只有%d一种

B)%x是格式符的一种,它可以适用于任何一种类型的数据

C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的

D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度

解析:整型变量的输出形式有:%d,%o,%x,%u等,%x是以十六进制无符号形式输出整数。十六进制数同样也可以想%md一样按%mlx输出指定宽度的长整型数。

(25)若变量c为char类型,能正确判断出c为小写字母的表达式是

A)′a′<=c<=′z′

B)(c>=′a′)||(c<=′z′)

C)(′a′<=c)and(′z′>=c)

D)(c>=′a′)&&(c<=′z′)

解析:字符型数据在计算机内部是以ASCII存储的,英文大写字母和小写字母在ASCII码表中都是连续的,大写字母A到Z是从65到90,小写字母a到z是97到122。所以只要变量c大于a并且小于z就能保证其为小写字母。

(26)以下正确的说法是

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

B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C)系统根本不允许用户重新定义标准库函数

D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用

解析:用户调用标准库函数前不必重新定义,而只需使用预编译命令将该函数所在文件包括到用户源文件中即可。而且,系统允许用户重新独定义标准库函数,但此时该函数将失去原有含义。因此,正确答案为选项B)。调用函数时,必须要注意以下语法:

①函数名必须与所调用的函数名字完全一致;

②实参的个数与形参的个数一致;

③函数必须先定义,后调用。如果被调用的函数的返回值为int型或char型,则被调用函数的定义也可以放在调用的位置之后。

如果在函数调用之前没有对函数作声明,则编译系统会把第一次遇到的该函数形式作为函数的声明,并将函数类型默认为int型。

(27)以下正确的函数头定义形式是

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);

解析:有参函数的定义一般形式是:

类型标识符函数名(形式参数表列)

{声明部分

语句

}

形式参数之间是以逗号","隔开,本题的double fun(int x,int y)语句后没有任何符号。

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

char a[]="lanuage",*p;

p=a;

while(*p!=′u′){printf("%c",*p-32);p++;}

A)LANGUAGE

B)language

C)LAN

D)langUAGE

解析:本段程序的作用是输出字符串"lanuage"中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放′\0′。

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

char str[]="ABC",*p=str;

printf("%d\n",*(p+3));

A)67

B)0

C)字符′C′的地址

D)字符′C′

解析:考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志′\0′的地址,因而*(p+3)的值为0

(30)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

A)EOF

B)-1

C)1

D)NULL

解析:EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回1,否则返回0。

(31)在C语言中,char型数据在内存中的存储形式是

A)补码

B)反码

C)原码

D)ASCII码

解析:在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中去,而是将该字符的相应ASCⅡ码放到存储单元中。

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

A)2

B)3

C)4

D)无确定值

解析:本题考查二维数组的定义方式。第一维的大小由以下方法判断:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;2)当初值的个数不能被第二维的常量表达式的值除尽时,则第一维的大小=所得的商数+1。

(33)以下不正确的定义语句是

A)double x[5]={2.0,4.0,6.0,8.0,10.0};

B)int y[5.3]={0,1,3,5,7,9};

C)char c1[]={′1′, ′2′, ′3′, ′4′, ′5′};

D)char c2[]={′\x10′, ′\xa′, ′\x8′};

解析:在一维数组中要注意的是下标表达式的常量表达式的值必须是大于等于零,并且小于自身元素的个数,既数组长度,选项B)的下标不是整数,所以错误

(34)有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)

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

A)a[p-a]

B)*(&a[i])

C)p[i]

D)*(*(a+i))

解析:本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。

(35)当说明一个结构体变量时系统分配给它的内存是

A)各成员所需内存量的总和

B)结构中第一个成员所需内存量

C)成员中占内存量最大者所需的容量

D)结构中最后一个成员所需内存量

解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元,而共用体变量所占的内存长度等于最长的成员的长度。

(36)有以下程序

fun(int x,int y,int z)

{ z=x*y;}

main()

{int a=4,b=2,c=6;

fun(a,b,c);

printf("%d",c);

}

程序运行后的输出结果是

A)16

B)6

C)8

D)12

解析:本题考查的函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值的改变,即本题中c的值未改变,仍然是6。

(37)函数fun的返回值是

fun(char *a,char *b)

{ int num=0,n=0;

while(*(a+num)!=′\0′)num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

return num;

}

A)字符串a的长度

B)字符串b的长度

C)字符串a和b的长度之差

D)字符串a 和b的长度之和

解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a 和b相连,最后返回连接后的总长度。

(38)以下叙述中不正确的是

A)预处理命令行都必须以#号开始

B)在程序中凡是以#号开始的语句行都是预处理命令行

C)宏替换不占用运行时间,只占编译时间

D)在以下定义是正确的:#define PI 3.1415926;

解析:带参数的宏定义如下:#define 宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替"3.1415926"这个字符串,但宏定义不是C语句,不必在行末加分号。

(39)调用gets和puts函数时,必须包含的头文件是

A)stdio.h

B)stdlib.h

C)define

D)以上都不对

解析:gets函数和puts函数是库函数,必须包含的头文件是stdio.h

(40)利用fseek 函数可以实现的操作是

A)改变文件的位置指针

B)文件的顺序读写

C)文件的随机读写

D)以上答案均正确

解析:用fseek函数可以实现改变文件的位置指针,从而实现对文件的顺序和随机读写。

(41)下列程序的输出结果是

main()

{ int a[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

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

}

A)4

B)22

C)24

D)46

解析:指针变量p指向数组a的首地址,并把指针变量p的地址赋于指向指针的指针变量k。

(42)若有以下结构体,则正确的定义或引用的是

struct Test

{int x;

int y;

} vl;

A)Test.x=10;

B)Test v2;v2.x=10;

C)struct v2;v2.x=10;

D)struct Test v2={10};

解析:此题考查基本的结构体定义和引用方法。选项A)的错误是通过结构体名引用结构体成员,选项B)的错误是将结构体名作为类型名使用,选项C)的错误则将关键字struct作为类型名使用。选项D)是定义变量v2并对其初始化的语句,初始值只有前一部分,这是允许的。

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

char *p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A)8

B)12

C)4

D)7

解析:本题考查两个知识点:strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的′\0′,strcpy函数的功能是把后面的字符串复制到前面字符串所指向的空间。

(44)下面判断正确的是

A)char *a="china";等价于char *a;*a="china";

B)char str[5]={"china"};等价于char str[]={"china"};

C)char *s="china";等价于char *s;s="china";

D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";

解析:选项A)char *a;*a="china"应改为char *a;,选项B)应该是char str[6];D)项表述方法有错误。

(45)下列函数的运行结果是

main()

{ int i=2,p;

int j,k;

j=i;

k=++i;

p=f(j,k);

printf("%d",p);

}

int f(int a,int b)

{ int c;

if(a>b)c=1;

else if(a==b)c=0;

else c=-1;

return(c);

}

A)-1

B)1

C)2

D)编译出错,无法运行

解析:函数调用相当于f(2,3),程序运算应得结果为"-1"。

(46)在位运算中,操作数左移一位,其结果相当于

A)操作数乘以2

B)操作数除以2

C)操作数除以4

D)操作数乘以4

解析:左移运算符"<<"是双目运算符。其功能把"<< "左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。例如:a<<4 指把a的各二进位

向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

(47)若调用fputc函数输出字符成功,则其返回值是

A)EOF

B)1

C)0

D)输出的字符

解析:fputc函数的一般调用形式为fputc(ch,fp),其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字符变量。fp是文件指针变量。函数的作用是将字符(ch的值)输出到fp所指向的文件中去。fputc函数也带回一个值:如果输出成功,则返回值就是输出的字符;如果输出失败,则返回一个EOF(-1)。

(48)已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是

A)一个整型变量,代表要读入的数据项总数

B)一个文件指针,指向要读的文件

C)一个指针,指向要读入数据的存放地址

D)一个存储区,存放要读的数据项

解析:这是一道考查fread函数的题。buf是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址(以上指的是起始地址)。

(49)有如下程序:

#define N 2

#define M N+1

#define NUM 2*M+1

main()

{

int i;

for(i=1;i<=NUM;i++)printf("%d\n",i);

}

该程序中的for循环执行的次数是

A)5

B)6

C)7

D)8

解析:该题目测试考生对宏替换的理解。这是一种简单的情况:不带参数的宏。关键要注意在对2*M+1进行宏替换时,要将宏名M原封不动地代进去,得到NUM的形式为2*N+1+1(千万不要随意给N+1加上小括号,使NUM变为2*(N+1)+1,这就是宏名和变量名之间的区别),在将N代进去,得到NUM的值为6。

(50)以下定义中,标识符prt int(*prt)[3]

A)定义不含法

B)是一个指针数组名,每个元素都是一个指向整数变量的指针

C)是一个指针,它指向一个具有三个元素的一维数组

D)是一个指向整型变量的指针

解析:此题的关键是要分清指针数组与指向一组数组指针之间的不同,题中的说明语句定义了一个指针变量prt,它指向包含三个整数元素的一维组数。应注意:*prt两侧的圆括号不能缺少,如果写成*ptr[3],则p与[3]先结合,是数组,然后再与前面的*号结合,则*ptr[3]将是一个指针数组。

二、填空题本题共得 (0) 分

(1)在树形结构中,树根结点没有【1】。

考生答案: 1.()

正确答案: 1.(前件)

(2)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【2】的设计方法。

考生答案: 1.()

正确答案: 1.(数据结构)

(3)面向对象的模型中,最基本的概念是对象和【3】。

考生答案: 1.()

正确答案: 1.(类)

(4)软件设计模块化的目的是【4】。

考生答案: 1.()

正确答案: 1.(降低复杂性)

(5)数据模型按不同应用层次分成3种类型,它们是概念数据模型、【5】和物理数据模型。

考生答案: 1.()

正确答案: 1.(逻辑数据模型)

(6)以下程序段的输出结果是【6】。

main ()

{int a=2,b=3,c=4;

a*=16+(b++)-(++c);

printf("%d",a);

}

考生答案: 1.()

正确答案: 1.(28)

(7)若变量n中的值为24,则print()函数共输出【7】行,最后一行有【8】个数。

void print (int n,int aa[])

{int i;

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

{printf ("%6d", aa[i]);

if(!(i%5)) printf ("\n");

}

printf ("\n");

考生答案: 1.()2.()

正确答案: 1.(5) 2.(4)

(8)调用C语标准库函数时要求用【9】命令。

考生答案: 1.()

正确答案: 1.(include)

(9)stract函数的作用是【10】。

考生答案: 1.()

正确答案: 1.(连接两个字符数组中的字符)

(10)C语言程序的注释可以出现在程序中的任何地方,一个注释以【11】作为开始和结束。考生答案: 1.()

正确答案: 1.(/* */)

(11)设二进制数A是00101101,若想通过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是

【12】。

考生答案: 1.()

正确答案: 1.(11110000)

(12)若已知a=10,b=20,则表达式!a

考生答案: 1.()

正确答案: 1.(1)

(13)设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【14】。

for(i=0, j=10; i<=j; i++, j--)k=i+j;

考生答案: 1.()

正确答案: 1.(10)

(14)下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include

#include

void fun(int a[],int n, int *max, int *d)

{ int i;

*max=a[0];

*d=0;

for(i=0;【15】;i++)

if(*max<【16】)

{*max=a[i];*d=i;}

}

main()

{ int i, x[20], max, index, n=10;

randomize();

for(i=0;i

{

x[i]=rand()%50; printf("%4d",x[i]);

}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);

}

考生答案: 1.()2.()

正确答案: 1.(i

(15)以下程序的输出结果是【17】。

void fun()

{ static int a=0;

a+=2; printf("%d",a);

}

main()

{ int cc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

考生答案: 1.()

正确答案: 1.(2 4 6)

(16)以下程序的输出结果是【18】。

#define MAX(x,y)(x)>(y)?(x):(y)

main()

{ int a=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

考生答案: 1.()

正确答案: 1.(7)

(17)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。

st=(char*)【19】 ;

考生答案: 1.()

正确答案: 1.(malloc(11)或malloc(sizeof(char)*11))

(18)以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE *myf; long f1;

myf=【20】("test.t","rb");

fseek(myf,0,SEEK_END); f1=ftell(myf);

fclose(myf);

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

考生答案: 1.()

正确答案: 1.(fopen)

上机题目

请补充函数fun(),该函数的功能是:分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。例如,输入aeiouAOUpqrt,结果为A:2 E:1 I:1 O:2 U:2 other:4。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:

#include

#include

#define N 100

void fun(char *str,int bb[])

{

char *p=str;

int i=0;

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

【1】;

while(*p)

{

switch(*p)

{

case 'A':

case 'a':bb[0]++;break;

case 'E':

case 'e':bb[1]++;break;

case 'I':

case 'i':bb[2]++;break;

case 'O':

case 'o':bb[3]++;break;

case 'U':

case 'u':bb[4]++;break;

default:【2】;

}

【3】

}

}

main()

{

char str[N],ss[6]="AEIOU";

int i;

int bb[6];

clrscr();

printf("Input a string: \n");

gets(str);

printf("the string is: \n");

puts(str);

fun(str,bb);

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

printf("\n%c:%d",ss[i],bb[i]);

printf("\nother:%d",bb[i]);

}

下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

int fun(int k)

{

int m=0,mc=0, j;

/**********************found***********************/

while(k>=2)&&(mc<6)

{

/**********************found***********************/

if((k%7=0)||(k%11=0))

{

/**********************found***********************/

m=k;

mc++;

}

k--;

}

return m;

}

main()

{

clrscr();

printf("%d\n ",fun(500));

}

3. 编程题

请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。

例如,若输入ABC4efG,则应输出aBc4efg。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

void fun(char *ss)

{

}

main()

{

char tt[81];

clrscr();

printf("\nPlease enter an string within 80 characters:\n");

gets(tt);

printf("\n\nAfter changing, the string\n \%s",tt);

fun(tt);

printf("\nbecomes\n \%s\n",tt);

}

解析

c语言复习题(有答案)●

思考题 不仅要会做这些题,更重要的是要掌握其相关知识点一、一般填空题 1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中. 1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\1011234\\at”的长度(字符数)是【1】. 2-2、字符串“abc\103\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\t\x43\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\71“在内存中占【1】个字节. 2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】. 3-2、表达式‘B’+15+‘\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\x42’+011+0x10的值是【1】. 答案:3;171;194; 4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】. 4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】. 答案:8;a==0;8; 5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\n”); 5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】. 5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\n”,++a);} 答案:OK;’\0’;1;10 6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 . 二、单项选择题 1-1、若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。 A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确 1-2、若执行fopen函数时发生错误,则函数的返回值是()。

c语言编程例题与答案解析

实验报告三 (四学时) 2.1 实验目的 (1)掌握函数的定义和调用; (2)了解函数间的参数传送; 2.2 基础实验 【题目3-1】编写函数实现将输入的字母转换成大写字母(若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母”)。 算法分析: 1、输入:通过键盘接收一个字符; 2、条件判断:调用判别函数 3、函数功能为:蒋所输入字符进行判别处理,若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母” 4、程序结束。 【实验3-1】代码及运行结果:

【题目3-2】从键盘输入若干个同学计算机课程期末考试成绩(学生人数可由用户输入),求该课程的期末成绩的平均分并输出。 函数功能要求:实现若干(例如5名)同学的的期末成绩输入,并统计出平均分。 算法分析: 1、输入:通过键盘接收同学个数; 2、调用求平均分函数 3、输出平均成绩 4、程序结束。

【实验3-2】代码及运行结果:

【题目3-3】请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。 算法分析: 1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0 2、编写主函数,用一重循环遍历100以内所有数据 2.1、通过素数判别函数对循环的数据进行是否为素数的判别 2.2、返回判别为真的整数,并输出 3、程序结束。 【实验3-3】代码及运行结果: #include #include int Prime(int x) { int i ; if(x<=1) return 0; for(i=2;i<=x-1;i++) { if(x%i==0) { return 0;

C语言练习题附解析

C语言练习题 例1.已知圆柱体的底半径为radius ,高为high ,求其体积。 #include main() { float radius,high,vol,pi=3.1415926; printf("Please input radius & high: "); scanf("%f%f",&radius,&high); /* 从键盘输入两个实数赋给变量r,h*/ vol=pi*radius*radius*high; printf("radius=%7.2f, high=%7.2f, vol=%7.2f\n",radius,high,vol); } 程序运行结果如下: Please input radius & high: 2.5 □ 2.0 8 radius= □□□ 2.50,high= □□□ 2.00,vol= □□ 39.27 /* 例2 试编写求梯形面积的程序,数据由键盘输入。 分析:设梯形上底为A,下底为B,高为H面职为S,则S=(A+B)*H÷2 */ #include void main() { float a,b,h,s; printf("please input a,b,h:"); scanf("%f%f%f",&a,&b,&h); s=0.5*(a+b)*h; printf("a=%6.3f b=%6.3f h=%6.3f\n",a,b,h); printf("s=%8.4f\n",s); } /*例3-1 输入一组学生成绩,评定其等级。方法是:90~100分为"A",80~89分为"B",70~79分为"C",60~69分为"D",60分以下为"E"。 使用if语句实现的程序段如下:*/ #include void main() { int x; scanf("%d",&x); if (x>=90) printf("A"); else if (x>=80) printf("B"); else if (x>=70) printf("C"); else if (x>=60) printf("D"); else printf("E");

C语言函数习题及答案

第6章函数习题 一、选择题 1. 一个完整的C源程序是【】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【】。 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 5. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【】 A)float B)long C)int D)double 6. 以下关于函数叙述中,错误的是【】。 A)函数未被调用时,系统将不为形参分配内存单元 B)实参与形参的个数应相等,且实参与形参的类型必须对应一致 C)当形参是变量时,实参可以是常量、变量或表达式 D)形参可以是常量、变量或表达式 7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是 【】。 A)参数的形实(哑实)结合 B)函数返回值 C)全局变量 D)同名的局部变量 8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。 A)实参与其对应的形参共占存储单元 B)只有当实参与其对应的形参同名时才共占存储单元 C)实参与对应的形参分别占用不同的存储单元

C语言练习题集(带答案解析)

精品文档 1. ( A )是构成C 语言程序的基本单位。 A 、函数 B 、过程 C 、子程序 D 、子例程 2. C 语言程序从 ____ C ________ 开始执行。 A ) 程序中第一条可执行语句 B )程序中第一个函数 C )程序中的main 函数 D )包含文件中的第一个函数 3、以下说法中正确的是( C )。 A 、 C 语言程序总是从第一个定义的函数开始执行 B 、 在 C 语言程序中,要调用的函数必须在 main ()函数中定义 C 、 C 语言程序总是从 main ()函数开始执行 D 、 C 语言程序中的 main ()函数必须放在程序的开始部分 4. 下列关于C 语言 的说法错误的是( B ) 。 A ) C 程序的工作过程是编辑、编译、连接、运行 B ) C 语言不区分大小写。 C ) C 程序的三种基本结构是顺序、选择、循环 D ) C 程序从main 函数开始执行 5. 下列正确的标识符是(C )。 A. -a1 B.a[i] C.a2_i 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

C语言综合习题及答案

C语言综合习题及答案 Prepared on 24 November 2020

C语言练习题 一、选择题 1. 一个完整的C源程序是【B 】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【C】。 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【B】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【B 】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 程序的执行是从【A 】开始的。 A)主函数 B)子函数 C)从程序第一行 D)printf()函数 6.以下选项中不合法的标识符是【C 】 A)print B)FOR C)&a D)_00 7.以下选项中可作为C语言合法常量的是【A】 A)-80 B)-080 C) D) 8.以下选项中不属于字符常量的是【B】 A)′C′ B)"C" C)′\xCC′ D) ′\072′ 9. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【C】

c语言习题及答案

第一章1.1 题目内容: 使用printf()在屏幕上输出hello world! 提示: #include int main() { printf("hello world!\n"); return 0; } 输入格式: 无 输出格式: 输出提示信息:"hello world!\n" 输入样例: 输出样例: hello world! #include int main() { printf("hello world!\n"); return 0; } 1.2 在屏幕上输出多行信息(3分) 题目内容: 使用printf()函数在屏幕上输出以下多行信息: hello world! hello hit! hello everyone! 提示: 在printf()函数中转义字符‘\n’表示换行。

输入格式: 输出格式: 输出提示信息: "hello world!\n" "hello hit!\n" "hello everyone!\n" 输入样例: 输出样例: hello world! hello hit! hello everyone! #include int main() { printf("hello world!\n"); printf("hello hit!\n"); printf("hello everyone!\n"); return 0; } 1.3 计算半圆弧的周长及半圆面积(3分) 题目内容: 编程并输出半径r=5.3的半圆弧的周长及该半圆的面积,的取值为3.14159。要求半径r和必须利用宏常量表示。输入格式: 无 输出格式: 半圆的面积输出格式: "Area=%f\n" 半圆弧的周长输出格式: "circumference=%f\n" 输入样例: 输出样例: Area=44.123632 circumference=16.650427 #include #define PI 3.14159 #define R 5.3 int main() { printf("Area=%f\n", R*R*PI/2); printf("circumference=%f\n", 2*R*PI/2); return 0; }

c语言实验习题及答案详解

1.数据类型 a.输入一个小数点后有多位数字的小数,实现将其保留三位小数,并输出;, #include<> main() {double b,d; printf("请输入一个小数:"); scanf("%lf",&b); printf("输出原来的数:%f\n",b); b*=1000; b+=; b=(int)b; d=b/1000; printf("输出现在的数:%.3lf\n0",d); } b.输入一个4位整数,求其得各位数字的平方和;(1234 1+4+9+16=30) #include<> main() {int n,sum=0,i,t; printf("请输入一个四位整数:\n"); scanf("%d",&n); for(i=0;i<4;i++) {t=n%10; n/=10; sum+=t*t; } printf("%d\n",sum);

} c.定义字符型变量ch,写出六种给ch赋值字符’A’的代码; #include<> main() {char ch; ch='A'; ch=65; ch=0x41; ch=0101; ch='\101'; ch='\x41'; } d.编写程序输出26组大小写字母;(AaBbCc……….XxYyZz) #include<> main() {int i; for(i=65;i<91;i++) {printf("%c",i); printf("%c",i+32); } printf("\n"); } e.定义浮点型变量f1、f2,为f1赋值10的-30次,为f2赋值10的30次 #include<> main() { double f1,f2; f1=10e-30;

大学C语言期末考试练习题(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言练习题及答案解析三

一、单项选择题 1.下面不属于C语言的数据类型是【】。 A) 整型B) 实型C) 逻辑型D) 双精度实型 分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。 本题正确答案为C。 语言中,下列属于构造类型的是【】。 A) 整型B) 实型C) 指针类型D) 结构体类型 分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。 本题正确答案为D。 3.下列字符串不符合标识符规定的是【】。 A) SUM B) sum C) 3cd D) end 分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。 本题正确答案为C。 4.下面能正确表示八进制数的是【】。 A) 0x16 B) 029 C) -114 D) 033 分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。 本题正确答案为D。 5.下面四个选项中,均是合法实数的选项是【】。 A) B) C) D)-e5 分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e 之前必须有数字,e之后必须是整数。选项A)中的"",选项C)中的"",选项D)中的"-e5"均是不合法的。 本题正确答案为B。 语言中,字符型数据在内存中存储形式是【】。 A) 原码B) 反码C) 补码D) ASCII码 分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。 本题正确答案为D。 7.下列正确的字符型常量是【】。 A) "a" B) ′\\\\′ C) "\\r" D) 277 分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。 本题正确答案为B。 8.若有说明语句char ch1=′\\x41′;则ch1【】。 A) 包含4个字符B) 包含3个字符C) 包含2个字符D) 包含1个字符 分析:"\\x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。 本题正确答案为D。 9.下列程序段输出的字符串长度为【】。 printf("\\\\aaa\\′ccc\\bddd\\""); A) 11 B) 12 C) 13 D) 17 分析:\\\\、\\′、\\b和\\"为转义字符,程序输出结果为:\\aaa′ccddd"。 本题正确答案为A。 10.下列运算符中,要求运算对象必须是整数的是【】。 A) / B) * C) % D) ! 分析:题目中"/"、"*"、"!"的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。 本题正确答案为C。 11.下面合法的赋值语句是【】。 A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316; 分析:赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“++”不能用于表达式,选项C)也是错的。 本题正确答案为D。 12.已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为

c语言练习题带详解答案

一、编程题 1.输入2个整数,求两数的平方和并输出。 #include int main(void) { intt a ,b,s; printf("please input a,b:\n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %d\n",s); return 0; } 2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 #include #define PI 3.14 int main(void)

{ double r ,area , girth; printf("please input r:\n"); scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ; printf("the area is %.2f\n", area); printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0)

2x-1 (x>0) #include void main() { int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); } 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include void main(){ int data;

C语言基础练习题(含答案)

目录

第1-3章 C语言基础知识习题 1 选择题 1. 以下不是C语言的特点的是()。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 3.正确的C语言标识符是()。 A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是()。 A.\\ B.\0xAA C.\t D.\0 6.不属于C语言关键字的是()。 A.int B.break C.while D.character 7.是C语言提供的合法关键字的是()。 A.Float B.signed C.integer D.Char 8.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 9.一个C程序是由()。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 A.程序行 B.语句 C.函数 D.字符 11.下列说法中,错误的是()。 A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行

C语言经典编程练习题和答案详解入门必备

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: #include “stdio.h” #include “conio.h” main() { inti,j,k; printf(“\n”); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k 三位互不相同*/ printf(“%d,%d,%d\n”,i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: #include “stdio.h” #include “conio.h” main() { longinti; int bonus1,bonus2,bonus4,bonus6,bonus10, bonus; sc anf(“%ld”,&i); bonus1=100000*0. 1; bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01;

C语言FOR循环练习题配解析

C语言F O R循环练习 题配解析 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

实验五循环结构实验——f o r循环目的和要求: 1、掌握循环结构程序设计的方法 2、掌握简单循环程序设计方法 3、掌握for循环程序设计 实验题目: 1、求1+2+3+……+100的和,并输出。 #include <> main () { int a,b=0; a=1; for(;a<=100;a++) b=b+a; printf ("1+2+3+···+100=%d\n",b); } 2、利用for循环编程,输出如下图形: * * ** ** *** *** **** **** ***** *****

****** ****** ******* ******* ******** ******** (a)图 (b)图 A #include <> main() { int a,b; for (a=1;a<=8;a++) { for(b=1;b<=a;b++) printf ("\*"); printf ("\n"); } } B #include <> main() { int a,b; for (a=1;a<=8;a++) {

for (b=1;b<=8-a;b++) printf (" "); for(b=1;b<=a;b++) printf ("\*"); printf ("\n"); } } 3、判断输入的某个数是否为素数,若是,输出YES,否则输出NO. #include <> main () { int a,b,c=1; printf ("请输入一个数(正整数)\n"); scanf ("%d",&a); if (a==1) printf ("NO\n"); else { if (a==2) printf ("YES\n"); else { for(b=2;b<=(a-1);b++)

C语言练习题及参考答案

练习题1及参考答案 1. 单项选择题 (1)以下并非C语言的特点的是。 A. C语言简洁和紧凑 B. 能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D. C语言移植性好 【答】B (2)一个C程序的执行是从。 A. main()函数开始,直到main()函数结束 B. 第一个函数开始,直到最后一个函数结束 C. 第一个语句开始,直到最后一个语句结束 D. main()函数开始,直到最后一个函数结束 【答】A (3)在C程序中,main()的位置。 A. 必须作为第一个函数 B. 必须作为最后一个函数 C. 可以任意 D. 必须放在它所调用的函数之后 【答】C (4)一个C程序是由。 A. 一个主程序和若干子程序组成 B. 一个或多个函数组成 C. 若干过程组成 D. 若干子程序组成 【答】B (5)下列说法正确的是。 A. 在执行C程序时不是从main()函数开始的 B. C程序书写格式限制严格,一行内必须写一个语句 C. C程序书写格式比较自由,一个语句可以分行写在多行上 D. C程序书写格式严格要求一行内必须写一个语句,并要求行号 【答】C 2. 填空题 (1)一个C源程序至少有①个main()函数和②个其他函数。【答】①一②若干 (2)任何C语句必须以结束。 【答】分号 (3)C语言源程序的基本单位是。 【答】函数 (4)C编译程序的功能是。

【答】将C源程序编译成目标代码

练习题2及参考答案 1. 单项选择题 (1)以下字符串为标识符的是。 A. _MY B. 2_2222 C. short D. LINE 5 【答】A (2)下列符号可以作为变量名的是。 A. +a B. *p C. _DAY D. next day 【答】C (3)设c是字符变量,则以下表达式正确的是。 A. c=666 B. c='c' C. c="c" D. c="abcd" 【答】B (4)23+'m'+3.6-123.45/'b'的结果是型数据。 A. char B. double C. int D. long int 【答】3.6和123.45均为double型,运算结果也是double型。本题答案为B。 (5)若变量已正确赋值,以下符合C语言语法的表达式是。 A. a=a+7; B. a=7+b+c,a++ C. int(12.3%4) D. a=a+7=c+b 【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。本题答案为B。 (6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是。 A. x=(x=1+2,x*2) B. x=y>2?6:5 C. x=9-(--y)-(--y) D. x=y*(int)(4.8/2) 【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)(4.8/2)=y*2=6。本题答案为C。 (7)若定义 int m=7,n=12; 则能得到值为3的表达式是。 A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) 【答】A、B、C、D选项各表达式的值分别是0、2、2、3。本题答案为D。 (8)以下程序的运行结果是。

C语言习题及答案

第1题(2.0分)题号:97 难度:中第1章 以下不正确的叙述是()。 A:在C程序中所用的变量必须先定义后使用 B:程序中,APH和aph是两个不同的变量 C:若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变D:当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值 答案:D 第2题(2.0分)题号:204 难度:中第10章 在下列程序段中,枚举变量c1,c2的值依次是()。 enum color {red,yellow,blue=4,green,white} c1,c2; c1=yellow;c2=white; printf("%d,%d\n",c1,c2); A:1,6 B:2,5 C:1,4 D:2,6 答案:A 第3题(2.0分)题号:601 难度:中第2章 下面四个选项中,均是不合法的浮点数的选项是()。 A:160. 0.12 e3 B:123 2e4.2 .e5 C:-.18 123e4 0.0 D:-e3 .234 1e3 答案:B 第4题(2.0分)题号:621 难度:中第3章 printf函数中用到格式符%5s,其中数字5表示输出的字符串占用 5列,如果字符串长度大于5,则输出按方式()。 A:从左起输出该字符串,右补空格 B:按原字符长从左向右全部输出 C:右对齐输出该字串,左补空格 D:输出错误信息 答案:B 第5题(2.0分)题号:694 难度:中第3章 以下叙述正确的是()。 A:可以把define和if定义为用户标识符

B:可以把define定义为用户标识符,但不能把if定义为用户标识符 C:可以把if定义为用户标识符,但不能把define定义为用户标识符 D:define和if都不能定义为用户标识符 答案:B 第6题(2.0分)题号:575 难度:中第4章若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于 表达式(exp)的是()。 A:(exp==0) B:(exp!=0) C:(exp==1) D:(exp!=1) 答案:B 第7题(2.0分)题号:208 难度:中第4章下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是()。A:8 B:23 C:17 D:6 答案:B 第8题(2.0分)题号:632 难度:中第5章以下叙述正确的是()。 A:do-while语句构成的循环不能用其它语句构成的循环来代替. B:do-while语句构成的循环只能用break语句退出. C:用do-while语句构成的循环,在while后的表达式为非零时结束循环. D:用do-while语句构成的循环,在while后的表达式为零时结束循环 答案:D 第9题(2.0分)题号:506 难度:中第5章以下程序段的输出结果为()。 for(i=4;i>1;i--) for(j=1;j

C语言基础练习练习题复习(带详解答案).doc

精品文档 一单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123

选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while 为关键字,不满足(3) 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 详见教材P52~53. %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1; /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2 11.如果int a=3,b=4;则条件表达式"a

C语言练习题集(带答案解析)

1. ( A )是构成C 语言程序的基本单位。 A 、函数 B 、过程 C 、子程序 D 、子例程 2. C 语言程序从 _____ C ______________ 开始执行。 A ) 程序中第一条可执行语句 B )程序中第一个函数 C )程序中的main 函数 D )包含文件中的第一个函数 3、以下说法中正确的是( C )。 A 、 C 语言程序总是从第一个定义的函数开始执行 B 、 在 C 语言程序中,要调用的函数必须在 main ()函数中定义 C 、 C 语言程序总是从 main ()函数开始执行 D 、 C 语言程序中的 main ()函数必须放在程序的开始部分 4. 下列关于C 语言的说法错误的是( B ) 。 A ) C 程序的工作过程是编辑、编译、连接、运行 B ) C 语言不区分大小写。 C ) C 程序的三种基本结构是顺序、选择、循环 D ) C 程序从main 函数开始执行 5. 下列正确的标识符是(C )。 A. -a1 B.a[i] C.a2_i 6. 下列C 语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是(C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10.在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

相关文档