ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:28.95KB ,
资源ID:26081476      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26081476.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C上机题目及答案1.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C上机题目及答案1.docx

1、C 上机题目及答案1第一周上机题1.以下语句描述了包含数学成绩的学生信息结构体及其数组a:struct student char name20; float math; ;student a10 = 张三, 90,李四,85,王五,73;int count=3; / 数组中包含的学生数编写两个函数分别实现在a数组中添加和删除学生信息。要求:1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2)以下数据用于添加:赵二, 96, 钱六,65,孙七,803) 注意:添加,删除后count数据要相应变化。#include#includestruct student char n

2、ame20; float math; ;int count=3;void add(student a10);void dele(student a10);void print(student a);void main() student a10 = 张三, 90,李四,85,王五,73; int n=0; do cout.学生信息处理系统. n 1-删除 n 2-增加 n 3-结束n n; if(n=1) dele(a); else if(n=2) add(a) ; else cout谢谢使用本系统!n; while(n!=3);void add(student a10) student st

3、u; int i=0,n=count; coutstu.namestu.math; while(stu.mathai.math & ii;n-) an=an-1; /腾位置 ai=stu; /插入 count+; print(a);void dele(student a10) char name20; int i=0,n=count; print(a); coutname; while(strcmp(name,ai.name)!=0 & i=n) cout查无此人!n; else for(;in-1;i+) ai=ai+1; /删除 count-; print(a); void print(s

4、tudent a) coutn最新学生信息: n; for(int i=0;icount;i+) coutai.nametai.mathn;2.定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标点之间的距离。要求:编写函数求两坐标点之间的距离。#include#includestruct point double x,y,z;double distance(point a,point b);void main() point a,b; couta.xa.ya.z; cinb.xb.yb.z; couta点的坐标:a.x,a.y,a.zn; coutb点的坐标:

5、b.x,b.y,b.zn; couta,b两点的距离是:distance(a,b)endl;double distance(point a,point b) double d; d=sqrt(a.x-b.x)*(a.x-b.x) +(a.y-b.y)*(a.y-b.y) +(a.z-b.z)*(a.z-b.z); return d;3.某市青年歌手大赛聘请7名评委打分,下列程序协助进行评分统计。函数delmaxmin的功能是对一个选手的得分做以下计算:去掉一个最高分,去掉一个最低分,然后对剩余得分求平均分并保存。函数sort完成对n名选手的得分按平均分从高到低排序。【测试数据与运行结果】测试数

6、据:程序中给定的初始化测试数据运行结果: li: 94 97 98 96 100 99 97 97.40zhang: 96 97 98 98 100 97 96 97.20 zhou: 95 100 99 96 97 96 97 97.00以下语句描述了包含数学成绩的学生信息结构体及其数组a: struct char player_name20; double score7,aver; PERSON3;#includestruct P char name20; double score7,aver;PERSON3;double delmaxmin(double a7) double aver=

7、0,sum=0,max,min; max=min=a0; for(int i=0;imax) max=ai; if(aimin) min=ai; aver+=ai; aver-=max+min; return aver/5;void sort(P p3) int i,j; P a; for(i=0;i3;i+) for(j=i+1;j3;j+) /原程序:for(j=0;j3;j+) if(pi.averpj.aver)/原程序: if(pi.averpi+1.aver) a=pi,pi=pj,pj=a;void main() int i,j; cout请输入比赛选手的比赛数据:endl; f

