2014C语言程序设计(含答案)
- 格式:doc
- 大小:134.00 KB
- 文档页数:8
C语言程序设计试题及参考答案精心整理c语言程序设计一、选择题(共40分,每小题2分)1、以下叙述不正确的是(d)a、一个c源程序可以由一个或多个函数共同组成b、一个c源程序必须涵盖一个main函数c、c程序的基本共同组成单位就是函数d、在c程序中,注释说明只能位于一条语句的后面2、以下四个选项中,就是不合法的用户标识符的选项就是(b)a、abcb、12acc、sund、a3、建有语句inta=4;则继续执行了语句a+=a-=a*a后,变量a的值就是(a)a、-24b、0c、4d、164、以下运算符中优先级最低的就是(b)a、a、inputx、y、z;b、scanf(“%d%d%d”,&x,&y,&z);c、scanf(“%d%d%d”,x,y,z);d、read(“%d%d%d”,&x,&y,&z);9、假定从键盘输入23456,下面程序的输出结果是:(c)voidmain(){intm,n;scanf(“-=”,&m,&n);printf(“m=%dn=%d\\n”,m,n);}a、m=23n=45b、m=234n=56c、m=23n=456d、语句有错误10、若运转时,给变量x输出12,则以下程序的运转结果就是(a)main(){intx,y;scanf(“%d”,&x);y=x>12?x+10:x-12;printf(“%d\\n”,y);}精心整理a、0b、22c、12d、1011、c语言中while和do-while循环的主要区别(a)a、do-while的循环体至少继续执行一次b、while的循环控制条件比do-while的循环控制条件严格c、do-while允许从外部转到循环体内d、do-while的循环体不能是复合语句12、以下对二维数组的恰当表明的语句就是(c)a、inta[3][]b、floata(3,4)c、doublea[3][4]d、floata(3)(4)13、以下程序的输出结果是(c)main(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d”,x[i][2-i]);}a、1,5,9b、1,4,7c、3,5,7d、3,6,914、以下能对一维数组a进行正确初始化的语句是(c)a、inta[10]=(0,0,0,0,0);b、inta[10]={};c、inta[10]={0};d、inta[10]={10*1};15、以下程序执行后的输出结果是:(a)intfun(inta,intb,intc){a=456;b=567;c=678;}voidmain(){intx=10,y=20,z=30;z=fun(x,y,z);printf(“%d,%d,%d\\n”,z,y,x);}a、30,20,10b、10,20,30c、10,30,50d、10,30,4016、以下说法正确的是(a)如果在一个函数中的复合语句中定义了一个变量,则该变量a、只在该复合语句中有效b、在该函数中有效c、在本程序范围内有效d、为非法变量17、以下函数调用语句中含有的实参个数为(b)func((exp1,exp2,exp3),(exp4,exp5));a、1b、2c、4d、518、在c语言程序中,以下观点恰当的就是(b)。
《C语言程序设计》专升本练习题(学习资料仅供练习)目录专升本《C语言》练习题一 (1)专升本《C语言》练习题二 (9)专升本《C语言》练习题三 (17)专升本《C语言》练习题四 (24)专升本《C语言》练习题五 (31)专升本《C语言》练习题六 (42)专升本《C语言》练习题七 (48)专升本《C语言》练习题八 (58)专升本《C语言》练习题九 (65)专升本《C语言》练习题十 (72)专升本《C语言》练习题一6 10专升本《C语言》练习题二专升本《C语言》练习题三一、单项选择题1. C语言源程序文件经过编译连接之后生成一个后缀为__C__的文件。
A.”.c”B.“.obj”C.“.exe”D.“.bas”2. 以下选项中不正确的整型常量是_C____。
A. 12LB. -10C. 1,900D. 123U3. 表达式___C___的值是0。
A.3%5B.3/5.0C.3/5D.3<54. 表达式!(x>0||y>0) 等价于__D___。
A.!x>0||!y>0B.!(x>0)||!(y>0)C.!x>0&&!y>0D.!(x>0)&&!(y>0)5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。
A.4&&3B.+aC.a=b=5D.int(3.14)6. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,___B___是正确的输入。
A.2030,40B.20 30 40C.20, 30 40D.20, 30,407. 执行语句printf(”__D____”, 2); 将得到出错信息。
A.%dB.%oC.%xD.%f8. 设变量定义为“int s[ ]="hello\nworld\n";”,则数组s中有__B__个元素。
湖南农业大学、怀化学院、吉首大学C/C++程序设计课程三校联考试卷课程名称:C/C++程序设计 试卷号: A 考核学期:2014年秋季考核对象:2014级计科、网络、电子、通信、电气专业1. 下面合法的C 语言字符常量是( ). A) '\t' B) "A" C) 65 D) A2. C 语言程序的基本单位是( ).A) 语句 B) 函数 C) 字符 D) 程序行 为表示关系x ≥y ≥z,应使用C 语言表达式( ). A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) (x>=y>=z)D) (x>=y) & (y>=z) 4. C 语言中非空的基本数据类型包括( ). A) 整型,实型,逻辑型B) 整型,实型,字符型C) 整型,字符型,逻辑型 D) 整型,实型,逻辑型,字符型 5.C 语言中的变量名的第一个字符( ).A) 必须为字母 B) 必须为下划线C) 必须为字母或下划线D) 可以是字母,数字或下划线中的任意一种一、单项选择题(本大题共20分,每小题2分)6. 设有说明: char w; int x; float y; double z; 则表达式: w*x+z-y 值的数据类型是( ). A) float B) char C) int D) double7. 一个C 语言的执行是( ).A) 从本程序的主函数开始,到本程序的主函数结束B) 从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D) 从本程序的第一个函数开始,到本程序的主函数结束 8. 下列说法中正确的是( ).A) sizeof (char) 是结果为整型的表达式 B) sizeof (char) 是一个不合法的表示形式 C) sizeof (char) 是一种函数调用 D) sizeof (char) 是结果为实型的表达式 9. 以下叙述正确的是 ( ).A) do-while 语句构成的循环不能用其它语句构成的循环来代替。
2014蓝桥杯c语言试题及答案2014蓝桥杯是指中国中学生计算机设计大赛,是一个重要的计算机技能竞赛。
C语言作为计算机编程的基础语言,也是该竞赛的主要考核对象。
以下是2014蓝桥杯C语言试题及答案,希望对广大参赛选手有所帮助。
题目一:请编写一个C语言程序,输出1到100之间所有能被3和5同时整除的数。
答案一:```c#include <stdio.h>int main(){int i;for (i = 1; i <= 100; i++){if (i % 3 == 0 && i % 5 == 0){printf("%d ", i);}return 0;}```题目二:请编写一个C语言程序,实现计算一个整数的阶乘。
答案二:```c#include <stdio.h>int factorial(int n){if (n == 0){return 1;}else{return n * factorial(n - 1);}int main(){int num;printf("请输入一个整数:");scanf("%d", &num);int result = factorial(num);printf("%d的阶乘为:%d\n", num, result);return 0;}```题目三:请编写一个C语言程序,统计一个字符串中字母、数字和其他字符的个数。
答案三:```c#include <stdio.h>#include <ctype.h>int main(){char str[100];int i, alphabets = 0, digits = 0, others = 0; printf("请输入一个字符串:");fgets(str, sizeof(str), stdin);for (i = 0; str[i] != '\n'; i++){if (isalpha(str[i])){alphabets++;}else if (isdigit(str[i])){digits++;}else{others++;}}printf("字母个数:%d\n", alphabets);printf("数字个数:%d\n", digits);printf("其他字符个数:%d\n", others);return 0;}```题目四:请编写一个C语言程序,实现冒泡排序算法对一个整型数组进行从小到大排序。
C语言程序设计期末考试试题含答案一、选择题(每题 3 分,共 30 分)1、以下选项中,不是 C 语言关键字的是()A intB floatC charD string答案:D解释:string 不是 C 语言的关键字,C 语言中表示字符串通常使用字符数组。
2、以下能正确表示八进制整数的是()A 018B 0x18C 0o18D 18答案:C解释:在 C 语言中,八进制整数以 0 开头,数字取值范围 0 7,所以 0o18 能正确表示八进制整数。
3、若有定义:int a = 5, b = 2; 则表达式 a / b 的值是()A 25B 2C 20D 3答案:B解释:在 C 语言中,两个整数相除,结果为整数,舍去小数部分,所以 5 / 2 的结果是 2 。
4、以下程序段的输出结果是()int x = 10;printf("%d\n",++x);A 10B 11C 9D 12答案:B解释:++x 是先将 x 的值增加 1,然后再使用 x 的值,所以输出11 。
5、若有定义:int a5 ={1, 2, 3, 4, 5};则 a2的值是()A 2B 3C 4D 5答案:B解释:数组下标从 0 开始,所以 a2的值是 3 。
6、以下函数声明中,正确的是()A void fun(int a, b);B void fun(int a, int b);C void fun(int a; int b);D void fun(int, int);答案:B解释:函数参数列表中,每个参数都需要明确指定其类型,所以 B 选项正确。
7、若有定义:char str ="hello";则 sizeof(str)的值是()A 5B 6C 20D 不确定答案:B解释:str 数组不仅包含字符'h','e','l','l','o',还包含一个字符串结束符'\0',所以 sizeof(str)的值是 6 。
第 1 页 共 7 页5. 有输入语句:scanf(“a=%d,b=%d,c=%d ”,&a,&b,&c);为使变量 a 的值为1,b 的值为2,c 的值为3,则正确的数据输入方式是( )。
(↙表示回车) (A )123↙ (B )1,2,3↙ (C )a=1 b=2 c=3↙ (D )a=1,b=2,c=3↙6.已知字母A 的ASCII 码值为十进制的65,下面程序的输出结果是( )。
#include<stdio.h> main(){ char ch1,ch2;ch1='A'+'5'-'3'; ch2='A'+'6'-'3';printf(“%d,%c\n”,ch1,ch2); }(A )67,D (B )B,C (C )C,D (D )不确定的值 7. 为表示关系x ≥y ≥z ,应使用C 语言表达式( )。
(A )(x>=y)&&(y>=z) (B )(x>=y)AND(y>=z) (C )(x>=y>=z) (D )(x>=y) & (y>=z)8. 设有数组定义:char array[]=“China ”;则数组array 所占的存储空间为( )。
(A )4个字节 (B )5个字节 (C )6个字节 (D )7个字节 9. 以下程序的输出结果是( )。
#include<stdio.h> main(){ int x=1,a=0,b=0; switch(x){ case 0:b++;case 1:a++;case 2:a++;b++;}printf(“%d,%d”,a,b);}(A)2,1 (B)1,1 (C)1,0 (D)2,210. 若k为整型变量,则下列while循环执行的次数为()。
2014年9月二级C语言程序设计模拟(7)试题及答案单项选择题1.下面关于算法的叙述中,正确的是( )。
A:算法的执行效率与数据的存储结构无关B:算法的有穷性是指算法必须能在执行有限个步骤之后终止C:算法的空间复杂度是指算法程序中指令(或语句)的条数D:以上三种描述都正确参考答案: B 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。
算法的有穷性是指一个算法必须在执行有限的步骤以后结束。
2.下列二叉树描述中,正确的是( )。
A:任何一棵二叉树必须有一个度为2的结点B:二叉树的度可以小于2C:非空二叉树有0个或1个根结点D:至少有2个根结点参考答案: B 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 二叉树是由n≥0个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。
二叉树可以是空集合,根可以有空的左子树或空的右子树。
二叉树不是树的特殊情况,它们是两个概念。
二叉树具有如下两个特点:①非空二叉树只有一个根结点。
②每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
3.如果进栈序列为A,B,C,D,则可能的出栈序列是( )。
A: C,A,D,BB: B,D,C,AC: C,D,A,BD:任意顺序参考答案: B 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 栈的操作原则为后进先出。
选项B)中出栈顺序可按“A进,B进,B出,C进,D进,D出,C出,A出”实现。
4.下列各选项中,不属于序言性注释的是( )。
A:程序标题B:程序设计者C:主要算法D:数据状态参考答案: D 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 注释一般为序言性注释和功能性注释。
序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。
2014年9月二级C语言程序设计模拟(5)试题及答案单项选择题1.下列数据结构中,能用二分法进行查找的是( )。
A:无序线性表B:线性链表C:二叉链表D:顺序存储的有序表参考答案: D 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。
2.下列叙述中,不属于设计准则的是( )。
A:提高模块独立性B:使模块的作用域在该模块的控制域中C:设计成多入口、多出口模块D:设计功能可预测的模块参考答案: C 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。
3.下列队列的描述中,正确的是( )。
A:队列属于非线性表B:队列在队尾删除数据C:队列按“先进后出”进行数据操作D:队列按“先进先出”进行数据操作参考答案: D 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。
队列的操作数是依据先进先出的原则进行的。
因此队列亦称作先进先出的线性表,或后进后出的线性表。
4.对下列二叉树进行前序遍历的结果为( )。
A: ABCDEFGHB: ABDGEHCFC: GDBEHACFD: GDHEBFCA参考答案: B 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 遍历就是不重复地访问二叉树的所有结点。
二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。
记住3种遍历的顺序:①前序,访问根一按前序遍历左子树一按前序遍历右子树。
②中序,按中序遍历左子树一访问根一按中序遍历右子树。
C语言程序设计习题集东华理工大学2014.9基础知识一单项选择题(每题2分,共44分)1 以下叙述正确的是___。
A C程序基本组成单位是语句B C程序每一行只能写一个语句C 简单C语句必须以分号作为结束符D 注释语句可以嵌套2 一个C语言程序是从___开始执行的。
A 程序中第一个函数B 名为main的函数C 包含文件(头文件)的第一个函数D 程序中的第一个语句3 请选出合法的C语言赋值语句___。
A a=b=58B i++;C a=58,b=58D k=int(a+b);4 下面标识符中,合法的用户标识符是___。
A 1abcB includeC a-b-c123D char5 以下所列的C语言整形常量中,正确的是___。
A 0x10B 0976C 076LD 01ff6 C语言中下列运算符的操作数必须为整型的是___。
A %B ++C /D =7 设a和b均为int型变量,则执行以下语句后的输出为___。
int a=20; int b=3; printf("%d\n",a+=(b%=2));A 20B 21C 0D 238 已知int i;,则执行语句 i=2.6;后,i的值为___。
A 2B 3C 2.6D 不确定9 以下合法的字符常量为___。
A 'ab'B '\482'C '\'D '\xaf'10 若y为int型变量,则执行以下语句后,y的值是___。
y=8; y+=y-=y*y;A 64B –56C –112D –4811 以下合法的浮点型常量是___。
A e-3B 1.5e+2.4C 3.14e+2LD 3.14 e +512 设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为___。
printf("%d",sizeof(a*b)+2/5);A 4B 8C 6D 713 设int型占2个字节,且int i=-2;,则语句printf("%u",i);的输出结果为___。
2014年9月份考试C语言程序设计第二次作业一、单项选择题(本大题共100分,共 40 小题,每小题 2.5 分)1. 下面程序fun3(int x){static int a=3;a +=x; return(a);}main(){int k=2, m=1, n;n=fun3(k);m=fun3(m);printf("%d\n",n);}的输出是().A. 3B. 4C. 5D. 92. 下面的程序main(){int x=3;do{printf("%d\n",x-=2);}while(!(--x) );}().A. 输出的是1B. 输出的是1和-2C. 输出的是3和0D. 是死循环3. 以下叙述中正确的是().A. 预处理命令行必须位于源文件的开头B. 在源文件的一行上可以有多条预处理命令C. 宏名必须用大写字母表示D. 宏替换不占用程序的运行时间4. 以下叙述中正确的是().A. 局部变量说明为static存储类,其生存期将得到延长B. 全局变量说明为static存储类,其作用域将被扩大C. 任何存储类的变量在未赋初值时,其值都是不确定的D. 形参可以使用的存储类说明符与局部变量完全相同5. 下列语句中,符合C语言语法的赋值语句是().A. a=7+b+c=a+7B. a=7+b++=a+7C. a=7+b,b++,a+7D. a=7+b,c=a+76. 下面程序main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}} 的输出是().A. 741B. 852C. 963D.7. 下面程序main(){int x=32;printf("%d\n",x=x<<1);}的输出是().A. 100B. 160C. 120D. 648. 以下程序的输出结果是(). #include main() { printf("%d\n",NULL); }A. 不确定的(因变量无定义)B. 0C. -1D. 19. 若k是int型变量,且有下面的程序片段k=-3;if(k<=0) printf("####") else printf("&&&&");上面程序片段的输出结果是().A. ####B. &&&&C. ####&&&&D. 有语法错误,无输出结果10. 下面的程序main(){int x=3,y=0,z=0;if(x=y+z)printf("* * * *");else printf("####");}().A. 有语法错误不能通过编译B. 输出* * * *C. 可以通过编译, 但是不能通过连接, 因而不能运行D. 输出####11. +以下定义语句中正确的是().A. char a=''''A''''b=''''B''''B. float a=b=10.0C. int a=10,*b=&aD. float *a,b=&a12. 设有如下一段程序int *var,ab;ab=100;var=&ab;ab=*var+10;执行下面的程序段后,ab的值为().A. 120B. 110C. 100D. 9013. 若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf("%d",(x,y) ); 上面程序片段的输出结果是().A. 200B. 100C. 100 200D. 输入格式符不够,输出不确定的值14. 若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中错误的是().A. data的每个成员起始地址都相同B. 变量data所占的内存字节数与成员c所占字节数相等C. 程序段:data.a=5;printf("%f\n",data.c);输出结果为5.D. data可以作为函数的实参15. 设有如下枚举类型定义enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran}枚举量Fortran的值为().A. 4B. 7C. 102D. 10316. 以下叙述中正确的是().A. C语言的源程序不必通过编译就可以直接运行B. C语言中的每条可执行语句最终都将被转换成二进制的机器指令C. C语言程序经编译形成的二进制代码可以直接运行D. C语言中的函数不可以单独进行编译17. 在一个C程序中()A. main函数必须出现在所有函数之前B. main函数可以在任何地方出现C. main函数必须出现在所有函数之后D. main函数必须出现在固定位置18. 以下叙述中错误的是().A. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B. 数组名代表的是数组所占存储区的首地址,其值不可改变C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越界"的出错信息D. 可以通过赋初值的方式确定数组元素的个数19. 有以下程序main(){char s[]="Yes\n/No",*ps=s; puts(ps+4);*(ps+4)=0; puts(s);}3 / 6程序运行后的输出结果是().A. n/NO Yes /NOB. /NO YesC. /NO Yes /NOD. /NO Yes20. 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是().A. char s[10]="abcdefg"B. char t[]="abcdefg",*s=tC. char s[10];s="abcdefg"D. char s[10];strcpy(s,"abcdefg")21. C语言中的标示符只能由字母、数字和下划线三种字符组成,且第一个字符()A. 必须是字母B. 必须是下划线C. 必须是字母或下划线D. 可以是字母或数字或下划线中的任意一种22. 以下程序段给数组所有的元素输入数据,请选择正确答案填入:#include main(){int a[10],i=0;while(i<10)scanf("%d",());}A. a+(i++)B. &a[i+1]C. a+ID. &a[++i]23. C语言中while和do-while循环的主要区别是()A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while 允许从外部转到循环体内D. do-while 的循环体不能是复合语句24. 下面四个选项当中,均是关键字的是()A. auto,enum,includeB. switch,typedef,continueC. signed,union,scanfD. if,struct,type25. 设ch是char型变量,其值为A,且有下面的表达式 ch=(ch>=''A''&&ch<=''Z'')?(ch+32):ch 上面表达式的值是().A. B. a C. Z D. z26. 以下叙述中正确的是().A. 用C程序实现的算法必须要有输入和输出操作B. 用C程序实现的算法可以没有输出但必须要输入C. 用C程序实现的算法可以没有输入但必须要有输出D. 用C程序实现的算法可以既没有输入也没有输出27. 有以下程序:main(){int s=0,a=1,n;scanf("%d",&n);do {s+=1; a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是().A. -1B. -3C. -5D. 028. 有以下程序main(){int c=35;printf("%d\n",c&c);}程序运行后的输出结果是().A. 0B. 70C. 35D. 129. 有以下程序main(){int a[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<="" 程序运行后的输出结果是(="" }="" printf(?%d,?,*p);="">A. 1,2,3,4,5,6,7,8,9,0B. 2,3,4,5,6,7,8,9,10,1C. 0,1,2,3,4,5,6,7,8,9D. 1,1,1,1,1,1,1,1,1,130. 正确的自定义标识符是()A. a=2B. a+bC. nameD. default31. 有以下程序:#define f(x) x*x main(){int i;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出的结果是().A. 28B. 22C. 16D. 432. 下面函数int fun1(char*x){char *y=x;while(*y++);return(y-x-1);}的功能是().A. 求字符串的长度B. 比较两个字符串的大小C. 将字符串x复制到字符串yD. 将字符串x连接到字符串y后面33. 以下程序运行后的输出结果是()fun(int a, int b){if(a>b) return a;5 / 6else return b;}main(){int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf("%d\n", r);}A. 3B. 6C. 8D. 1234. 已定义c为字符型变量,则下列语句中正确的是().A. c=''97B. c="97";C. c=97;D. c="a";''35. 若变量已正确定义并赋值,下面符合C语言的表达式是().A. a:=b+1B. a=b=c+2C. int 18.5%3D. a=a+7=c+b36. s1和s2已正确定义并分别指向两个字符串.若要求:当s1所指串大于s2所指串时,执行语句S;,则以下选项中正确的是().A. if(s1>s2) SB. if(strcmp(s1,s2)) SC. if(strcmp(s2,s1)>0) SD. if(strcmp(s1,s2)>0) S37. 以下选项中属于C语言的数据类型是()A. 复数型B. 逻辑型C. 集合型D. 双精度型38. C语言中,long类型的数据占字节数为() A. 1 B. 2 C. 4 D. 839. 有以下程序main(){int a=1,b;for(b=1;b<=10;b++){if(a>=8) break;if(a%2==1){a+=5;continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是().A. 3B. 4C. 5D. 640. 编辑程序的功能是()A. 建立并修改程序B. 将C源程序编译成目标程序C. 调试程序D. 命令计算机执行指定的操作答案:一、单项选择题(100分,共 40 题,每小题 2.5 分)1. C2. B3. D4. A5. D6. B7. D8. B9. D 10. D 11. C 12. B 13. A 14. C 15. C 16. B17. B 18. C 19. B 20. C 21. C 22. A 23. A 24. B 25. B 26. C 27. B 28. C 29. A 30. C 31.A 32. A 33. D 34. C 35.B 36. D 37. D 38.C 39. B 40. A。
c语言程序设计期末试题A(含答案)一、单项选择题(选择一个最佳答案,每题2分,共20分)1。
一个C程序的执行是从( )。
A) 本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序main函数结束2。
下列选项中,不能用作标识符的是( ).A) _1234_ B) _1_2 C)int_2_ D) 2_int_3.以下定义语句中正确的是( )。
A)char a='A'b='B';B) float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a;4.设有以下定义:#define d 2int a=0; double b=1。
25; char c=’A’;则下面语句中错误的是()。
A) a++; B)b++ C)c++;D)d++;5.以下4个选项中,不能作为一条C语句的是( )。
A) {;} B)a=0,b=0,c=0; C) if(a>0); D) if(b==0)m=1;n=2;6。
有以下定义语句 double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是( )。
A)a=a+b=b++ B)w%(int)a+b) C)(c+w)%(int)a D) w=a==b;7。
设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( )。
A)p=1;B)*q=2; C)q=p;D)*p=5;8.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是()。
A)scanf(“%d",pa);B)scanf(“%d”,a) ;C) scanf(“%d",&pa) ; D) scanf(“%d”,*pa);9。
《C语言程序设计》课后习题答案(第四版) C语言程序设计课后习题答案(第四版)1. 基础知识概述C语言程序设计是一门广泛应用于软件开发领域的编程语言。
它以其简洁、高效以及可移植性而备受推崇。
本文将为读者提供《C语言程序设计》(第四版)课后习题的详细解答,帮助读者加深对C语言的理解。
2. 第一章习题答案2.1 习题1题目:编写一个C语言程序,输出"Hello, World!"。
解答:```c#include <stdio.h>int main() {printf("Hello, World!");return 0;}```2.2 习题2题目:编写一个C语言程序,接收用户输入的两个整数,并输出它们的和。
解答:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和是:%d", sum);return 0;}```3. 第二章习题答案3.1 习题1题目:编写一个C语言程序,接收用户输入的一个整数,并判断它是否为偶数。
解答:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("这个数是偶数");} else {printf("这个数不是偶数");}return 0;}```3.2 习题2题目:编写一个C语言程序,接收用户输入的一个字符,并判断它是否为字母。
2014年9月二级C语言程序设计模拟(8)试题及答案单项选择题1.下列关于栈和队列的描述中,正确的是( )。
A:栈是先进先出B:队列是先进后出C:队列允许在队头删除元素D:栈在栈顶删除元素参考答案: D 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 栈实际也是线性表,只不过是一种特殊的线性表。
栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。
队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。
2.已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是( )。
A: ABCDEB: ECABDC: EACDBD: CDEAB参考答案: C 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序遍历的首个元素为E,故排除A)和D)选项。
由于中序遍历中,元素B在元素根结点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为B,故选项C)为正确选项,即该二叉树的前序遍历序列是EACDB。
3.在数据流图中,带有箭头的线段表示的是( )。
A:控制流B:数据流C:模块调用D:事件驱动详细解答: 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。
4.结构化程序设计的3种结构是( )。
A:顺序结构,分支结构,跳转结构B:顺序结构,选择结构,循环结构C:分支结构,选择结构,循环结构D:分支结构,跳转结构,循环结构参考答案: B 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。
习题答案习题1(参考答案)1.程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。
算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。
通俗地讲,就是计算机解题的步骤。
算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。
2.简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。
一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。
3.简述高级程序设计语言中面向过程与面向对象的概念。
“面向过程”是一种以过程为中心的编程思想。
首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。
一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
“面向对象”是一种以事物为中心的编程思想。
面向对象的方法主要是将事物对象化,对象包括属性与行为。
面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。
编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。
4.C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。
(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。
(3)数据类型丰富。
C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。
一、写出下列程序段的运行结果(40分)1.(4分)char a= 'F'-'E',b= '\12',c=12,d;c = a<b<c;d =--a&& b++;printf("%d,%d,%d,%d",a,b,c,d);2.(4分)int a=2, b=5;printf("a=%%d,b=\\d,");b/=a;a+=a-b;printf("%d,%d",a,b);3.(4分)char a=256;printf("%d,",a++);a=(int)(13/5+1.4);printf("%d",a);4.(4分)int p[8]={11,12,13,14,15,16,17}; int i=0,j=0;while (i++<7) (第一次循环i=1)if (p[i]%2) j+=p[i];printf("%d\n",j);5.(4分)int a=3,b=5;void exchange(int a, int b){int t;t=a; a=b; b=t;printf("%d,%d\n", a, b);} int main(){exchange(a,b);printf("%d,%d\n",a,b);return 0;}6.(4分)void f(char ch){if (ch>'A'){f(ch-1);}putchar(ch);}int main(){f('D');return 0;}7.(4分)char str[10]="123456789"; int i;for (i=9; i>0; i/=2){str[i]=0;printf("%s\n",str);}8.(4分)struct {int x; int y; int z;}a[3] ={1,2,3,4,5,6,7,8,9};printf("%d,%d\n", a[1].x+a[2].y, a[1].y+a[2].z);9.(4分)int a[8]={1,2,3,4,5,6,7,8};int i=1, *p = a;while (p<a+8){p rintf("%d ",*p);p = p+i;i*=2;} 10.(4分)FILE *fp;int d=20150111;char c1,c2;char str[4];fp=fopen("a.tmp","w");fprintf(fp,"%d", d);fclose(fp);fp=fopen("a.tmp","r");c1=fgetc(fp);fgets(str, 4, fp);c2=fgetc(fp);fscanf(fp, "%d", &d);printf("%c,%s,%c,%d",c1,str,c 2,d);二、改错题(20分)以下程序实现:从键盘输入20个学生的成绩数据,将这些数据存到磁盘文件“stu.dat”上,并求这些学生的最差成绩。
上海建桥学院2013-2014学年第二学期模块测验一(2014年4月)《程序设计基础C语言》(本卷测验时间:45分钟)本科13级计算机、数媒、软件专业班学号姓名一、单选题(每小题4分,共24分)1.以下用户标识符中,合法的是B。
A.intB.nitC.123D.a+b2.有以下程序void main(){int a=0,b=0;a=10; /*给a赋值b=20; 给b赋值 */printf("a+b=%d\n",a+b); /* 输出计算结果 */}程序运行后输出结果是____A____。
A.a+b=10B.a+b=30C.30D.出错3.若有代数式(3ae)/(bc),则下面不正确的C语言表达式是___C___。
A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*34.if(x)语句中,关系表达式x表示__D____。
A.x= =0B.x>0C.x<0D.x!=05.要求以下程序的功能是计算:s=1+1/2+1/3+…+1/10。
void main(){ int n; float s;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序运行后输出结果错误,导致错误结果的程序行是___C___。
A.s=1.0;B.for(n=10;n>1;n--)C.s=s+1/n;D.printf("%6.4f\n",s);6. 有定义语句:int x,y;。
若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是___A___。
A.11 12↙B.11,12↙C.11, 12↙D.11,↙12↙二、填空题(每空6分,共18分)1.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。
一、写出下列程序段的运行结果(40分)1.(4分)char a= 'F'-'E',b= '\12',c=12,d;c = a<b<c;d =--a&& b++;printf("%d,%d,%d,%d",a,b,c,d);2.(4分)int a=2, b=5;printf("a=%%d,b=\\d,");b/=a;a+=a-b;printf("%d,%d",a,b);3.(4分)char a=256;printf("%d,",a++);a=(int)(13/5+1.4);printf("%d",a);4.(4分)int p[8]={11,12,13,14,15,16,17}; int i=0,j=0;while (i++<7) (第一次循环i=1)if (p[i]%2) j+=p[i];printf("%d\n",j);5.(4分)int a=3,b=5;void exchange(int a, int b){int t;t=a; a=b; b=t;printf("%d,%d\n", a, b);} int main(){exchange(a,b);printf("%d,%d\n",a,b);return 0;}6.(4分)void f(char ch){if (ch>'A'){f(ch-1);}putchar(ch);}int main(){f('D');return 0;}7.(4分)char str[10]="123456789"; int i;for (i=9; i>0; i/=2){str[i]=0;printf("%s\n",str);}8.(4分)struct {int x; int y; int z;}a[3] ={1,2,3,4,5,6,7,8,9};printf("%d,%d\n", a[1].x+a[2].y, a[1].y+a[2].z);9.(4分)int a[8]={1,2,3,4,5,6,7,8};int i=1, *p = a;while (p<a+8){p rintf("%d ",*p);p = p+i;i*=2;} 10.(4分)FILE *fp;int d=20150111;char c1,c2;char str[4];fp=fopen("a.tmp","w");fprintf(fp,"%d", d);fclose(fp);fp=fopen("a.tmp","r");c1=fgetc(fp);fgets(str, 4, fp);c2=fgetc(fp);fscanf(fp, "%d", &d);printf("%c,%s,%c,%d",c1,str,c 2,d);二、改错题(20分)以下程序实现:从键盘输入20个学生的成绩数据,将这些数据存到磁盘文件“stu.dat”上,并求这些学生的最差成绩。
程序中共有11个错误,20行之前存在5个错误,指出所有错误所在位置并改正。
#include <stdio.h> /*第1行*/#define SIZE 20 /*第2行*/struct STU /*第3行*/{ /*第4行*/char name[10]; /*第5行*/double score; /*第6行*/} /*第7行*/void save(struct STU stud[SIZE]) /*第8行*/{ /*第9行*/FILE fp; /*第10行*/int i; /*第11行*/if((fp=fopen("stu.dat","rb"))==NULL) /*第12行*/{ /*第13行*/printf("cannot open file\n"); /*第14行*/return; /*第15行*/ } /*第16行*/for(i=0;i<SIZE;i++) /*第17行*/ if(fwrite(stud[i],sizeof(struct STU),1,fp)!=1) /*第18行*/ printf("file write error\n"); /*第19行*/ } /*第20行*/ int main() /*第21行*/ { /*第22行*/ struct STU stud[SIZE]; /*第23行*/ double minscore; /*第24行*/ for(i=0;i<SIZE;i++) /*第25行*/ { /*第26行*/ scanf("%s%lf",&stud[i].name,&stud[i].score); /*第27行*/ } /*第28行*/ save(struct STU); /*第29行*/ minscore = min(stud[SIZE]); /*第30行*/ printf("Minscore is :%8.2lf\n", minscore); /*第31行*/ return 0; /*第32行*/ } /*第33行*/ double min(struct STU stud[SIZE]) /*第34行*/ { /*第35行*/ double temp,t; /*第36行*/ int i; /*第37行*/ for(i=0;i<SIZE;i++) /*第38行*/ if(temp> stud[i].score) /*第39行*/ { t=temp; /*第40行*/ temp= stud[i].score; /*第41行*/stud[i].score = t; /*第42行*/ } /*第43行*/ return temp; /*第44行*/ } /*第45行*/三、编程题(40分)注意:程序中请添加必要的注释1、请编写函数rgcd,原型如下:int rgcd(int, int);功能是:实现将给定参数(假设均为正整数)按十进制形式各数码逆序分别生成新整数,并返回两个新整数的最大公约数。
例如:如果有如下函数调用: int i = rgcd(12, 72);则i 的值将是3(因为21和27的最大公约数为3)。
请注意,你可以根据需要编写其他函数并供rgcd 调用。
(12分)2、在一个学生信息管理系统中,每个学生的基本信息主要由学号、姓名、身份证号码三个部分组成。
其中,身份证号码共18位,第1-17位均由数字组成,第18位为校验位,除0-9外还可能为X ;第7-14位为出生年月日,例如19960101代表1996年1月1日;第17位(即倒数第二位)单数为男性,偶数为女性。
(1) 定义一个用于存储学生基本信息的结构体类型;(2) 编写一个函数,统计出一组学生中在起止日期范围内出生的男女生数,要求仅通过参数来传递数据,即学生信息通过结构体数组、起始日期和截至日期分别通过形如“yyyymmdd ”的字符数组传递给该函数,统计出来的男生数和女生数也通过形参来返回。
(14分)3、用链表存储一个集合。
例如集合A={1,2,3}可存储如下(^表示链表尾):函数Union(A,B)的参数A 和B 分别指向两条链表(表示两个集合),函数返回链表C ,表示A ∪B 后所得的集合。
例如,再有集合B 如下:则执行C=Union(A,B)后,由于{1,2,3}∪{1,3,4,1}={1,2,3,4}。
最后结果如下:要求:(1)给出链表结点定义(2分);(2)编写Union 函数,实现题目要求的功能(12分)。
参考答案:第一题:第二题:评分标准:找到一个错得1分,改对得1分。
共11个错,做对10个或者11个都得满分。
即允许一个错误未发现,降低难度。
答案:1. 第7行,加;2. 第10行,FILE 前加*3. 第12行,rb改为wb4. 第18行,stud[i]前加&5. 第19行后增加fclose(fp)6. 第24行定义变量int i;7. 第27行,&stud[i].name前去掉&8. 第29行,去掉struct STU 改为stud9. 第30行,去掉[size]10. 第36行,temp初始化为stud[0].score11. 函数min增加声明或者将该函数调到main之前第三题:1.评分标准:整体思路:4分;整数逆转:4分;最大公约数:4分(不采用辗转相除法的解法也可以)int gcd(int x, int y){int t;if(x > y) {t = x;x = y;y = t;}while(y % x != 0) {t = y % x;y = x;x = t;}return x;}int rev(int x){int y = 0;while (x) {y *= 10;y = y + x % 10;x /= 10;}return y;}int rgcd(int x, int y){return gcd(rev(x), rev(y)); }2.评分标准:3.评分标准:#include<stdio.h> #include<stdlib.h>#define LEN sizeof(struct num) struct num{int x;struct num*next;};struct num* creat(){int a[100],i,n;struct num *head=NULL,*p;scanf("%d",&n);//确定数组大小 for(i=0; i<n; i++)scanf("%d",&a[i]);for(i=0; i<n; i++){p=(struct num*)malloc(LEN);p->x=a[i];p->next=head;head=p;}return head;};int main(){int n,m,i,j;struct num *head1,*head2,*p1,*p2,*p3,*p4; p1=head1=creat();p2=head2=creat();scanf("%d%d",&n,&m);for(i=0; i<n; i++){p2=head2;for(j=0; j<m; j++){if(p2->x==p1->x){if(p2==head2) head2=p2->next; else{p3->next=p2->next;free(p2);}m--;}p3=p2;p2=p2->next;}p4=p1;p1=p1->next;}p4->next=head2;p1=head1;while(p1){printf("%d ",p1->x);p1=p1->next;}return 0; }。