版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1套1 .填空题请补充main函数,该函数的功能是:把一个字符串中的所有小写 字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的 字符串中.例如:当strN="123 abcdef ABCDEF!",结果输出:"123 ABCDEFABCDEF!"注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横 线上填入所编写的假设干表达式或语句.试题程序:#include<stdio.h>#include<stdlib.h>#include<conio.h>#define N 8
2、0 void main() ( int j;char strJN=" 123abcdef ABCDEF!" char *pf=str;clrscr();printf("*original string *n");puts(str);【1:;while(*(pf+j) if(*(pf+j)>='a'&&*(pf+j)<='z')* *(pf+j)=; j+; else【3】;printf("*new string*n");puts(str);system("pause
3、");1 j=0【2】*(pf+j)-32【3】j+【解析】填空1:变量j声明时没有初始化,而后面程序用到j ,所 以在这里对j初始化为0.填空2:将小写字母转换为对应的大写字母 的方法是,小写字母的ASCII码减去32,得到对应的大写字母的ASCII 码.填空3:如果当前字符不是小写字母,那么不做任何处理,使指针 指向下一个字符,准备进行判断.2,改错题以下给定程序中,函数fun()的功能是逐个比拟a, b两个字符串对 应位置中的字符,把ASCII值小或相等的字符依次存放到 濒组中,形 成一个新的字符串.例如:a中的字符串为fshADfg, b中的字符串为sdAEdi,那么c中的
4、字符串应为fdAADf.请改正程序中的错误,使它能得到正确结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构.试题程序:#include <stdio.h>#include <string.h>void fun(char *p,char *q,char *c) int k=0;while(*p|*q)I* 泉*found* if (*p<=*q)el翻kq=*p;if(*p) P+;if(*q) q+ -l*found* */k+main() chara10="fshADfg",b10="sdAEdi"
5、,c80='0'fun(a,b,c);printf("The strin | ntf("The resu I I L11 I I ID I DD UIn h-")- nuts(b). /-MMLOIM/.fl I/ 7足,"), Duts(c)' III .j;puioicj; prprintf("The string a:"); puts(a);(1)错误: if (*p<=*q)正确: if (*p>=*q)(2)错误:k+正确:k+;【解析】错误1:依题意,把ASCII值小或相等的字符存放到c
6、数组中,故if语句的关系运算符应为">=".错误2: C语言规定,每个语句要用分号结束.3.编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成 一个整数放在c中.合并的方式是:将a1如勺十位和个位数依次放在c 数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上.例如,当a=16, b=35,调用该函数后,c=5361.注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句.试题程序:#include<stdio.h> void fun(int a ,int b,lo
7、ng *c) ( main()int a,b;long c;clrscr();printf('"Input a,b;");scanf("%d%d,&a, &b);fun(a,b,&c);printf("The result is:%ldn",c);【解析】语句 *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是将 a数的十位和个位数依次放在cB个位和十位上,b数的十位和个位数依 次放在c数的百位和千位上.注意"/"和""的用法.void f
8、un(int a ,int b,long *c);*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;第2套1.填空题请补充main函数,该函数的功能是求方程 ax2+bx+c=0的两个实数 根.方程的系数a、b、c从键盘输入,如果判别式(disc=b2-4ac)小 于0 ,那么要求重新输入a、b、c的值.例如,当a=1,b=2,c=1时,方程的两个根分别是x1=- 1.00, x2=1.00.注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的假设干表达式或语句试题程序:#include "m
9、ath.h"#include <stdio.h>main()(float a,b,c, disc,x1,x2;clrscr();doP printf("Input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(disc<0)printf("disc=%fn Input again! n",disc);while(11】);printf("*the result*n");x1= 2;x2= 3;print
10、f("nx1=%6.2fnx2=%6.2fn",x1,x2);【1】disc<02 (-b+sqrt(disc)/(2*a)3(-b-sqrt(disc)/(2*a)【解析】填空1:题目要求当判别式disc小于0时,要重新输入a、b、c的值,所以do-while循环的执行条件是disc<0._ b、b 2 - 4ac x =» » 、填空2:万程ax +bx+c=0的一个实数根是:2ao填空3:万-b - 1. b2 -4ac程ax2 +bx +c =0的另一个实数根是:x 2a .2,改错题以下给定程序中,函数fun()的功能是根据整型形参
11、m,计算如下公式的值y=1-1/(2 x2)+1/(3X3)-1/(4X4)+ +(-1)(m+1)/(mXm)例如:m中的值为5,那么应输出0.838611.请改正程序中的错误,使它能得到正确结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include <conio.h>#include <stdio.h> double fun(int m) double y=1.0;/*founw* */int j=1;int i;for(i=2; i<=m; i+)j=-1*j;/*found*/y+=1/(i * i);return(
12、y);(1)main()int n=5;clrscr();printf(''nThe result is %lfn" ,fun(n);错误:int j=1;正确:double j=1.0;(2)错误:y+=1/(i * i);正确:y+=j/(i * i);【解析】错误1:为了做后面的除法运算,j要定义为实型数,否那么 除得的结果将为整数.错误2:题中公式是加减相间的运算,通过j来实现.3.编程题请编一个函数 void fun(int ttMN , int ppN) , tt指向一个 M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中.二维
13、数组中的数已在主函数中给出.注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入所编写的假设干语句.试题程序:#include <conio.h>#include <stdio.h>#defineM 3#defineN 4void fun(int ttMN,int ppN) main()int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56);int pN,i,j,k;clrscr();printf("The riginal data is:n");f
14、or(i=0;i<M;i+)for(j=0;j<N;j+)printf("%6d",tij); printf("n");fun(t,p);printf("nThe result is:n");10111s. = U !<ll IS. + +)printf("%4d",pk);printf("n");【解析】此题中函数的功能是求出二维数组中每列的最大元素.首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次 取得各列中其他元素的值,并与假设的最大值进行比拟,如果遇到更大的
15、,那么把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比拟.void fun(int ttMN,int ppN)小 一 maint i,j,max;for(j=0;j<N;j+)< max=tt0j;/*for(i=0;i<M;i+) if(ttij>max) /*max=ttij;ppj=max; /*)第3套假设各列中的第一个 元素最大*/土 r型用备列中的其他元 贝明这个重大匹索看做当 而该列车最大的兀素*/将各列的最大值依次 放入pp数组中*/1.填空题请补充函数fun(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组str中.例如
16、:当n=13572468时,str=" 86427531".注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横 线上填入所编写的假设干表达式或语句.试题程序:#inc ude<stdio.h>#define N 80#inc ude<conio.h>char strN;void fun(iong int n) int i=0;while(【1】)n那0;口;i+; ;main() long int n=13572468;clrscr();pnntfCthe ongial data *n");print
17、f("n=%ld",n);fun(n);printf("n%s",str);【1】n>0【2】n%10+'0'3 stri= ' 0【解析】填空1: while循环的执行条件是n>0,当n等于0时,说明 已经将整数的各位数字都转换为数字字符并存入字符串中了.填空2:n对10求余,得到整数n的个位数字,在加上字符'0'的ASCII码,得到 对应的数字字符,并存入字符串str中.填空3:将整数转换为字符串 并倒序存放入字符数组str中后,还要在str最后加上字符串结束标记 符'02.改错题F列给定程
18、序中,函数fun的功能是按以下递归公式求函数值.Fun(n) = Q:n(n二)2例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60.请改正程序中的错误,使它能得到正确结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构试题程序:#include <stdio.h>I*foun3*/fun(int n); +int c;/*found*if(n=1)c=15;elsec=fun(n-1)*2; return(c);main() ( +int n;printf("Enter n:");scanf("%d",&
19、amp;n);printf(、The result :%dnn",fun(n);(1)错误:fun(int n);正确:fun(int n)(2)错误:if(n=1)正确:if(n=1)【解析】错误1:该行是函数的首部,不是一条语句,因此不能以 分号结束错误2: if后面应该紧跟一个条件判断表达式,假设写成“if(n=1), 那么说明该表达式的值永远为真,也就是说这个条件永远成立,没有递 归执行.3.编程题请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列.编写完程序,运行程序后输入:字符串为Bdsihad,那么排序后输出为应为Ba
20、dhisdo注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的假设干语句.试题程序:#include <stdio.h>#include <ctype.h>#include <conio.h> int fun(char *s, int num) main()char s10;clrscr();printf("/ 输入7个字符的字符串:");gets(s);fun(s,7);printf("n%s",s);【解析】此题考查利用循环来限制数组元素的操作,首尾元素除
21、外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中 的元素,用数组中的元素si和sj进行比拟,如果后一个元素的ASCII 码值小于前一个元素的ASCII码值,那么交换这两个数组元素的值. int fun(char *s, int num) char t;int i, j;for(i=1;i<num-2;i+)/*/for(j=i+1;j<num-1;j+) /*if(si>sj)/* t=si;呷;/*科帽子符与其后的每个 字符比拟*/如臬后面的ASCII 码值小于该学样的ASCII 初值*/那么交换这两个字符*/组3位数的无符号正整数,其元素的个数通过1.填空题
22、数组xxN保存着变量num存入函数fun().请补充函数fun(),该函数的功能是:从数组xx yy中找出个位和百位的数字相等的所有无符号整数,结果保存在数组中,其个数由函数fun()返回.例如:当 xx8=135,78,72,32,222,424,333,141,541时, bb6=787,232,222,424,333,141注意:局部源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的假设干表达式或语句.试题程序:#include<conio.h>#define N 1000int fun(int xx,int bb,int n
23、um)叫 i,n0;for(g=0;i<num;i+)g=1】; b=xxi/100;r/ k r ITffa 1ifg"bl_return【3】;main() int xx8=135,787,232,222,424,333, 141,541;int yyN;int num=0,n=0,i=0;num=8;clrscr();prinlf#*original data *n");for(i=0;i<num;i+)iXrinff/HO/ n xzxzhl-pnntT(%u ,xxi);printf("nnn");n=fun(xx,yy,num);
24、 printf("nyy=");for(i=0;i<n;i+)printf("%u ",yyi);1 xxi%10【2】bbn+=xxi3 n【解析】填空1:变量b存放了三位数的百位数字,所以变量g应该 存放三位数的个位数字,将这个三位数对10求余,那么得到这个数的个 位数字.填空2:将个位数字与百位数字相等的整数存于数组 bb中. 填空3:变量n记录了个位数字等于百位数字的整数的个数,题目要求个数由函数fun()返回,所以应返回n.2.改错题以下给定程序中函数fun()的功能是计算1/n!的值.例如:给n输入5,那么输出0.008333.请改正程序中的错误,使它能得到正确结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构.试题程序:#include <stdio.h>#include <conio.h>/*found*/int fun(int n) double result =1.0;if(n=0)return 1.0;while(n>1 && n <170)/*found*/result *=n+ ;result=1/result;return result;)main()int n;printf("Input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度服装设计委托创作合同
- 感恩课程课件教学课件
- 2024年度互联网金融与投资合同
- 2024年城市供水供电管网改造工程合同
- 2024年度电子商务平台服务外包合同
- 2024年度智能家居产品购销合同
- 2024年屋产交易合同:个人卖家与买家之间的协议
- 2024年度光伏发电项目建设与运营合同
- 大学民法课件教学课件
- 公司中秋节员工的慰问信(18篇)
- 高考数学小题狂练:每题都附有详细解析
- 浮动码头施工方案
- Poka-Yoke防错技术(完整版)
- 保安交接班记录表(2)
- 神明—EZflame火焰检测系统
- 个人简历求职简历课件.ppt
- 2018年江苏高考满分作文:在母语的屋檐下
- 新青岛版五四制2021-2022四年级科学上册实验指导
- 小学四年级音乐课程标准
- 双向细目表和单元测试卷及组卷说明
- 离子色谱法测定空气中二氧化硫
评论
0/150
提交评论