8、or(i=0;iPERSONi.name; for(j=0;jPERSONi.scorej; for(i=0;i3;i+) PERSONi.aver=delmaxmin(PERSONi.score); sort(PERSON); cout比赛成绩如下endl; for(i=0;i3;i+) coutPERSONi.namet; for(j=0;j7;j+) coutPERSONi.scorejt; coutPERSONi.averendl; 25个人围成一个圈,从第1个人开始顺序报号(1,2,3),凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。要求:函数void seek(

9、 int *a , int n, int *pn) 按上述要求在a数组,找出最后留在圈子中的人原来的序号并返回。主函数是: void main( )int n=3;int num;int a25,*p=a;for(int i=0; i25; i+) pi=i+1;seek( a,n ,&num);cout” 最后留在圈子中的人原来的序号是: ”num endl;*/#include#define NUM 10#includevoid seek( int*a,int n,int *pn);void main( )int n=3;int num;int aNUM,*p=a;for(int i=0;

10、 iNUM; i+) pi=i+1;for(i=0;iNUM;i+)coutsetw(3)ai;seek( a,n ,&num);coutn最后留在圈子中的人序号是: num+1 endl;void seek( int*a,int n,int *pn) int num=NUM; int k=1; int i; cout1) for(i=0;iNUM;i+) if(ai=0) continue; if(k+%3=0) ai=0; num-; else *pn=i; for(i=0;iNUM;i+) if(ai!=0)coutsetw(3)ai; coutendl; 1编程要求1)编写函数int

11、find(char *a , char *b),函数被调用时,a指向的数组中已存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的功能找出字符数组a中字符串中最长的单词并存入b所指向的数组中,函数返回最长单词在字符串的起迭位置下标。2)编写main函数,接受键盘输入的一个英文句子。调用find函数找到该句子中最长的单词,将最长单词及其在字符串中的起始位置下标输出到屏幕。#include#includeint find(char *a , char *b);void main() char a80,b80; int n; cout请输入的一个英文句子: ; cin.getline(a,

12、80); coutbn起始下标是: find(a,b)max) max=p1-p2; p3=p2; p2=p1; strncpy(b,p3,max); *(b+max)=0; return (p3-a);附加题2重新排列一维数组元素的顺序,使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。【测试数据与运行结果】数组原始数据为:17 15 10 14 16 17 19 18 13 12输出结果:18 16 14 12 10 13 15 17 17 19要求:1)编写函数void resort(int *x, int n),使得左边的所有元素均为偶数并

13、按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。(可根据编程需要增加函数)2)编写main函数,接受键盘输入数据,调用resort函数完成上述功能,并输出结果。#include#includevoid resort(int *x, int n);void sort(int *a,int n);void main() int a10=0; cout请输入十个数据:; for(int i=0;iai; cout数组原始数据为:; for(i=0;i10;i+) coutsetw(4)ai; resort(a,10); coutn输出结果:; for(i=0;i10;i+)cou

14、tsetw(4)ai; coutendl;void resort(int *x, int n) int a10,*i,*j,*pa=a,*px=x; while(pxx+10) *pa+=*px+; sort(a,10); i=x,j=x+9; for(pa=a;paa+10;) if(*pa%2=0) *i+=*pa+; else *j-=*pa+; void sort(int *a,int n) int *i,*j,temp; for(i=a;ia+n-1;i+) for(j=i+1;ja+n;j+) if(*i*j) temp=*i,*i=*j,*j=temp;1编写一个求积分的函数,该

15、函数的原型如下: float Integral(int a, int b, float (*fun)(float); 该函数返回值为积分结果,形参a,b分别为积分上下限,fun是被积函数。要求: 1)积分算法:将积分区域划分为若干个小区间,求出所有小区间中被积函数下的面积之和即为函数在积分区域内的积分值;小区间面积可用梯形近似;2) 用积分函数分别求解y=x2和y=2x+1两个函数在0,1区域内的积分值。*/#includefloat f1(float x) return x*x;float f2(float x) return (2*x+1);float Integral(int a, in

16、t b, float (*fun)(float);void main() cout第一个积分值: Integral(0,1,f1)endl; cout第二个积分值: Integral(0,1,f2)endl;float Integral(int a, int b, float (*fun)(float) float h,y; int i; y=(fun(a)+fun(b)/2; h=(b-a)/1000.0; for(i=1;i1000;i+)y+=fun(h*i); return (y*h);2编程题(20分)【编程要求】1)编写函数int fun(long *x),找出所有满足以下特性的六

17、位整数:它是一个完全平方数(完全平方数是指该数是某个整数的平方);该数同时也是回文数(回文数是指该数等于它的反序数)。例如,698896是836的平方并且698896是回文数,因此698896是满足所给条件的六位整数。将所有满足上述条件的六位整数存入x指向的数组中,函数返回x指向的数组中整数的个数。2)编写main函数,声明result数组,调用fun函数将所有满足条件的六位整数存入result数组中,将result数组中的数据输出到屏幕。【测试数据与运行结果】 运行结果: 698896#include#includeint fun(long *x);void main() long reso

