C语言程序设计期末试题含答案

上传人:人*** 文档编号:512594836 上传时间:2023-08-17 格式:DOCX 页数:11 大小:69.66KB
返回 下载 相关 举报
C语言程序设计期末试题含答案_第1页
第1页 / 共11页
C语言程序设计期末试题含答案_第2页
第2页 / 共11页
C语言程序设计期末试题含答案_第3页
第3页 / 共11页
C语言程序设计期末试题含答案_第4页
第4页 / 共11页
C语言程序设计期末试题含答案_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C语言程序设计期末试题含答案》由会员分享,可在线阅读,更多相关《C语言程序设计期末试题含答案(11页珍藏版)》请在金锄头文库上搜索。

1、厦门大学C语言程序设计课程试卷信息科学与技术学院系2013年级专业主考教师:试卷类型:(A卷)已经反复修改调试过了,应该没问题了。如果对答案有什么疑问可以直接私戳我qq553915228李添锐一、写出下列程序段的运行结果(1. (4分)inti=1,j=2,k=4;printf(%f,”,i-(float)(j/k);printf(%d,j38)break;while(i=3);printf(%dn,j);输出:4,9(此处需要换行即n)40分)4. (4分)intp7=11,13,15,17,18,20,23,i=0,k=0;for(;pi%2;)switch(pi%5)4,2case1:k

2、+=pi+;breakcase3:k+=pi;default:i+;printf(%d,%d,i,k);输出:4,245. (4分)chars尸1234”,*p;for(p=s+3;ps;p-)printf(%s,p);输出:4,34,234,6. (4分)intf()staticintj=1;intk=1;return(+j)+(+k);intmain()int i;for (i=0; i3; i+) printf(%d, f();return 0;输出 :4,5,6,7 .(4 分)void fun(int i)if (i)fun(i-3); printf(%d,i);int main()

3、fun(9);return 0;输出 :3,6,9,8 .(4 分)unionstruct int a,b,c; s;int a3;u;int main()u.s.a=0; u.s.b=1; u.s.c=2;改错题( 20 分)*(u.a+1)=3;u.a2=4;printf(%d,%d,u.s.a,u.s.b);return0;输出0,39 .(4分)ints33=1,2,3,4,5,6,7,8,9;intsum;sum=*(s0)+*(s1+1)+*(s2+2);printf(%d,sum);return0;输出:1510 .(4分)FILE*fp;inte;longlen;charc;f

4、p=fopen(pi.tmp,w);fputs(3.1415926,fp);fclose(fp);fp=fopen(pi.tmp,r);fscanf(fp,%d%c,&e,&c);len=ftell(fp);fseek(fp,-1L,SEEK_END);len=ftell(fp)-len;printf(%ld,len);输出:6已知数据文件“c:data.dat”以二进制方式存有300个整数,函数readDat()把这些数存入数组a中,函数fun()的功能是:依次从数组a中取出一个数,若该数连续大于它之前的五个数且该数是偶数(若之前不满五个数,则不统计),统计满足此条件的个数cnt,并把这些数

5、按从大到小的顺序存入数组b中。程序中包含若干个错误,请指出程序中的错误并更正。提示:程序30行之前存在8 个错误。#include /* 第 1 行*/#define MAX 300;int aMAX, bMAX, cnt ; void fun( )int I, j, flag;for(I=5;IMAX;I+)for(j=I-5;jaj&aI%2=0)flag=1;/*第10行*/&应该双写elseflag=0;continue;if(flag=1) bcnt+=aI;for(I=0;Icnt-1;i+)for(j=I+1;jbj)bI=bj;flag=bI;bj=flag;int main(

6、)int i ;readDat( );fun( );printf(cnt=%dn, cnt);for(i = 1 ; i 改成/*第21行*/*第22行*/将22行与23行对调/*第23行*/*第24行*/*第25行*/*第26行*/*第27行*/*第28行*/*第29行*/加一个函数声明voidreadDat();/*第30行*/*第31行*/*第32行*/*第33行*/i=0/*第34行*/printf(n);/*第35行*/return0;/*第36行*/*第37行*/voidreadDat()/*第38行*/*第39行*/inti;/*第40行*/FILE*fp;/*第41行*/if(

7、fp=fopen(c:data.datrb”)=NULL)/*第42行*/c:data.dat注意双写/*第43行*/printf(cantopenfile!n);/*第44行*/exit(0);/*第45行*/*第46行*/for(i=0;iMAX;i+)/*第47行*/fscanf(fp,%d”,&ai);/*第48行*/加上fclose(fp);/*第49行*/本题20分应该是有10处错三、编程题(40分)注意:程序中请添加必要的注释1、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四

8、位交换,第二位和第三位交换。例如:输入2468,输出3197(12分)解:本题较简单,按照题目所述编写代码即可#includeintmain()chara4;/因为是直接输入2468输出3197所以我们要用字符串inti;scanf(%s”,a);for(i=0;i4;i+)ai-=48;/将字符转成相应的数字ai+=5;ai%=10;i=a0;a0=a3;a3=i;i=a1;a1=a2;a2=i;for(i=0;i4;i+)printf(%d,ai);return0;2、输入一个字符串,内有数字和非数字字符。请编写一个函数找出其中连续最长的数字串,返回找到的连续最长数字串及其长度。若连续最长

9、数字串有多个,则返回最后一个串。例如,输入“abcd12845ed125ss123?456789返回“456789”及6;又如,输入“abcd12345ss5432l返回“54321”和5。要求:所编写的函数中应采用指针法来引用输入字符串中的元素。(14分)解:本题难度适中,需要用到字符串转成数字等知识,最后那个要求用指针简直就是坑爹#include#includeintmain()chara1000,b10100=0,*p,*q;inti,j,k=0,l=0,m,n,maxl=0,maxnum=0;gets(a);n=strlen(a);p=a;/以下的所有*(p+x)指的都是ax(坑爹的指

10、针=)for(i=0;i=48&*(p+i)=48&*(p+j)=maxl)(maxl=l;maxnum=k;k+;i=i+l;l=0;m=strlen(bmaxnum);printf(%s”,bmaxnum);printf(%d”,m);return0;3、用链表存储一个八进制数(类型为unsignedlong),(520)8可存储为如下链表(人表示链表尾):520A函数Add(A,B)的参数所口的别指向两条链表(表示两个八进制数),函数返回链表C,表示劭口上B后所得的八进制数。例如,再有B如下:B则执行C=Add(A,B)后,由于(520)8+(1314)8=(2034)8,最后结果如下:

11、C4A要求:(1)给出链表结点定义(2分);(2)编写Add数,实现题目要求的功能(12分)。解:本题考指针引用链表,较难,笔者用的方法是双向链表法#include#include#definelensizeof(structp)structpinta;structp*next;structp*before;structp*creat()structp*p1,*p2,*last=NULL;intn=0;chara10;p1=p2=(structp*)malloc(len);scanf(%s,a);p1-a=an-48;p1-before=NULL;while(an!=0)n+;if(n1)p2-next=p1;p2=p1;p1=(structp*)malloc(len);p1-a=an-48;p1-before=p2;p2-next=NULL;last=p2;returnlast;structp*Add(structp*p,structp*q)(structp*p1,*p2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号