全国计算机二级c语言成绩查询

第一篇:全国计算机二级c语言成绩查询
全国计算机二级c语言成绩查询
篇一:2016年全国计算机等级考试二级C语言考试大纲及重点
2016年全国计算机等级考试二级C语言考试大纲
◆ 基本要求
1.熟悉 Visual C++ 6.0 集成开发环境。
2.掌握结构化程序设计的方法,具有良好的程序设计风格。
3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。
4.在 Visual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力 ◆ 考试内容
一、C语言程序的结构
1.程序的构成,main函数和其他函数。
2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。
3.源程序的书写格式。
4.C语言的风格。
二、数据类型及其运算
1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。
2.C运算符的种类、运算优先级和结合性。
3.不同类型数据间的转换与运算。
4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、基本语句
1.表达式语句,空语句,复合语句。
2.输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1.用if语句实现选择结构。
2.用switch语句实现多分支选择结构。
3.选择结构的嵌套。
五、循环结构程序设计
1.for循环结构。
2.while和do-while循环结构。
3.continue语句和break语句。
4.循环的嵌套。
六、数组的定义和引用
1.一维数组和二维数组的定义、初始化和数组元素的引用。/ 16
2.字符串与字符数组。
七、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。
4.形式参数与实在参数,参数值传递。
5.函数的正确调用,嵌套调用,递归调用。
6.局部变量和全局变量。
7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
八、编译预处理
1.宏定义和调用(不带参数的宏,带参数的宏)。
2.“文件包含”处理。
九、指针
1.地址与指针变量的概念,地址运算符与间址运算符。
2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。
3.用指针作函数参数。
4.返回地址值的函数。
5.指针数组,指向指针的指针。
十、结构体(即“结构”)与共同体(即“联合”)
1.用typedef说明一个新类型。
2.结构体和共用体类型数据的定义和成员的引用。
3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。
十一、位运算
1.位运算符的含义和使用。
2.简单的位运算。
十二、文件操作
只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。
1.文件类型指针(FILE类型指针)
2.文件的打开与关闭(fopen,fclose)。
3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。
考试题型
(1)选择。——40
(2)程序填空。——18
(3)程序改错。——18
(4)程序编程。——24 / 16
考试时间
120min无纸化考试
总体上必须清楚的:
1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)
2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以 二进制的形式.数据存放的位置就是 他的地址.4)bit是位 是指为0 或者1。byte 是指字节, 一个字节 = 八个位.5)一定要记住 二进制 如何划成 十进制。
概念常考到的:
1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章
1)合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成。有其它元素就错了。
并且第一个必须为字母或则是下划线。第一个为数字就错了。
关键字不可以作为用户标识符号。maindefinescanfprintf 都是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:
2.333e-1 就是合法的,且数据是2.333×10
考试口诀:e前e后必有数,e后必为整数。.?1
3)字符数据的合法形式::
'1' 是字符占一个字节,“1”是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:
考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。
5)转义字符的考查:
在程序中 int a = 0x6d,是把一个十六进制的数给变量a,注意这里的0x必须存在。在程序中 int a = 06d, 是一个八进制的形式。
在转义字符中,’x6d’ 才是合法的,0不能写,并且x是小写。
‘141’ 是合法的。
‘108’是非法的,因为不可以出现8。/ 16
转义字符 意义 ASCII码值(十进制)
a 响铃(BEL)007
b 退格(BS)008
f 换页(FF)012
n 换行(LF)010
r 回车(CR)013
t 水平制表(HT)009
v 垂直制表(VT)011
反斜杠 092
? 问号字符 063
' 单引号字符 039
“ 双引号字符 034
空字符(NULL)000
ddd 任意字符 三位八进制
xhh 任意字符 二位十六进制
6)算术运算符号的优先级别:
同级别的有的是从左到右,有的是从右到左。
7)强制类型转换:
一定是(int)a 不是int(a),注意类型上一定有括号的。
注意(int)(a+b)和(int)a+b 的区别。前是把a+b转型,后是把a转型再加b。
8)表达式的考查:
是表达式就一定有数值。
赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
自加、自减表达式:假设a=5,++a(是为6),a++(为5);
运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这
个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中。进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。
考试口诀:++在前先加后用,++在后先用后加。
逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
9)位运算的考查:
会有一到二题考试题目。
总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。例1: char a = 6, b;
b = a
一定要记住,在没有舍去数据的时候,>右移一位表示除以2。/ 16
篇二:2016年3月份全国计算机等级考试二级C语言 题库(全)
2016年3月份全国计算机等级考试二级C语言 题库(全)
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正
确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的 程序流程图,通常也把这种图称为
A)PAD图 B)N-S图C)结构图D)数据流图
(2)结构化程序设计主要强调的是
A)程序的规模B)程序的效率 C)程序设计语言的先进性
程序易读性
(3)为了使模块尽可能独立,要求
A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
(4)需求分析阶段的任务是确定
A)软件开发方法
功能
(5)算法的有穷性是指
A)算法程序的运行时间是有限的B)软件开发工具 C)软件开发费用 D)软件系统 D)
B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用
(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法
是
A)快速排序B)冒泡排序C)直接插入排序D)堆排序
(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
A)e3,e1,e4,e2B)e2,e4,e3,e1C)e3,e4,e1,e2D)任意顺序
(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键
(9)有三个关系R、S和T如下:
R
BCD
a0k1
b1n1
S
BCD / 16
f3h2
a0k1
n2x1
T
B C D
a
0 k1D)域
由关系R和S通过运算得到关系T,则所使用的运算为
A)并B)自然连接C)笛卡尔积D)交
(10)下列有关数据库的描述,正确的是
A)数据处理是将信息转化为数据的过程
B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C)关系中的每一列称为元组,一个元组就是一个字段
D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系
的关键字,则称其为本关系的外关键字
(11)以下叙述中正确的是
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
(12)下列可用于C语言用户标识符的一组是
A)void, define, WORDB)a3_3,_123,Car C)For,-abc, IF Case
D)2a, DO, sizeof
(13)以下选项中可作为C语言合法常量的是
A)-80B)-080C)-8e1.0D)-80.0e
(14)若有语句:char *line[5];,以下叙述中正确的是
A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
(15)以下定义语句中正确的是
A)inta=b=0;B)charA=65+1,b=′b′;C)floata=1,*b=&a,*c=&b;
(16)有以下程序段
charch;intk;ch=′a′;k=12;
printf(”%c,%d,“,ch,ch,k);printf(”k=%d n“,k);/ 16
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零值或不定值
C)a,97,12k=12 D)a,97,k=12
(17)有以下程序
main()
{inti,s=1;
for(i=1;i
if(!(i%5)&&!(i%3))s+=i;
printf(”%dn“,s);}
A)409B)277C)1 D)91
(18)当变量c的值不为2、4、6时,值也为”真“的表达式是
A)(c==2)||(c==4)||(c==6)
B)(c>=2&& c
C)(c>=2&&c
D)(c>=2&& c
(19)若变量已正确定义,有以下程序段
inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;
printf(”%d,%d,%dn“,a,b,c);
其输出结果是
A)程序段有语法错B)3,5,3
D)3,5,7
(20)有以下程序
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf(”a=%d,b=%dn“,a,b);
}
C)3,5,5
A)a=1,b=0B)a=2,b=2C)a=1,b=1 / 16
D)a=2,b=1
(21)下列程序的输出结果是
#include ”stdio.h“ main()
{int i,a=0,b=0;
for(i=1;i
{if(i%2==0){a++;
continue;} b++;}
printf(”a=%d,b=%d“,a,b);} A)a=4,b=4B)a=4,b=5 C)a=5,b=4(22)已知
#int t=0;while(t=1){...}
则以下叙述正确的是
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
(23)下面程序的输出结果是
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf(”%dn",*(p+2));}
A)3B)4C)1D)2
D)a=5,b=5
篇三:全国计算机二级c语言历年真题完整版
2010年3月全国计算机等级考试二级C笔试试卷
一、选择题
(1)A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n
B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)
C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
(2)算法的时间复杂度是指
A)算法的执行时间B)算法所处理的数据量
C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数
(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是 / 16
A)编辑软件B)操作系统C)教务管理系统D)浏览器
(4)软件(程序)调试的任务是
A)诊断和改正程序中的错误 B)尽可能多地发现程序中的错误
C)发现并改正程序中的所有错误 D)确定程序中错误的性质
(5)数据流程图(DFD图)是
A)软件概要设计的工具 B)软件详细设计的工具
C)结构化方法的需求分析工具 D)面向对象方法的需求分析工具
(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于
A)定义阶段B)开发阶段C)维护阶段C)上述三个阶段
(7)数据库管理系统中负责数据模式定义的语言是
A)数据定义语言B)数据管理语言
C)数据操纵语言D)数据控制语言
(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是
A)文件 B)数据库C)字段D)记录
(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段 B)逻辑设计阶段
C)概念设计阶段 D)物理设计阶段
(10)有两个关系R和T如下:
则由关系R得到关系T的操作是
A)选择B)投影C)交D)并
(11)以下叙述正确的是
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:fun(fun(x))
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可作为单独文件形式存在(12)以下关于C语言的叙述中正确的是
A)C语言中的注释不可以夹在变量名或关键字的中间
B)C语言中的变量可以在使用之前的任何位置进行定义
C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D)C语言的数值常量中夹带空格不影响常量值的正确表示
(13)以下C语言用户标识符中,不合法的是
A)_1B)AaBcC)a_b D)a--b
(14)若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是 A)a=a++,i++;B)i=(a+k)<=(i+k);
C)i=a%11;D)i=!a;
(15)有以下程序
#include
main()/ 16
{char a,b,c,d;
scanf(“%c%c”,&a,&b);c=getchar();d=getchar;
printf(“%c%c%c%cn”,a,b,c,d);}
当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是
一个字符)
12<CR>
34<CR>
则输出结果是
A)1234B)12C)12D)12
(16)以下关于C语言数据类型使用的叙述中错误的是
A)若要准确无误差的表示自然数,应使用整数类型
B)若要保存带有多位小数的数据,应使用双精度类型
C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型
(17)若a是数值类型,则逻辑表达式(a==I)||(a!=1)的值是
A)1B)0
C)2D)不知道a的值,不能确定
(18)以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是
A)switch(a)
{case1:a=b;break;
default:a++;
}
B)switch(a==1)
{case0:a=b;break;
case1:a++;
}
C)switch(a)
{default:a++;break;
case1:a=b;
}
D)switch(a==1)
{case1:a=b;break;
case0:a++;
}
(19)如下嵌套的if语句
if(a
if(a
else k=c;/ 16
if(b
else k=c;
以下选项中与上述if语句等价的语句是
A)k=(a
B)k=(a
C)k=(a
D)k=(a
(20)有以下程序
#include main()
{int i,j,m=1;
for(i=1;i
{for(j=3;j>0;j--){if(i+j>3)break;m*=i*j;} }
printf(“m=%dn”,m);
}程序运行后的输出结果是
A)m=6B)m=2 C)m=4D)m=5
(21)有以下程序
#include main()
{int a=1,b=2;
for(;a
printf(“%d,%dn”,a,b);
}程序运行后的输出结果是
A)9,18B)8,11C)7,11 D)10,14
(22)有以下程序,其中k的初值为八进制数
#include main(){int k=011;
printf(“%dn”,k++);
}程序运行后的输出结果是
A)12B)11 C)10D)9
(23)下列语句组中,正确的是
A)char *s;s="Olympic";B)char s[7];s="Olympic";
C)char *s;s={"Olympic"}; D)char s[7];s={"Olympic"};
(24)以下关于return语句的叙述中正确的是
A)一个自定义函数中必须有一条return语句
B)一个自定义函数中可以根据不同情况设置多条return语句
C)定义成void类型的函数中可以有带返回值的return语句
D)没有return语句的自定义函数在执行结束时不能返同到调用处
(25)下列选项中,能正确定义数组的语句是
A)int num[0..2008];B)int num[];
C)int N=2008;D)#define N 2008 / 16
int num[N]; int num[N];
(26)有以下程序
#include
void fun(char *c,int d){*c=*c+1;d=d+1;printf(“%c,%c”,*c,d);}
main()
{char b=‘a’,a=‘A’;
fun(&b,a);printf(“%c,%cn”,b,a);}程序运行后的输出结果是
A)b,B,b,AB)b,B,B,A
C)a,B,B,aD)a,B,a,B
(27)若有定义int(*pt)[3];,则下列说法正确的是
A)定义了基类型为int的三个指针变量
B)定义了基类型为int的具有三个元素的指针数组pt C)定义了一个名为*pt、具有三个元素的整型数组
D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
(28)设有定义double a[10],*s=a;,以下能够代表数组元索a[3]的是
A)(*s)[3] B)(s+3)
C)*s[3] D)(29)有以下程序
#include main()
{int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;for(i=1;i
printf(“%dn”,s);
}程序运行后的输出结果是
A)6 B)10C)11D)15
(30)有以下程序
#include main()
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=1;i
for(j=1;j
printf(“%dn”,t);
}程序运行后的输出结果是
A)1B)3C)4D)9
(31)若有以下定义和语句
char s1[10]="abcd!","n123";
printf("%d%d\n",strlen(s1),strlen(s2)); / 16
则输出结果是
A)5 5B)10 5C)10 7D)5
8
(32)有以下程序
#include
#define N 8
void fun(int *x,int i)
{*x=*x+i;}
main()
{int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);for(i=1;i
{printf(“%d”,a[i]);}
printf(“n”);
}程序运行后的输山结果是
A)1313B)2234 C)3234
(33)有以下程序
#include
int f(int t[],int n);main()
{int a[4]={1,2,3,4},s;
s=f(a,4);printf(“%dn”,s);} int f(int t[],int n)
{if(n>0)return t[n-1]+f(t,n-1);
else return 0;} 程序运行后的输出结果是
A)4 B)10 C)14D)6
(34)有以下程序
#include int fun()
{static int x=1;x*=2;return x;}
main(){int i,s=1;
for(i=1;i
printf(“%dn”,s);}程序运行后的输出结果是
A)0B)1C)4D)8
(35)有以下程序
#include
#define SUB(a)(a)-(a)/ 16 main()
{int a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf(“%dn”,d);
}程序运行后的输山结果是
A)0 B)-12C)-20
(36)设有定义:
struct complex
{int real,ueal;} data1={1,8},data2;
D)1234D)10/ 16 / 16 / 16
第二篇:《全国计算机等级考试二级教程C语言程序设计》
《全国计算机等级考试二级教程——C语言程序设计》
课后题及参考答案
第一章 程序设计基本概念
1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。答案:.exe 1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
答案:.c.obj.exe 1.3 结构化程序由_____、_____、_____三种基本结构组成。答案:顺序、选择、循环 第二章 C程序设计的初步知识
一、选择题
2.1 以下选项中正确的整型常量是
A)12.B)-20
C)1,000
D)4 5 6
答案:B 2.2 以下选项中正确的实型常量是
A)0
B)3.1415
C)0.329×10(2)(10的2次方)
D).871
答案:D 2.3 以下选项中不正确的实型常量是
A)2.607E-1
B)0.8103e 2
C)-77.77
D)456e-2
答案:B 2.4 以下选项中不合法的用户标识符是
A)abc.c
B)file
C)Main
D)PRINTF
答案:A 2.5 以下选项中不合法的用户标识符是
A)_123
B)printf
C)A$
D)Dim
答案:C 2.6 C语言中运算对象必需是整型的运算符是
A)%
B)/
C)!
D)**
答案:A 2.7 可在C程序中用作用户标识符的一组标识符是
A)void
define
WORD
B)as_b3
_123
If
C)For
-abc
case
D)2c
DO
SIG
答案:B 2.8 若变量已正确定义并赋值,符合C语言语法的表达式是
A)a=a+7;
B)a=7+b+c,a++
C)int(12.3%4)
D)a=a+7=c+b
答案:B 2.9 以下叙述中正确的是
A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。
B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。
C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0。
D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。
答案:B 2.10 以下叙述中正确的是
A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B)C程序由主函数组成。
C)C程序由函数组成。
D)C程序由函数和过程组成。
答案:C 2.11 TURBO C中int类型变量所占字节数是
A)1
B)2
C)3
D)4
答案:B 2.12 不合法的八进制数是
A)0
B)028
C)077
D)01
答案:B 2.13 不合法的十六进制数是
A)oxff
B)0Xabc
C)0x11
D)0x19
答案:A
二、填空题
2.14 若k为int整型变量且赋值11。请写出运算k++后表达式的值A)_____和变量的值B)_____。
答案:
11、12 2.15 若x为double型变量,请写出运算x=3.2,++x后表达式的值A)_____和变量的值B)_____。
答案:4.2、4.2 2.16 函数体由符号____开始,用符号____结束。函数体的前面是____部分,其后是____部分。
答案:{、}、定义、执行
2.17 C语言中的标识符可分为____、____、和预定义标识符三类。
答案:关键字、用户标识符
2.18 在C语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。
答案:int、float、double 2.19 把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。
答案:float a1=1.0,a2=1.0;
2.20 C程序中定义的变量,代表内存中的一个____。
答案:存储单元
2.21 表达式3.5+1/2的计算结果是____。
答案:3.5 2.22 对以下数学式,写出三个等价的C语言表达式____、____、____。
a×b
——
c
答案:a*b/c、a/c*b、b/c*a 2.23 表达式s=10应当读做“____”。
答案:将10赋给变量s 2.24 计算机中内存储器的最小存储单位称____,其中能容纳的数是____。
答案:位、0或1 2.25 通常一个字节包含____个二进制位。在一个字节中能存放的最大(十进制)整数是____,它的二进制数的形式是____;最小(十进制)整数是____,它的二进制数的形式是____。
答案:8、255、1111 1111、-128、1000 0000 2.26 当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是____、最小(十进制)整数是____,它的二进制数的形式是____。
答案:65535、-32768、1000 0000 0000 0000 2.27 在C语言中整数可用____进制数、____进制数和____进制数三种数制表示。
答案:十、八、十六
三、上机改错题
2.24 【分析与解答】
第1行的错误:
(1)include是一个程序行,因此在此行的最后不应当有分号(;)。
(2)include程序行中后面的stdio.h是一个文件名,按规定,文件名应当放在一对双引号(″ ″)内,或放在一对尖括号(< >)内。 第2行的错误:
(1)main()是主函数的起始行,不是语句,因此最后不应当有分号(;)。
(2)在同一行上的/ * main function * / 显然是注释;C语言规定:注释由/*开头,由*/结束,但在*号和/之间不得插入任何空格,而在此处“/
*”和“/
*”之间存在空格,因此,/ * main function * /的写法式是错误的,而应写成:/* main function */。
第3行的错误:
(1)在主函数的起始行main()的后面是函数体,函数体由左花括号({)开始。但在函数体的第一行:float的前面缺少了左花括号({)。
(2)在同一行上的/* /*r is radius*/, /* s is area of circular*/ */ 显然是注释;C语言规定:注释由/*开头,由*/结束,并且开头的/*将去找最近的*/去配对,因此在/* /*r is radius*/中,第一个/*与最后的那个*/配上了对,结果紧跟在后面的那个逗号(,)落在了注释的外面,而构成了一个多余符号,为此,在编译时将报告“语法错”。
第6行的错误:
(1)printf(″%f \[KG-*3]n″,s)应当是一条输出语句,但在最后缺少了一个分号。
(2)printf(″%f \[KG-*3]n″,s);是程序的最后一条语句,程序应当结束;但缺少了程序体结束所需的右花括号(});此右花括号可以放在printf(″%f \[KG-*3]n″,s);的后面,也可以放在printf(″%f \[KG-*3]n″,s);的下一行上。
2.25 【分析与解答】
第1行的错误:在include行中的文件名应该是stdio.h,而不是stdio.a。 第2行的错误:在main的后面缺少一对圆括号。 第4行的错误:在c=40的后面缺少分号。
第6行的错误:在printf(″%f \〖KG-*3〗n″,v)的后面缺少分号。
第三章、顺序结构
一、选择题
3.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是
A)a=b=c=100;
B)d++;
C)c+b;
D)d=(c=22)-(b++);
答案:C 3.2 以下选项中不是C语句的是
A){int i;i++;printf(“%d”, i);}
B);
C)a=5,c=10
D){;}
答案:C 3.3 以下合法的C语言赋值语句是
A)A=B=58
B)k=int(a+b);
C)a=58,b=58
D)--i;
答案:D 3.4 以下程序的输出结果是
A)0
B)1
C)3
D)不确定的值
main()
{
int x=10,y=3;
printf(“%d”, y=x/y);
}
答案:C 3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是
A)read(a,b,c);
B)scanf(“%d%d%d”,a,b,c);
C)scanf(“%D%D%D”,&a,&b,&c);
D)scanf(“%d%d%d”,&a,&b,&c);
答案:D 3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予
10、b赋予
22、c赋予33,以下不正确的输入形式是
A)10
B)10.0,22.0,33.0
C)10.0
D)10 22
scanf(“%f %f %f”, &a, &b, &c);
答案:B 3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是
A)a=a+b,b=a-b,a=a-b;
B)t=a,a=b,b=t;
C)a=t;t=b;b=a;
D)t=b;b=a;a=t;
答案:C 3.8 若变量已正确定义,以下程序段的输出结果是
A)输出格式说明与输出项不匹配,输出无定值
B)5.17000
C)5.168000
D)5.169000
x=5.16894;
printf(“%f”,(int)(x*1000+0.5)/(float)1000);
答案:D 3.9 若有以下程序段,c3中的值是
A)0
B)1/2
C)0.5
D)1
int c1=1,c2=2,c3;
c3=c1/c2;
答案:A 3.10 若有以下程序段,其输出结果是
A)0,0,-10
B)0,0,5
C)-10,3,-10
D)3,3,-10
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d”,a,b,c);
答案:B 3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210
A)a=98,b=765,c=4321
B)a=10,b=432,c=8765
C)a=98,b=765.000000,c=4321.000000
D)a=98,b=765,c=4321.0
main(){
int a;float b,c;
scanf(“%2d%3f%4f”,&a,&b,&c);
printf(“a=%d,b=%f,c=%f”,a,b,c);}
答案:C 3.12 以下程序的输出结果是
A)a=%2,b=%5
B)a=2,b=5
C)a=%%d,b=%%d
D)a=%d,b=%d
main(){ int a=2,b=5;
printf(“a=%%d,b=%%d”,a,b);}
答案:D 3.13 若int类型占两个字节,则以下程序段的输出是
A)-1,-1
B)-1,32767
C)-1,32768
D)-1,65535
int a=-1;
printf(“%d,%u”,a,a);
答案:D 3.14 以下程序段的输出是
A)*496 *
B)* 496*
C)*000496* D)输出格式符不合法
int x=496;
printf(“*%-06d*”,x);
答案:A 3.15 以下程序段的输出是
A)|3.1415|
B)| 3.0|
C)|
3|
D)|
3.|
float a=3.1415;
printf(“|%6.0f|”,a);
答案:C 3.16 以下程序段的输出是
A)|2345.67800|
B)|12345.6780|
C)|12345.67800|
D)|12345.678|
printf(“|%10.5f|”,12345.678);
答案:C 3.17 以下程序段的输出是
A)*0000057.66*
B)*
57.66*
C)*0000057.67*
D)*
57.67*
float a=57.666;
printf(“*%010.2f*”,a);
答案:C 3.18 若从终端输入以下数据,要给变量C赋以283.19,则正确的输入语句是
A)scanf(“%f”,c);
B)scanf(“%8.4f”,&c);
C)scanf(“%6.2f”,&c);
D)scanf(“%8”,&c);
283.1900
答案:由于印刷错误,本题没有正确答案。改正意见:
把选项A改为:scanf(“%f”,&c);或者把选项D改为:scanf(“%8f”,&c);则可分别选择A或者D为正确答案。
3.19 若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(□代表空格)
A)3.12□□9.0
B)a=□□3.12b=□□□9
C)a=3.12,b=9
D)a=3.12□□,b=9□□□□
scanf(“a=%f,b=%f”,&a,&b);
答案:C 3.20 以下程序的输出结果是
A)9 8
B)8 9
C)6 6
D)以上三个都不对
#include “math.h” main(){ double a=-3.0, b=2;
printf(“%3.0f %3.0f”,pow(b,fabs(a)),pow(fabs(a),b));}
答案:B
二、填空题
3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。(1)____(2)____(3)____
int i=-200,j=2500;
printf(“(1)%d %d”,i,j);
printf(“(2)i=%d, j=%d”,i,j);
printf(“(3)i=%d j=%d”,i,j);
答案:
-200 2500
i=-200, j=2500
i=-200 j=2500 3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时
scanf(“%d”,&i);scanf(“%d”,&j);scanf(“%d”,&k);当执行第一个输入语句,从键盘输入:
12.3
则变量i、j、k的值分别是____、____、____。
答案:12、0、0 3.23 复合语句在语法上被认为是____。空语句的形式是____。
答案:一条语句、; 3.24 C语句的最后用____结束。
答案:;
3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式____、_____、____。
int k;float a;double x;
scanf(“%d%f%lf”,&k,&a,&x);
printf(“k=%d,a=%f,x=%f”,k,a,x);
答案:
(1)100 25.81 1.89234
(2)100 25.81
(3)100
int x=0177;
printf(“x=%3d,x=%6d,x=$%6o,x=%6x,x=%6u”,x,x,x,x,x);
答案:x=127,x= 127,x= 177,x=
7f,x= 127 3.27 以下程序段的输出结果是____。
int x=0177;
printf(“x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d”,x,x,x,x,x);
答案:
27、x=127,x=127,x=$127,x=$000127,x=%06d 3.28 以下程序段的输出结果是____。
double a=513.789215;
printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf”,a,a,a,a);答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500
三、编程题和改错题
3.16 【分析与解答】
(1)主函数名main后应有一对圆括号。(2)变量定义语句中,v的前面缺逗号。
(3)第三行的printf语句用以提示输入,但是原样输出的字符串没有用双引号括起来;另外,从输入的形式看,输入的数据紧跟在提示之后,因此,printf格式串中最后不应该有换行符——\n。
(4)因为输入项a、b、c从定义和计算结果来看都是double类型,因此,第四行scanf语句格式串中的格式说明不应当用%d而应当用%lf;且每一个变量之前应该加地址运算符&。
(5)第七行的printf语句中应当把%d都改成%lf或%f;按输出要求在格式串中应添加相应的原样输出的字符;因为下一个printf的输出从新的一行开始,因此在本输出语句的格式串的最后应当加换行符——\n。
(6)第八行的printf语句中应当把格式串整理合并放在输出项的前面,输出项放在后面,%d都改成%lf或%f;中间的\n删去。
(7)请读者自己写出修改后的程序,并上机调试。
3.17【分析与解答】
(1)分析:可用算术式560÷60把分钟换算成小时和分钟,商数就是小时数,余数就是分钟数。
(2)确定变量的名字和定义变量的类型:在程序中把小时数放在变量h中,把分钟数放在变量m中。这两个变量的类型可以是整型(本题中采用整型),也可以是实型。
(3)确定所用算法:求〖SX()560〖〗60〖SX〗〗的商数,在C语言中可以用整除的算法,语句是h=560/60。求余数可用求余运算符 %:560%60,其值放入变量m中的语句是:m=560%60。(4)设计输出格式。若输出的形式定为:小时:分钟,则按此形式设计输出语句。(5)把以上内容放在主函数的一对花括号中。(6)编写程序如下:
main() {
int h, m;
h=560/60;
m=560%60;
printf(″The result: %3d : %3d\n″, h,m);
}
运行结果是:
The result:
: 20
3.18 【分析与解答】
(1)确定变量的名字和定义变量的类型。若用a存放1500,用b存放350;用q存放商数,用r存放余数,所有变量应定义成int类型。
(2)设计输入语句从终端输入1500和350;在输入语句之前,应当设计一个输出语句,用以提示输入。(3)可用整除求商数,结果放在变量q中。可用求余运算符%求两数之余数,结果放在变量r中。(4)设计输出语句。输出a、b、q、r。
(5)把以上内容放在主函数的一对花括号中。
本题的程序与3.30相似,请读者参考上题并根据本题的解释自己编程,并上机调试。
3.19 【分析与解答】
(1)定义4个双精度变量a、b、c和ave,变量a、b、c分别存放读入的3个双精度数,ave存放它们的平均值。
(2)设计输入语句,以及在此之前用于提示输入的(printf)语句。(3)设计求平均值的算法,把所求得的平均值放入变量ave中。
(4)设计把变量ave中的数,从小数点后第二位数进行四舍五入的算法。现举例说明:若ave中的数为123.4644,为了保留此值小数点后一位,可用表达式:(int)(123.4644*10)/10.0;依次推算,为了保留此值小数点后二位,可用表达式:(int)(123.4644*100)/100.0;其他依此类推。
(5)若要求对小数点后第二位数进行四舍五入,则可对原数加0.05后再进行以上运算。如要求保留123.4644小数点后一位且对第二位数进行四舍五入,可用表达式:(int)((123.467+0.05)*10)/10.0。注意:分母一定要用实数10.0而不能用整数10,否则就变成整除了;若要求保留123.4644小数点后两位且对第三位数进行四舍五入,可用表达式:(int)((123.467+0.005)*100)/100.0;其他依此类推。(6)设计输出语句。输出a、b、c和ave。(7)把以上内容放在主函数的一对花括号中。(8)编写程序如下: main()
{
double a,b,c,ave; printf(″Enter a ,b ,c : ″);
scanf(″%lf%lf%lf″, &a, &b, &c); ave=(a+b+c)/3; printf(″ave=%f\n″, ave);
/*用以比较四舍五入前后的数据*/ ave=(int)((ave+0.05)*10)/10.0;
printf(″a=%f, b=%f, c=%f, ave=%f\n″, a,b,c,ave);
}
3.20 【分析与解答】
(1)关于对变量中的数进行交换的算法请参考3.7题中的解释和《教程》中有关的例题。
(2)定义4个整型变量a、b、c和t,变量a、b、c分别存放读入的3个整数,t用作临时存储单元。(3)设计输入语句,以及在此之前用于提示输入的(printf)语句。(4)输出a、b、c中的值,以便于比较。(5)交换的步骤如下: ① 把c中的值赋给t。 ② 把b中的值赋给c。 ③ 把a中的值赋给b。 ④ 把t中的值赋给a。
经过以上步骤,已按要求进行了交换。(6)输出a、b、c中的值。(7)编写程序如下: main()
{
int a, b, c, t;
printf(″Enter a, b, c :\n″); scanf(″%d%d%d″,&a,&b,&c);
printf(″(1)a=%d,b=%d,c=%d\n″,a,b ,c); t=c;c=b;b=a;a=t;
printf(″(2)a=%d,b=%d,c=%d\n″,a,b,c);
}
第四章、选择结构
一、选择题
4.1 下列运算符中优先级最高的运算符是
A)!
B)%
C)-=
D)&&
答案:A 4.2 下列运算符中优先级最低的运算符是
A)||
B)!=
C)<=
D)+
答案:A 4.3 为表示关系x≥y≥z,应使用的C语言表达式是
A)(x>=y)&&(y>=z)
B)(x>=y)AND(y>=z)
C)(x>=y>=z)
D)(x>=y)&(y>=z)
答案:A 4.4 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是
A)a&&b
B)a<=b
C)a||b+c&&b-c
|1)
答案:D 4.5 以下程序的输出结果是
A)0
B)1
C)2
D)3
main()
{ int a=2,b=-1,c=2;
if(a
if(b<0)c=0;
else c+=1;
printf(“%d”,c);
}
D)!((a
答案:C 4.6 以下程序的输出结果是
A)1
B)2
C)3
D)4
main(){ int w=4,x=3,y=2,z=1;
printf(“%d”,(w 答案:A 4.7 若执行以下程序时从键盘上输入3和4,则输出结果是 A)14 B)16 C)18 D)20 main(){ int a,b,s; scanf(“%d%d”,&a,&b); s=a; if(a s*=s; printf(“%d”,s);} 答案:B 4.8 下面的程序片段所表示的数学函数关系是 -1(x<0)A)y= 0(x=0) 1(x>0) 1(x<0)B)y=-1(x=0) 0(x>0) 0(x<0)C)y=-1(x=0) 1(x>0) -1(x<0)D)y= 1(x=0) 0(x>0) y=-1;if(x!=0)y=1; if(x>0)y=1;else y=0;答案:A 4.9 运行以下程序后,输出 A)**** B)&&&& C)####&&&& D)有语法错误不能通过编译 main(){ int k=-3; if(k<=0)printf(“****”) else printf(“&&&&”);} 答案:D 4.10 若a和b均是正整型变量,以下正确的switch语句是 A)switch(pow(a,2)+pow(b,2)) { case 1: case 3: y=a+b;break; case 0: case 5: y=a-b; } B)switch(a*a+b*b); { case 3: case 1: y=a+b;break; case 0: y=b-a;break; } C)switch a { default: x=a+b; case 10: y=a-b;break; case 11: x=a*d;break; } D)switch(a+b) { case10 : x=a+b;break; case11 : y=a-b;break; } 答案:没有正确答案。如果C选项改为: switch(a){ default: x=a+b; case 10: y=a-b;break; case 11: x=a*b;break;} 则答案可以选择C 二、填空题 4.11 C语言中用____表示逻辑值“真”,用____表示逻辑值“假”。 答案:非0、0 4.12 C语言中的关系运算符按优先级别是____、____、____、____。 答案:>、<、>=、<=、==、!= 4.13 C语言中的逻辑运算符按优先级别是____、____、____。 答案:!、&&、|| 4.14 C语言中的关系运算符和逻辑运算符的优先级别是____、____、____、____、____、____、____。 答案:!、<、>、==、!=、&&、|| 4.15 C语言中逻辑运算符____的优先级高于算术运算符。 答案:! 4.16 将下列数学式改写成C语言的关系表达式或逻辑表达式A)____B)____。 A)a=b或a B)|x|>4 答案:A)a==b||a main(){ int a=100; if(a>100)printf(“%d”,a>100); else printf(“%d”,a<=100);} 答案:1 4.18 请写出与以下表达式等价的表达式A)____B)____。A)!(x>0) B)!0 答案:A)x<=0 B)1 4.19 当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为____、____、____。 if(a>c) b=a;a=c;c=b; 答案:3、2、2 4.20 若变量已正确定义,以下语句段的输出结果是____。 x=0;y=2;z=3; switch(x) { case 0: switch(y==2) { case 1: printf(“*”);break; case 2: printf(“%”);break; } case 1: switch(z) { case 1: printf(“$”); case 2: printf(“*”);break; default : printf(“#”); } } 答案:*# 三、编程题 4.21 【分析与解答】 相关内容请参考《教程》4.2节和4.4节。(1)改写如下: switch(a/10) { default : m=5;break; case 0 : case 1 : case 2 : m=1;break; case 3 : m=2;break; case 4 : m=3;break; case 5 : m=4;break; }; (2)本题中对a的判断条件有一定的规律可寻;关键是,在switch语句后的表达式中利用了a/10,从而简化了case标号。 4.22 【分析与解答】 编写本题的程序,首先要解决如何计算学生当前的年龄(设存放实足年龄的变量是age)。(1)如果当前的月份大于生日的月份,则学生的实足年龄age=y1-y0。 (2)如果当前的月份等于生日的月份,就要看日数,当前的日数大于或等于生日的日数,则学生的实足年龄age=y1-y0。 (3)如果不满足以上的条件,就可断定当前的日期没有超过生日日期,就是说学生的年龄应当是age=y1-y0-1。 以上3条,用C语言可以描述如下: if((m1>m0)[JB>1|][JB>1|](m1==m0&&d1>=d0))age=y1-y0; else age=y1-y0-1; 读者可以参考以上语句写出程序,也可以根据分析写出与此形式不同的语句和程序。 4.23【分析与解答】 (1)若输入的整数a是奇数,输出 dd number,是偶数输出:even number。 (2)若一个a是偶数,它就能被2除尽,即a%2==0,输出even number;若是奇数,它就不能被2除尽,即a%2!〖KG-*2〗=0,输出odd number。 读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。 4.24 【分析与解答】 本题的主要算法是从3个数中找出最大的那个数。假定始终把最大的数放在变量max中。(1)假定a中的数最大,把a赋给max。 (2)用b去和max比较,若b大于max,则把b赋给max;若不大于max,则什么也不做。(3)用c去和max比较,若c大于max,则把c赋给max;若不大于max,则什么也不做。(4)经过以上操作,max中已放入了a、b、c三个数中的最大数,输出max即可。 读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。 4.25 【分析与解答】 (1)本题已给出了非常明确的条件,只要写出正确的条件判断语句就可基本完成程序的编写。 (2)由给出的函数可知,只有x的值在规定的范围内时,才求出y的值,因此程序应当对输入的x进行判断,若超过范围就不求y的值。 (3)现以使用if[CD#*2]else语句为例写出程序供参考。 main() { int x,y;printf(″Enter x : ″);scanf(″%d″, &x); if(x>-5&&x<10) { if(x==0)y=x-1; else if(x<10 && x>0)y=x+1; else if(x<0 && x>-5)y=x; printf(″x=%d y=%d\n″, x,y); } printf(″***END***\n\n″); } 第五章、循环结构 一、选择题 5.1 以下程序段的输出结果是 A)9 B)1 C)11 int k,j,s; for(k=2;k<6;k++,k++) { s=1; for(j=k;j<6;j++)s+=j; } printf(“%d”, s); 答案:D 5.2 以下程序段的输出结果是 A)12 B)15 C)20 int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4)m++; printf(“%d”, m); 答案:C 5.3 以下程序段的输出结果是 A)10 B)9 C)10 D)9 D)10 D)25 int n=10; while(n>7) { n--; printf(“%d”, n); } 答案:B 5.4 以下程序段的输出结果是 A)1 B)3 0 C)1-2 int x=3; do { printf(“%3d”,x-=2);} while(!(--x)); 答案:C 5.5 以下程序段的输出结果是 A)15 B)14 C)不确定 main() { int i,sum; for(i=1;i<6;i++)sum+=sum; printf(“%d”,sum); } 答案:C 5.6 以下程序段的输出结果是 A)741 B)852 C)963 main() { int y=10; for(;y>0;y--) if(y%3==0) { printf(“%d”,--y);continue; } 答案:B 5.7 若x是int型变量,以下程序段的输出结果是 A)**3 ##4 **5 B)##3 **4 ##5 C)##3 **4##5 D)**3##4 **5 for(x=3;x<6;x++) printf((x%2)?(“**%d”):(##%d“),x); D)死循环 D)0 D)875421 } 答案:D 5.8 以下程序的输出结果是 A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$ main(){ int i; for(i=1;i<=5;i++) { if(i%2)printf(”*“); else contionue; printf(”#“); } printf(”$“);} 答案:A 5.9 以下叙述正确的是 A)do_while语句构成的循环不能用其它语句构成的循环来代替。 B)do_while语句构成的循环只能用break语句退出。 C)用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。 D)用do_while语句构成循环时,只有在while后的表达式为零时结束循环。 答案:D 5.10 以下程序的输出结果是 A)39 81 B)42 84 C)26 68 D)28 70 main(){ int x,i; for(i=1;i<=100;i++) { x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(”%d “, x); } printf(”“);} 答案:D 二、填空题 5.11 当执行以下程序段后,i的值是____、j的值是____、k的值是____。 int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(;a>b;++b)i++;while(a>++c)j++;do k++;while(a>d++); 答案:5、4、6 5.12 以下程序段的输出结果是____。 int k,n,m;n=10;m=1;k=1;while(k<=n)m*=2;printf(”%d“,m); 答案:死循环 5.13 以下程序的输出结果是____。 main(){ int x=2; while(x--); printf(”%d“,x);} 答案:-1 5.14 以下程序段的输出结果是____。 int i=0,sum=1; do { sum+=i++;}while(i<5); printf(”%d“,sum); 答案:11 5.15 有以下程序段: s=1.0; for(k=1;k<=n;k++)s=s+1.0/(k*(k+1)); printf(”%f“,s);请填空,使下面的程序段的功能完全与之等同。 s=0.0; ____; k=0; do { s=s+d; ____; d=1.0/(k*(k+1)); } while(____); printf(”%f“,s); 答案:d=1.0、k++、k<=n 5.16 以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。 main() { float x,amax,amin; scanf(”%f“,&x); amax=x;amin=x; while(____) { if(x>amax) amax=x; if(____) amin=x; scanf(”%f“,&x); } printf(”amax=%famin=%f“,amax,amin); } 答案:x>=0、x 三、编程题 5.17【分析与解答】 (1)本题的基本算法是求累加值。累加项的值有规律的递增,每一项的绝对值比前一项增2,因此可以利用循环的控制变量的递增来得到累加项的绝对值。例如: for(i=1;i<=101;i+=2)„ (2)按所给的算式可以看到,累加项的符号是在交叉改变的,为此应当在循环体内设 置一个变量,使它的符号按此规律交叉改变,这可用:s=-s;来实现,s的初值为1;当s的值为1时,赋值后s中新的值为-1,当s的值为-1时,赋值后s中新的值为1。用s去乘累加项,将使累加项的符号也随之有规律地改变。(3)若累加和放在变量sum中,累加项放在变量t中,按照以上叙述,for循环体内的语句可以设计如下: s=-s;t=s*i;sum=sum+t;(4)sum的值是51。 (5)请读者自己对变量做出正确的定义并赋初值,设计输出语句,完善程序。 5.18 【分析与解答】 (1)本题的基本算法是求累加值。累加项的分子部分都是1;分母的值有规律的递增,依次为1!、2!、„、n!,即,若第i-1项的累加项为 t(i-1),则第i项的累加项是 t(i-1)*i,在程序中可用表达式:t=t/i(i从1变化到n)来表示。(2)根据以上分析,若用变量t来存放累加项,当i的值从1变化到n时,可用以下语句来实现累加: t=t/i;e+=t; (3)为了实现累加过程,以上语句应当放在循环内,循环控制变量从1变化到n。 (4)若用for循环,按题目要求已指定n的值是50。若用while循环,并没有指定n的值,但已指定了循环结束的条件,当t的值小于10-4结束循环。(5)现例示用while循环来求e值的部分程序: i=1;e=1.0;t=1.0; while(t>=1e-4) { t=t/i; e+=t; i++; } (6)请读者自己对变量做出正确的定义,设计输出语句,完善程序;也可以参考此程序段,按照自己的思路独立地完成程序。(7)e的值应当是:2.71828。 (8)根据以上分析,读者已不难用for循环来实现求e值的计算。 (9)注意:在完成此程序时,不要对分母中的阶乘值进行单独计算,因为17!的值已超过long类型的最大值,更无法求到50!。 5.19【分析与解答】 (1)从1880年至2000年的年数可用一个for循环来取得。 (2)对每一年,用以上指定的条件来进行判断,若满足条件即为闰年,进行输出。 (3)按输出的要求,需要设一个变量用于统计一行中输出的个数,若在一行上已连续输出了5个年数,就需输出一个换行符,使下一个输出项在新的一行上开始;若用变量n来做此统计,则当表达式n%5==0时就应输出一个换行符,同时使n重新置0值。 (4)若变量y代表年数,if语句的逻辑表达式可以写成如下: (y%4==0 && y%100!=0[JB>1|][JB>1|]y%400==0)(5)以下程序段供参考: for(y=1880;y<=2000;y++) if(y%4==0 && y%100![KG-*2]=0[JB>1|][JB>1|]y%400==0) { printf(″%d ″,y); n++; if(n%5==0) { printf(″\n″);n=0;} } (6)请读者自己对变量做出正确的定义并赋初值,完善程序;也可以参考此程序段,按照自己的思路独立地完成程序。从1880年至2000年有30个闰年。 5.20 【分析与解答】 (1)不难理解利用以下的for循环可以在一行上连续输出n个*号: for(i=1;i<=n;i++)printf(″*″); printf(″\n″); 若n的值是6,则连续输出6个*号。 (2)以上图形是在各行上输出数目不等的*号,只是*号的数目依次有规律地变化。在上半部分各行依次是1、3、5、7个,因此可以用以下的程序段来实现这样的输出: for(k=1;k<=7;k++,k++) { for(i=1;i<=k;i++)printf(″*″); printf(″\n″); } 在下半部依次是5、3、1个;因此可以用以下的程序段来实现这样的输出: for(k=5;k>=1;k--,k--) { for(i=1;i<=k;i++)printf(″*″); printf(″\n″); } 以上程序段从第一列起输出的结果如下: * *** ***** ******* ***** *** * 现在我们已完成了在每行输出指定数目的*号。 (3)输出结果与题目要求不同,它们的区别是:按题目每一行之前有不同的空格,而这里则是所有的行都在第一列上开始输出*号;所以接着就应当解决这一问题。(4)分析题目要求,每行第一个*号位置的缩进是有规律的,假定中间这一行第一个*号位置是在第一列,则可看出,第一至第三行的缩进分别是3、2、1个空格;而图形下半部的缩进数则刚好相反。这可在以上循环中添加输出连续空格的for循环来实现,对于上半部程序如下: b=3; for(k=1;k<=7;k++,k++) { for(j=1;j<=b;j++)printf(″ ″);b--; for(i=1;i<=k;i++)printf(″*″); printf(″\n″); } (5)请读者在理解以上给出的示例的基础上,自己添加下半部空格的输出。 第六章、字符型数据 一、选择题 6.1 C语言中的简单数据类型有 A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型 答案:B 6.2 C语言中,字符(char)型数据在微机内存中的存储形式是 A)反码 B)补码 C)EBCDIC码 D)ASCII码 答案:D 6.3 设有语句char a=''72'';,则变量a A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法 答案:A 6.4 C语言中不合法的字符常量是 A)''xff'' B)''65'' C)''&'' D)''28'' 答案:本题A)和D)选项都是不合法的字符常量。若A)选项改为''ÿ'',则正确。6.5 C语言中不合法的字符串常量是 A)”121“ B)''y='' C
全国计算机二级c语言成绩查询
本文2025-01-29 06:12:18发表“合同范文”栏目。
本文链接:https://www.wnwk.com/article/337330.html
- 二年级数学下册其中检测卷二年级数学下册其中检测卷附答案#期中测试卷.pdf
- 二年级数学下册期末质检卷(苏教版)二年级数学下册期末质检卷(苏教版)#期末复习 #期末测试卷 #二年级数学 #二年级数学下册#关注我持续更新小学知识.pdf
- 二年级数学下册期末混合运算专项练习二年级数学下册期末混合运算专项练习#二年级#二年级数学下册#关注我持续更新小学知识 #知识分享 #家长收藏孩子受益.pdf
- 二年级数学下册年月日三类周期问题解题方法二年级数学下册年月日三类周期问题解题方法#二年级#二年级数学下册#知识分享 #关注我持续更新小学知识 #家长收藏孩子受益.pdf
- 二年级数学下册解决问题专项训练二年级数学下册解决问题专项训练#专项训练#解决问题#二年级#二年级数学下册#知识分享.pdf
- 二年级数学下册还原问题二年级数学下册还原问题#二年级#二年级数学#关注我持续更新小学知识 #知识分享 #家长收藏孩子受益.pdf
- 二年级数学下册第六单元考试卷家长打印出来给孩子测试测试争取拿到高分!#小学二年级试卷分享 #二年级第六单考试数学 #第六单考试#二年级数学下册.pdf
- 二年级数学下册必背顺口溜口诀汇总二年级数学下册必背顺口溜口诀汇总#二年级#二年级数学下册 #知识分享 #家长收藏孩子受益 #关注我持续更新小学知识.pdf
- 二年级数学下册《重点难点思维题》两大问题解决技巧和方法巧算星期几解决周期问题还原问题强化思维训练老师精心整理家长可以打印出来给孩子练习#家长收藏孩子受益 #学霸秘籍 #思维训练 #二年级 #知识点总结.pdf
- 二年级数学下册 必背公式大全寒假提前背一背开学更轻松#二年级 #二年级数学 #二年级数学下册 #寒假充电计划 #公式.pdf