18、rt10; int n=fun(resort); cout六位整数中完全平方数有: endl; for(int i=0;in;i+) coutresortiendl;int fun(long *x) long n,n1,n2,n3=0; long *px=x; for(n2=n=100000;n0) n3=n3*10+n2%10; n2/=10; if(n3=n) *px+=n; return px-x;3改错题【程序功能】对于s数组中保存的五个字符串,删除其中不符合下列组成规则的字符串,输出s数组中剩余的字符串。字符串组成规则:由字母、数字、下划线组成,首字符非数字。【测试数据与运行结果】s

19、数组中五个字符串: a%1,_a12,aaa,$ss,1sss输出: _a12,aaa【含有错误的源程序】#include#include #define M 20#define N 10int isident(char sN,int n) int i,j,k,flag; for(j=0;jn;j+) flag=0; if(sj0!=_ | -(sj0)=0 ) flag=1; else for(i=1; sji!=0; i+) if(sji!=_ & !isalpha(sji) & !isdigit(sji) flag=1; if(flag=1) for(k=0;kn-1;k+) strcp

20、y(sk,sk+1); n-; j-; return n;void main( ) char sM=a%1,_a12,aaa,$ss,1sss; int i,n=5; n=isident(s,n); coutThe correct C identifiers is :n; for(i=0; in; i+) coutsiendl;1)根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2)改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。#include#include#include #define M 20

21、#define N 10int isident(char sN,int n) int i,j,k,flag; for(j=0;jn;j+) flag=0; if(sj0!=_ & !isalpha(sj0) )/if(sj0!=_ | -(sj0)=0 ) flag=1; else for(i=1; sji!=0; i+) if(sji!=_ & !isalpha(sji) & !isdigit(sji)/#include flag=1; if(flag=1) for(k=j;kn-1;k+)/for(k=0;kn-1;k+) strcpy(sk,sk+1); n-; j-; return n

22、;void main( ) char sMN=a%1,_a12,aaa,$ss,1sss; /sMN int i,n=5; n=isident(s,n); coutThe correct C identifiers is :n; for(i=0; in; i+) coutsiendl;第六周上机题目一、编程题1.编写函数int prime_m( int n,int x, long y),在2n范围内查找同时符合以下条件的整数m:2m -1是素数、2m -1的反序数是奇数、2m -1的十进制表示中包含数字1。将2n范围内符合上述条件的所有整数m依次保存到x指向的数组中,将与m对应的整数2m -1

23、依次保存到y指向的数组中。函数返回x数组中保存的整数个数。2.编写main函数,接收键盘输入的n值,调用prime_m函数找到2n范围内所有符合给定条件的整数m及整数2m -1并将它们分别保存在两个一维数组中.3.【测试数据与运行结果】测试数据: n=20输出结果: 5 31 7 127 17 131071#include#includeint prime_m( int n,int x, long y);void main() int n1,n,x10,*px=x; long y10,*py=y; coutn; n1=prime_m(n,x,y); cout0) cout*px+t*py+n;

24、int prime_m(int n,int x,long y) int m,p=0,n1,*px=x; long k=2,*py=y; for(m=2;mn;m+) k*=2; for(int i=2;i=sqrt(k-1);i+)/判断k是不是素数 if(k-1)%i=0) break; if(i10) n1/=10; if(n1%2=0) continue; n1=k-1;/判断k中有无数字1 while(n1%10)!=1 & n110) n1/=10; if(n1%10!=1) continue; *px+=m,*py+=k-1; return px-x;二、编程题接收从键盘输入的若干个字符串,为每一个字符串动态申请一块存储区,将字符串复制到该存储区并将存储区的首地址依次保存到指针数组lineptr中,再以字典序输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1