




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序填空题一 1. 下面C语言程序将两个递增有序的数值a和b合并一个数组c,并保持递增次序,最后输出数组c.#include #define M6#define N5main( )int aM=1,3,5,7,9,11 bN=2,4,6,8,10int cM+Nint i ,j, k;i=j=k=0while( 1 )if aibjck+=ai+;else ck+=bj+;while( 2 )ck+=ai+;while(jN)ck+=( 3 )for(k=0;k( 4 );k+)printf(%dxt,ck; )其中(1)(2)(3)(4)处分别填一数据,使程序达到其功能。答案: 1:iM&jN2:iM;3:bj+;4:M+N2下面h函数的功能是计算如下数学函数H的值。请填空。double fgh(double(*f)(double a),double(* g)(double b),double x,double y)return(【1】);double h(double a,double b)return(fgh(sin,cos,a,b)* fgh(【2】); 解:(1)(*f)(xy)/(*g)(yx)(2)cos,sin,a,b 解析本题考察的是函数的声明。要填写的两个空都出现在return语句中,所以要仔细分析函数的返回值。本题的第二个空相对要容易一些,只要根据题干和乘号前面的调用语句对比一下即可得到调用语句的四个参数。第一个空相对要难一些,函数fgh定义时用到了函数指针(*f)和(*g)是为了增加函数的灵活性。根据函数h的定义以及题干要求,可以看出函数fgh应该表示的是乘号两边的某一项。(*f)和(*g)用来表示sin或cos,参数x和y的加减法运算作为sin或cos函数的参数,故应填写(*f)(x+y)/ (*g)(yx)。 3下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在_处填入正确内容。AafcBdebcgfDmain()static char ss43A,a,f,c,B,d,e,b,C,g,f,D;int x,y,z;for(x0;【1】;x)for(y0;【2】;y) zxy;if(【3】)printf(cn,ssxy); 解:(1)x4(2)y3(3)z3 解析本题应用穷举法找到满足要求的值。第一个空:变量x为行数所以是x4;第二个空:变量y为列数所以是y3;第三个空:判断xy是否为3所以是z3。 4下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在_处填入正确内容。AafcBdebcgfDmain()static char ss43A,a,f,c,B,d,e,b,C,g,f,D;int x,y,z;for(x0;【1】;x)for(y0;【2】;y) zxy;if(【3】)printf(cn,ssxy); 解:(1)x4(2)y3(3)z3 解析本题应用穷举法找到满足要求的值。第一个空:变量x为行数所以是x4;第二个空:变量y为列数所以是y3;第三个空:判断xy是否为3所以是z3。 程序填空题二【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#includemain()inta,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);a=;b=;a=;printf(a=%d,b=%dn,a,b);答案:a+ba-ba-b或者abbaab【3.2】下面程序的功能是根据近似公式:2/61/12+1/22+1/32+1/n2,求值。#include/*数学函数数包含在头函数math.h中*/doublepi(longn)doubles=0.0;longi;for(i=1;i=n;i+)s=s+;return();答案:1.0/(float)(i*i)sqrt(6*s)/*sqrt()是求平方根函数*/【3.3】下面程序的功能是计算1-3+5-7+-99+101的值。main()inti,t=1,s=0;for(i=1;i0?-1:1【3.4】下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。main()floatx,amax,amin;scanf(%f,&x);amax=x;amin=x;while()if(xamax)amax=x;if()amin=x;scanf(%f,&x);printf(namax=%fnamin=%fn,amax,amin);答案:x=0xamin【3.5】下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。fun(intx,intb)intk=0,r;dor=x%;bk+=r;x/=;while(x);答案:22【3.6】下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。main()inti,j;for(i=0;i+)j=i*10+6;if()countinue;printf(%d,j);答案:i=9j%3!=0说明:100以内的个位数为6的数有10个,即6、16、26、36、46、56、66、76、86、96【3.7】下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。hcf(intm,intn)intr;if(mn)r=m;n=r;r=m%n;while()m=n;n=r;r=m%n;答案:m=nr!=0return(n)【3.8】下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。排好序的10个数分两行输出。程序如下:#includemain();inti,j;printf(Input10numberspleasen);for(i=0;i+)scanf(%f,&ai);printf(n);for(i=2;i+)for(j=0;j+)if()x=aj;aj+1=x;printf(Thesorted10numbers;n);for(i=0;i+)if()printf(n);printf(%ft,ai);printf(n);答案:floata10,xi=9i=8jaj+1aj=aj+1i=9i%5=0【3.9】下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。#includestdio.hmain()inti,a20,s,count;s=count=0;for(i=0;i20;i+)scanf(%d,);for(i=0;i20;i+)if(ai0);s+=ai;count+;printf(s=%dtcount=%dn,s,count);答案:&aicontinue注释:是基本概念,使用scanf函数输入数组元素的值。当输入的元素值小于0时,应当跳过后面的语句,取下一个数,所以要填入continue。【3.10】下面程序的功能是删除字符串s中的空格。#includemain()char*s=Beijingligongdaxue;inti,j;for(i=j=0;si!=0;i+)if(si!=);else;sj=0;printf(%s,s);答案:sj+=sisj=si【3.11】下面程序的功能是将字符串s中所有的字符c删除。请选择填空。#includemain()chars80;inti,j;gets(s);for(i=j=0;si!=0;i+)if(si!=c);sj=0;puts(s);答案:sj+=si【3.12】下面程序的功能是输出两个字符串中对应相等的字符。请选择填空。#includecharx=programming;chary=Fortran;main()inti=0;while(xi!=0&yi!=0)if(xi=yi)printf(%c,);elsei+;答案:xi+【3.13】下面程序的功能是将字符串s中的每个字符按升序的规则插到数组a中,字符串a已排好序。#includemain()chara20=cehiknqtw;chars=fbla;inti,k,j;for(k=0;sk!=0;k+)j=0;while(sk=aj&aj!=0)j+;for();aj=sk;puts(a);答案:i=strlen(a);i=j;i-ai+1=ai【3.14】下面的函数index(chars,chart)检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则送回-1。index(chars,chart)inti,j,k;for(i=0;si!=0;i+)for(j=i,k=0;&sj=tk;j+,k+);if()return(i);return(-1);tk!=0tk=0【3.15】下面程序的功能是计算S=k!。k=0longfun(intn)inti;longs;for(i=1;i;i+)s*=i;return();main()intk,n;longs;scanf(%d,&n);s=;for(k=0;k=n;k+)s+=;printf(%ldn,s);答案:=ns0fun(k)【3.16】以下程序是计算学生的年龄。已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄。#includeage(intn)intc;if(n=1)c=10;elsec=;return(c);main()intn=5;printf(age:%dn,);答案:2+age(n-1)age(5)注释:由于程序是递归算法,因此首先要建立问题的递归数学模型。根据原题的描述可以写出如下递归公式:age(n)=10(n=1)age(n)=2+age(n-1)(n1)对照程序和递归公式可以看出:n的含义是第n位学生。很显然,要求第5位学生的年龄,处应当是调用函数age,实参的值应当是5。在处应该是函数的递归调用,根据递归公式,应当填写:2+age(n-1)。【3.17】下面的函数是一个求阶乘的递归调用函数。facto(intn)if(n=1);elsereturn();答案:return(1)n*facto(n-1)注释:我们熟悉的求n!的算法一般是采用循环语句实现,但在此程序中根本没有循环语句。这时我们应该想到:是采用递归算法实现的。首先写出求n!的递归公式;n!=1当n=1时n!=n*(n-1)当n1时根据此递归定义,可以很容易完成程序。【3.18】下列函数是求一个字符串str的长度。intstrlen(char*str)if()return(0);elsereturn();答案:*str=01+strlen(str+1)注释:求串长算法的关键是确定串结束标记0的位置。根据求串长的方法,可以得到如下递归算法:指针str指向字符串的首字符如果当前字符(*str)=串结束标记0则串长=0否则串长=1除第一个字符之外的剩余字符串的串长因此,在的位置上应当填写*str=0,以判断当前字符(*str)是否是串结束标记0。在的位置应当是根据上面的递归算法进行递归调用,因此应当填写1+strlen(str+1)。【3.19】函数revstr(s)将字符串s置逆,如输入的实参s为字符串abcde,则返回时s为字符串edcba。递归程序如下:revstr(char*s)char*p=s,c;while(*p)p+;if(sp)c=*s;*s=*p;revstr(s+1);如下是由非递归实现的revstr(s)函数:revstr(s)char*s;char*p=s,c;while(*p)p+;while(s2)invent(,n-2);else;答案:str+1return改为n-2【3.21】下面程序的功能是实现数组元素中值的逆转。#includemain()inti,n=10,a10=1,2,3,4,5,6,7,8,9,10;invert(a,n-1);for(i=0;i10;i+)printf(%4d,ai);printf(n);invert(int*s,intnum)int*t,k;t=s+num;while()k=*s;*s=*t;*t=k;答案:swp);for(i=*n;i=p;i-);wp=x;+*n;答案:p+wi+1=wi【3.23】下面程序的功能是输入学生的姓名和成绩,然后输出。#includestructstuinfcharname20;/*学生姓名*/intscore;/*学生成绩*/stu,*p;main()p=&stu;printf(Entername:);gets();printf(Enterscore:);scanf(%d,);printf(Output:%s,%dn,);答案:&stu.scorep-namep-score【3.24】下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。查询时可连续进行,直到输入0时才结束。#include#include#defineNUM4structstudentintrank;char*name;floatscore;stu=3,liming,89.3,4,zhanghua,78.2,1,anli,95.1,2,wangqi,90.6;main()charstr10;inti;doprintf(Enteraname);scanf(%s,str);for(i=0;i=NUM)printf(Notfoundn);while(strcmp(str,0)!=0);答案:structstudentstrcmp(,str)=0break注释:程序的主体是一个二重循环,内层for循环完成查找学生的工作。处是进行结构数组说明并初始化,按照结构变量说明的格式规定,应该填写:strcutstudent。处为if语句的逻辑条件,应当是当查找到指定的学生后输出学生的情况,因此应当填写:strcmp(,str)=0。处应当将控制退出内层的for循环,只能选择break语句。【3.25】下面函数将指针p2所指向的线性链表,串接到p1所指向的链表的末端。假定p1所指向的链表非空。#defineNULL0structlinkfloata;structlink*next;concatenate(p1,p2)structlist*p1,*p2;if(p1-next=NULL)p1-next=p2;elseconcatenate(,p2);答案:p1-next【326】下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。链表用于储存学生的学号和成绩。新产生的结点总是位于链表的尾部。structstudentlongnum;intscor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 催乳师师资考试题及答案
- 产后大出血考试题及答案
- 体育新质生产力高级别研讨会
- 民族风之美食课件
- 乡镇粮食生产的新质生产力路径
- 《统计学-SPSS和Excel实现》(第9版)课件 第12章 非参数检验
- 河南农业新质生产力发展实践
- 新质生产力分类框架解析
- 民族民间文学课件
- 农业新质生产力深度解读
- 贵州建筑工程检测收费标准
- 研究性学习(高中研究性学习范例)吸烟对中学生的危害
- GB/T 42061-2022医疗器械质量管理体系用于法规的要求
- GB/T 31586.2-2015防护涂料体系对钢结构的防腐蚀保护涂层附着力/内聚力(破坏强度)的评定和验收准则第2部分:划格试验和划叉试验
- 枸橼酸血液透析
- 2023年热控班班长试题库
- 建筑施工特种作业人员体检表
- 中国近现代史纲要第一章
- 高考数学一轮复习 26平面向量的应用精品课件 新人教版
- 固化剂安全技术说明书(MSDS)
- 离子反应(优秀课件)
评论
0/150
提交评论