2014C语言答案大全
- 格式:docx
- 大小:79.67 KB
- 文档页数:14
一、改错题1.p=malloc(sizeof(int)*10); q=malloc(sizeof(int)*20);p=q; free(p); free(q);Free(q) 错了,因为p=q后,就指向同一块地址了。
内存泄露(p分配了空间没释放)==============我的一:由于malloc函数返回值为void *,所以还是应该强制转换为(int *),虽然我在运行时没有错,但一般都要指定指针类型。
二:由于p=q,两个指针指向同一个地址,free(p)之后,则该内存空间被释放,则q此时就没有具体指向一个地址,free(q)就会出错。
一般我们常说的内存泄露是指堆内存泄露,堆内存是指程序从对中分配的,大小任意的(内存块的大小可以再程序运行期确定),使用完后必须先释放内存。
2.和去年一样 void swap(char *a,char *b){char *temp; *temp=*a;*a=*b;*b=*temp;}1.函数类型大小写错误。
2. 交换形参指针地址不能修改实参的值。
正确修改法:见下(解释)实参是str1和str2的地址,函数里改变了*p,*q的值,也就是str1和str2中存放的字符串的地址做了改变。
所以str1里存放的str2所指字符串的地址3. for(num=N;arr[num]!=item;num--);printf("%d",num);问异常情况结果可能是输出一个负值,因为item是个变量,分配了存储空间, arr[-2]也是可以输出的,因为arr 只是个地址,经过测试会找到item,printf他的地址=========我的首先如果item在数组中,则不会出错,可以输出所在的位置。
如果不在,则num最后会变为负值,由于C 语言没有自动对数组进行下标检查,则会产生数组下标越界,而且会继续运行,出现死循环。
如果编译器检查,则会产生数组下标越界出错。
二、简答题1. if(b) s1 else s2; 请问是什么结构,并用伪代码写出来(注明条件跳转和强制跳转)选择结构。
一、写出下列程序段的运行结果(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”上,并求这些学生的最差成绩。
2014计算机二级c语言试题及答案一、单项选择题(每题1分,共40分)1. C语言中,用于定义变量的关键字是:A. intB. floatC. doubleD. char答案:A2. 在C语言中,以下哪个选项是正确的字符串定义方式?A. char str[] = "Hello";B. char str[6] = "Hello";C. char str[] = 'Hello';D. char str[6] = 'Hello';答案:A3. C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B4. 在C语言中,以下哪个选项是正确的数组定义方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4};5. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strcat()C. strcmp()D. strlen()答案:A6. 在C语言中,以下哪个选项是正确的函数定义?A. int function(int a, int b) { return a + b; }B. int function(int a, int b) = { return a + b; }C. int function(int a, int b) { return a + b; }D. int function(int a, int b) { return a + b; }答案:A7. C语言中,以下哪个关键字用于定义函数?A. defineB. defC. functionD. void答案:D8. 在C语言中,以下哪个选项是正确的循环结构?A. forB. whileC. do-whileD. All of the above答案:D9. C语言中,以下哪个选项是正确的条件语句?B. elseC. switchD. All of the above答案:D10. 在C语言中,以下哪个选项是正确的指针定义方式?A. int *ptr;B. int ptr*;C. *int ptr;D. int * ptr;答案:A二、填空题(每题2分,共20分)1. C语言中,用于声明一个整型变量的关键字是________。
2014年C语言答案(伊诺版)好吧,我又来了= =。
本来想着14年网上是有答案就不传上来了,但发现有几题差异较大,传上来供大家参考参考,题源为《2014计算机C语言笔试题目(回忆版by松)》。
欢迎大家指出错误!——伊诺2015年3月16日一、指出程序中的错误,说明原因并修正。
1、Int *p,*q;p=malloc(sizeof(int)*20);q=malloc(sizeof(int)*10);…q=p;…free(p);free(q);答:由于free(p);已经将p所指内存区域释放掉,又q和p都指向同个内存区域,之后free(q);试图释放一个已经被释放的内存区域,会使程序崩溃。
此外原来q指向的内存区域由于指针丢失,会导致内存泄露。
修正方法:删除语句q=p;2、交换两个字符串Void swap(char *p, char *q){Char *temp;*temp=*p;*p=*q;*q=*temp;}答:*temp、*p、*q都是指向的一个字符,所以该函数只实现了交换两个字符串的首字符而已。
修正:void swap(char *p, char *q){char temp[100];strcpy(temp, p);strcpy(p, q);strcpy(q, temp);}此外:由于题目要求的是字符数组,如果是字符串,可以用以下解法:void swap(char **p, char **q){char *temp;temp=*p;*p=*q;*q=temp;int main(){char *a="123";char *b="456";swap(&a, &b);printf("%s\n%s\n", a, b);return 0;}二、简答题1、arr为整型数组,N为数组长度-1,enumb为整型变量,下列函数负责找出arr数组中等于enumb的元素所在位置。
NOIP2014(第二十届)初赛普及组C语言试题及答案第二十届全国青少年信息学奥林匹克联赛初赛普及组C语言试题竞赛时间:2014年10月12日14:30~16:30 选手注意:l 试题纸共有8页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
l 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1. 以下哪个是面向对象的高级语言()。
A. 汇编语言B. C++C. FortranD. Basic 2. 1TB代表的字节数量是()。
A. 2的10次方B. 2的20次方C. 2的30次方D. 2的40次方3. 二进制数__和__的和是()。
A. __B. __0C. __D. __ 4. 以下哪一种设备属于输出设备()。
A. 扫描仪B. 键盘C. 鼠标D. 打印机5. 下列对操作系统功能的描述最为完整的是()。
A. 负责外设与主机之间的信息交换B. 负责诊断机器的故障 C. 控制和管理计算机系统的各种硬件和软件资源的使用 D. 将源程序编译成目标程序6. CPU、存储器、I/O设备是通过()连接起来的。
A. 接口B. 总线C. 控制线D. 系统文件7. 断电后会丢失数据的存储器是()。
A. RAMB. ROMC. 硬盘D. 光盘8. 以下哪一种是属于电子邮件收发的协议()。
A. SMTPB. UDPC. P2PD. FTP 9. 下列选项中不属于图像格式的是()。
A. JPEG格式B. TXT格式C. GIF格式D. PNG格式10. 链表不具有的特点是()。
A. 不必事先估计存储空间B. 可随机访问任一元素C. 插入删除不需要移动元素D. 所需空间与线性表长度成正比11. 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。
A. 296B. 133C. 256D. 199 12. 下列几个32位IP地址中,书写错误的是()。
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年腾讯校园招聘C语言笔试题含答案1.输入一个链表的头结点,从尾到头反过来输出每个结点的值。
链表结点定义如下:struct ListNode{int m_nKey;ListNode*m_pNext;};A:递归方法逆序输出,栈方法逆序输出。
(任意实现一种既可)void PrintListUsingRecursicve(pListNode head){if(head!=NULL){PrintListUsingRecursicve(head->m_pNext);printf("%d/n",head->m_nKey);}}void PrintListUsingStack(pListNode head){Stack s;s.top=0;pListNode p=head;do{push(&s,p->m_nKey);p=p->m_pNext;}while(p!=NULL);while(!IsEmpty(&s)){printf("%d/n",pop(&s));}}2.二元树的深度题目:输入一棵二元树的根结点,求该树的深度。
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define MAXLEN100#define MAXNUM10typedef int Tree[MAXLEN];Tree bt;int GetDeep(int i){int l=0,r=0;if(bt[i*2]!=-1){l=GetDeep(i*2)+1;}if(bt[i*2+1]!=-1){r=GetDeep(i*2+1)+1;}return l>r?l:r;}int main(){int i=0;memset(bt,-1,sizeof(bt));for(i=1;i<=MAXNUM;i++)bt[i]=i;bt[(i-1)*2]=i*2;printf("%d/n",GetDeep(1));return0;}3.整数的二进制表示中1的个数题目:输入一个整数,求该整数的二进制表达中有多少个1。
期末复习一、题型:共有5大题:1、单项选择题(每小题1.5分,小计30分)2、填空题(每空2分,小计20分)3、写出下列程序的运行结果(每小题5分,小计20分)4、程序填空(每空2分,小计10分)5、程序设计题(有3小题,其中:第1、2小题各6分,第3小题8分,小计20分)二、考试形式、时间、涉及内容考试形式为闭卷,时间为90分钟涉及内容:各讲内容均有涉及三、样题(与考题无必然联系,仅供参考)(1)单选题:1、C语言中,运算对象必须是整型的运算符是【】A. /B.%C. ++D. !2、下列标识符中,不合法的是【】A. x2B. sizeofC. _123D. char23、若x, i, j和k都是int型变量,则计算表达式x=(i=4, j=16, k=32)后,x的值为【】A. 4B. 16C. 32D. 524、设有数组定义:char a[ ]="China";则数组a所占的空间为【】字节A. 4B. 5C. 6D. 75、设d是double型变量,若要从键盘输入数据给d,正确的语句是【】A. scanf(d);B. scanf(" %f", d) ;C. scanf(" %f", &d) ;D. scanf(" %lf", &d) ;6、以下程序段的输出结果是【】int x=3;do{printf("%d",x-=2);} while(!(--x));A. 1-2B. 30C. 1D. 无输出7、下列程序段执行之后,输出的结果是【】double x=4,y;if (x<0)y=0;else if(x<10)y=1.0/x;elsey=1;printf("%.2f\n",y);A. 0.25B. 0.50C. 0.75D. 1.008、若已定义: int a[ ]={0, 11, 22, 33, 44, 55, 66, 77, 88, 99}, *p=a,i; 其中0≤i≤9, 则对a数组元素不正确的引用是【】A. p[i]B. *(&a[i]) //a[i]C. a[10]D. a[p-a]//a[0]9、现有定义:int *p[3]; 下列关于标识符p的描述中,正确的是【】A.定义不合法B. 是一个指向整型变量的指针C. 是一个指针,它指向一个具有3个元素的一维数组D. 是一个指针数组名,每个元素是一个指向整型变量的指针10、若有如下定义,则对ex中的a成员的正确引用是【】struct sk { int a; float b;} ex, *p = &ex;A. (*p).ex.aB. p->aC. p->ex.aD. p.ex.a11、判断字符串s1和s2是否相等的表达式是【】A. s1=s2B. s1==s2C. strcpy(s1,s2)==0D.strcmp(s1,s2)==012、数字11与13进行“位或”运算(即11|13)的结果是【】A. 1B. 11C. 13D. 15(2)填空题1、一个C语言程序的执行是从main 函数开始的。
《C语言程序设计基础》教材参考答案包括各单元:一.随堂练习二.单元总结三.单元练习四.实训指导单元一程序设计宏观认识一.随堂练习【随堂练习1-1】1.根据上述示例模仿编程,输入正方形的边长,计算其面积。
#include <stdio.h>void main( ){ int a,s; //数据准备,边长a,面积sprintf("请输入正方形的边长:");scanf("%d",&a); //数据输入s=a*a; //数据计算printf("该正方形的面积为:%d.\n",s);}【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。
答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。
答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。
【随堂练习1-3】1.在VC++6.0环境中完成【例1.2】程序开发过程。
(略)2.查阅【例1.2】所对应的工程文件夹,了解相关文件的含义。
工程文件夹中:.CPP:用C/C++语言编写的源代码文件。
.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。
项目文件,文本格式。
.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。
2014《C语言》模拟试题及答案(经典)一、单选题1. C语言中基本数据类型有。
CA)整型、实型、逻辑型B)整型、字符型、逻辑型C)整型、实型、字符型D)整型、实型、字符型、逻辑型2. 在C语言中,数字O29是一个。
AA)八进制数 B)十进制数 C)十六进制数 D)非法数3. 在以下关于C语言的不严格的叙述中,错误的说法是。
AA)在标识符中,大写字母和小些字母的意义相同B)有些不同类型的变量可以在一个表达式中运算C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型D)同一个运算符号在不同的场合可以有不同的含义4.下列关于C语言用户标识符的叙述中正确的是。
BA)用户标识符中可以出现下划线和中划线(减号)B)用户标识符中不可以出现中划线,但可以出现下划线C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头【解析】考查C语言中的用户标识符规则,在C语言程序设计中,用户标识符是由字母、数字和下划线组成的,并且第一个字符必须是字母或下划线。
5. 结构化程序设计方法中有三种基本控制结构,以下不正确的是。
DA) 顺序结构B) 选择结构C) 循环结构 D) 数组结构6. C语言提供的合法关键字是。
DA) swicth B) cha C) Case D) default7.以下非法的赋值语句是CA) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0;【解析】对表达式不能进行自加自减运算。
8.在以下一组运算符中,优先级最高的运算符是。
A) <= B) = C) % D) &&【解析】C语言常用的积累运算符的优先级关系是:逻辑非“!”>算术运算符>关系运算符>逻辑与“&&”>逻辑或“||”>赋值运算符>逗号运算符。
由于C选项为求余运算符,所以本题正确答案为C选项。
练习题1参考答案一、选择题二、填空题1.程序设计语言主要分为以下三类:机器语言、汇编语言和高级语言。
2.在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。
3.C程序开发过程的一般步骤为:源程序的编辑、编译、连接和运行。
4. C程序源文件的扩展名为.c ,编译成功后产生的文件扩展名为.obj ,连接成功后产生文件扩展名为.exe 。
三、应用题略练习题2参考答案一、选择题1.通常一个字节包含8 个二进制位。
在一个字节中能存放的最大(十进制)整数是255(无符号),127(带符号),最小(十进制)整数是-128 ,它的二进制数的形式是10000000 。
2.在C语言中,十进制数30的八进制数表示形式是 036 ,十六进制数表示形式是 0x1e ,在内存中它的二进制数表示形式是 0000000000011110 。
3.条件“20<x<30或x<-100”的C语言表达式是 x>20&&x<30||x<-100 。
4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b 值为 4 ,c值为 2 。
5.已知int y; float x=-3; ,执行语句y=x%2; 后,变量y的值为语句出错。
6.字符串"ab\034\\\x79"的长度为 5 。
7.在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为4 ;一个double型数据在内存中所占的字节数为 8 。
8.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为 1 。
9.表达式pow(2.8,sqrt(double(x)))值的数据类型为 double 。
10.若a是int型变量,则表达式(a=4*5, a*2), a+6的值为 26 。
11.若a是int型变量,则执行表达式a=25/3%3后a的值为 2 。
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语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。
2014计算机二级c语言试题及答案一、选择题1. 在C语言中,下列哪个选项是合法的标识符?A. 2variableB. intC. _123D. variable_2答案:D2. 下列关于C语言中数组的描述,错误的是?A. 数组可以存储多个相同类型的元素B. 数组的大小在编译时确定C. 数组的索引从0开始D. 数组可以动态分配大小答案:D3. 在C语言中,下列哪个关键字用于定义函数?A. intB. structC. voidD. return答案:C4. 下列关于指针的描述,正确的是?A. 指针可以存储变量的地址B. 指针可以存储变量的值C. 指针可以存储函数的地址D. 所有选项都是正确的答案:D二、填空题1. 在C语言中,用于定义一个整型变量的关键字是____。
答案:int2. 若有数组定义:int arr[5] = {1, 2, 3, 4, 5}; 则arr[2]的值是____。
答案:33. 在C语言中,用于声明一个指针变量的语法是____。
答案:类型名 *指针变量名4. 若定义了一个函数void func(void),那么调用该函数时,应该使用的语法是____。
答案:func()三、编程题1. 编写一个C语言程序,实现输入一个整数,输出其绝对值。
```c#include <stdio.h>#include <stdlib.h>int main() {int num, abs_num;printf("请输入一个整数:");scanf("%d", &num);abs_num = (num < 0) ? -num : num;printf("该整数的绝对值是:%d\n", abs_num);return 0;}```2. 编写一个C语言函数,实现两个整数的交换。
```c#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int x = 10, y = 20;printf("交换前:x = %d, y = %d\n", x, y); swap(&x, &y);printf("交换后:x = %d, y = %d\n", x, y); return 0;}```。
2014 年 3 月计算机二级 C 语言真题及答案一、选择题二、(1)下列关于栈叙述正确的是三、A)栈顶元素最先能被删除四、B)栈顶元素最后才能被删除五、C)栈底元素永远不能被删除?六、D)以上三种说法都不对七、(2)下列叙述中正确的是八、A)有一个以上根结点的数据结构不一定是非线性结构九、B)只有一个根结点的数据结构不一定是线性结构十、C)循环链表是非线性结构十^一、D)双向链表是非线性结构四十一、 D)m:n 联系四十二、 (9)有三个关系 R 、 S 和 T 如下: 四十三、则由关系R 和S 得到关系T 的操作是 四十四、A) 自然连接? 四十五、B) 交? 四十六、C)除? 四十七、D) 并 四十八、(10)定义无符号整数类为 Ulnt,下面可以作为类Ulnt 实例化值的是 四十九、A)-369 ? 五十、 B)369?五十一、C)? 五十二、 D)整数集合{123,4,5} (11) 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的 是 十二、 (3)某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为 结点在第 1 层)十三、 A)3?十四、 B)4?十五、 C)6?十六、 D)7十七、 (4)在软件开发中,需求分析阶段产生的主要文档是十八、 A )软件集成测试计划?十九、 B )软件详细设计说明书二十、 C )用户手册?二十一、D )软件需求规格说明书 二十二、(5)结构化程序所要求的基本结构不包括 二十三、A )顺序结构? 二十四、B)GOT 0跳转 二十五、C )选择(分支)结构? 二十六、D )重复(循环)结构 二十七、(6)下面描述中错误的是 二十八、 A )系统总体结构图支持软件系统的详细设计二十九、B )软件设计是将软件需求转换为软件表示的过程 三十、C )数据结构与数据库设计是软件设计的任务之一三十一、D )PAD 图是软件详细设计的表示工具 三十二、(7)负责数据库中查询操作的数据库语言是 三十三、A )数据定义语言 三十四、B )数据管理语言 三十五、C )数据操纵语言 三十六、D )数据控制语言三十七、(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。
2014计算机二级c语言试题及答案试题一:编写一个C语言程序,实现输入两个整数,将它们的值互换后输出。
解答一:```c#include <stdio.h>int main() {int num1, num2, temp;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);printf("交换前的值:num1 = %d, num2 = %d\n", num1, num2);temp = num1;num1 = num2;num2 = temp;printf("交换后的值:num1 = %d, num2 = %d\n", num1, num2);return 0;}```试题二:编写一个C语言程序,实现求一个整数数组中的最大值。
解答二:```c#include <stdio.h>int findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {1, 5, 3, 9, 2};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("数组中的最大值为:%d\n", max);return 0;}```试题三:编写一个C语言程序,实现输入一个正整数n,计算并输出1到n 之间所有奇数的和。
(1)公式1 程序填空给定程序中,函数fun的功能是计算下式s=3/22-5/42+7/62-…+(-1)n-1(2×n-1)/(2×n)2直到︱(2×n-1)/(2×n2)︱≤10-3并把计算结果作为函数值返回,例如:若形参e的值为-le-3,函数的返回值为0.551690。
第1处x=3.0/4;第2处while(x>e)第3处x=(2*i+1)/(t*t);2.程序修改/**found**/double fun(int n)/**found**/s=s+(double)a/b;3.程序设计fun(int a[][M]){int i,j,max=a[0][0]; for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])max=a[i][j];return max;}1.程序填空给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。
例如:当形参n的值为10 的时,函数返回:9.6125588。
第一处s=0;第二处for(i=1;i<=n;i++)第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t);2.程序修改/**found**/for(i=0;str[i];i++)/**found**/if(substr*k+1+==’\0’)3.程序设计double fun(doubleeps){ double s=1,t=1./3;int n=1;while(t>=eps){s+=t;n++;t=t*n/(2.0*n+1);}return(s*2.0);}1程序填空给定程序中,函数fun的功能是:计算下式前5项的和作为函数值返回。
S=1×3/22-3×5/42+5×7/62-……+(-1)n-1(2×n-1)×(2×n+1)/(2×n)2例如,当形参n的值为10时,函数返回:-0.204491。
第1处k=1;第2处t=2*j;第3处k=k*(-1);2.程序修改/**found**/K++;/**found**/if (m==k)3 程序设计void fun (int a[], int n,int *max, int *d){int i;*max=a[0];*d=0;for (i=1; i<n;i++)if (*max<a[ i ]){ *max=a[ i ];*d=i;}}1.程序填空计算下式s=1/(2*2)+3/(4*4)+5/(6*6)+....(2n-1)/(2n*2n)..并把计算结果作为函数值返回。
填空:(1)0(2)i++(3)2.0*i改错:(1)void fun(char *s,char *t)(2)t[2*d]='\0';编程:int i,j=o;for(i=1;i<strlen(s);i+=2)if(i%2==0&&s[i]%2)t[j++]=s[i];t[j]='\0';1.程序填空函数fun的功能是计算f(x)=1+x-2/2!+3/3!-4/4!+……的前n项和。
若x=2.5,n=15时,函数值为1.917914。
第一处f=1;第二处t*=(-1)*x/i;第三处f+=t;2.程序修改/**found**/for(i=1;i<=3;i++)/**found**/if(k>=0&&k<=6)3.程序设计double fun(int n){double s=1’long t=1;int i;for(i=1;i<=n;i++){t=t*i;s+=1.0/t;}return s;}1.程序填空函数fun的功能是:计算f(x)=1+x-x2∕2!+x3∕3!-X4/4! 直到∣xn/n!∣<10-6若x=2.5,函数值为:1.917915。
第1处t=x第2处t*=(-1.0)*x/n;第3处while(fabs(t)>=1e-6)2.程序修改/**found**/for(i=1;i<=y;i++)/**found**/t=t%1000;3程序设计double fun(double x){int n=1;double sn=1;double xn=1,xn1=0;while(fabs(xn-xn1)>=0.000001){xn=xn*x*(0.5-n+1)/n;n+=1;sn+=xn;}return(sn);}1.程序填空给定程序中,函数fun的功能是:计算f(x)=1+x+x2/+…+xn/n!的前n项。
若x=2.5,函数值为:12.182340。
第1 处t=1 ;第2 处for(i=1 ;i<n ;i++)第3处t*=x/ i ;2.程序修改/**found**/k= i ;/**found**/c=k%10;3.程序设计double fun (double x[10]){Int i;double avg =0. 0,sum =0. 0, abs =0. 0,fc;for (i=0; i<10; i ++)sum +=x[ i ];avg =sum/10;for (i=0; i<10; i++)abs +=(x[i]- avg)*(x [i ]-avg );fc =sqrt (abs/10);return fc ; }1.程序填空给定程序中,函数fun的功能是:f(x)=1+x+x2/+…+xn/n!直到|x/n!|<10-6,若x=2.5,函数值为:12.182494。
第1处f=1. 0+x ;第2处t*=x/n第3处f+=t ;2.程序修改/**found**/d=1 ; s=0 ;/**found**/d=d/10 ;3.程序设计double fun (doublex[9]){int i ;double avg=0. 0,sum=0. 0 ;for (i=0 ; i<8 ; i++){avg =( x [i] + x[i+1])/2;sum += sqrt ( avg);} rturn sum ;}(2)素数1.程序填空给定程序中,函数fun的功能是:统计所有<=n(n>2)的素数的个数,素数的个数作为函数值返回。
第1处for ( j=2;j<i ;j++)第2处if (i%j==0)第3处if (j>=i)2.程序修改/**found**/sum =0; j=0;/**found**/if (sum %4==2)3 程序设计double fun (int n) {int i ;double sum=0.0;if (n>1&&n<=100) { for ( i=1 ; i<=n; i++) sum +=1. 0/(2*i - 1)- 1. 0/(2* i);}return sum;}1.程序填空用筛选法可得到2—n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数,依此类推,直到所找的下一个数等于n为止。
这样会得到一个序列:2、3、5、7、11、13、17、19、23……函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。
第一处for(j=a[i]*2;j<=n;j+=a[i])第二处while(a[i]==0)第三处if(a[i]!=0)2.程序修改/**found**/y=1;/**foune**/d=a-i;3.程序设计double fun(int n){int i;doublesum=0.0;for(i=1;i<n;i++)if(i%5==0||i%9==0)sum+=1.0/i;return sum;}N×N矩阵1 程序填空N×N矩阵,根据给定的m(m<=N)填空:(1) i++ (2)m (3) m改错:(1)while((high>=2)&&(n<10)) (2) 缺分号编程:floatx1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);return x1;1. 程序填空给定程序中,函数fun的功能是:有N*N矩阵,将矩阵的外围元素顺时针旋转。
操作的顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为第一行,临时数组中和元素成为最后一列。
第一处t[0][N-j-1]=t[j][0];第二处for(j=N-1;j>=0;j--)第三处t[j][N-1]=r[j];2. 程序修改/**found**/double f(double x)/**found**/return s;3. 程序设计double fun(int m){double s=0.0;int i;for(i=0;i<=m;i++)s+=log(1.0*i);s=sqrt(s);return s;}1程序填空给定程序中,函数fun的功能是:将N×N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。
例如:若N=3有下列矩阵:1 2 34 5 67 8 9交换后:3 2 14 5 69 8 7第1处void fun (int t[] [N], int n)第2处for (i=0; i<n;i++)第3处t [i] [n-i-1]=s;2 程序修改/**found**/fun (int a [], int m)/**found**/else if (m>a [mid])3 程序设计void fun (char*a,char *p){ char *q=a;intj=0;while (*q&&q<p){if (*q!='*')a[j++]=*q;q++; }while (*p) a [j++]= *p++;a [j]=0; }1 程序填空给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素来。
第1处void fun (int) (*t)[N]第2处t[i][j]=t[i][j]+t[j][i];第3处t[j][i]=0;2程序修改/**found**/#define FU(m,n)((m)/(n))/**found**/return (value); }3程序设计void fun (char *a){ int j=0;char *p=a;while (*p=='*')p++;while (*p){a[j++]=*p;p++; }a[j]=0; }1. 程序填空给定程序中,函数fun的功能是:计算N*N矩阵的主对角线元素和方向对角线元素之和,并作为函数值返回。