




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机编程题1.编程题请编写函数void fun (int x, int pp, int *n),它的功能是:求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include void fun (int x, int pp, int *n)main () int x,aa1000, n, i ; clrscr() ; printf(nPlease enter an integer number : n ) ; scanf (%d, &x) ; fun (x, aa, &n) ; for (i=0 ; in ; i+) printf (%d , aa i); printf (n ) ;该题您未回答: 答案:void fun (int x, int pp, int *n) int i,j=0; for(i=2;i=x;i=i+2) /*i的初始值为2,步长为2,确保i为偶数*/ if(x%i=0) /*将能整除x的数存入数组pp中*/ ppj+=i; *n=j; /*传回满足条件的数的个数*/本题题干信息是:能整除x且不是奇数的所有整数。循环语句中i从2开始且每次增2,所以i始终是偶数。2.编程题请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为F(0)0,F(1)1F(n)=F(n-1)+F(n-2)例如:t=1000时 ,函数值为987。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(int t)main() int n; clrscr(); n=1000; printf(n=%d, f=%dn,n, fun(n);该题您未回答: 答案:int fun(int t) int a=1,b=1,c=0,i; /*a代表第n-2项,b代表第n-1项,c代表第n项*/ /*如果求得的数c比指定比较的数小,则计算下一个Fibonacci数,对a,b重新置数*/do c=a+b; a=b; b=c; while (ct); /*如果求得的数c比指定比较的数大时,退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/ return c;根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(通过不断地重新赋值来实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。3.编程题下列程序定义了NN的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是:求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a 数组中的值为a=0 1 2 7 91 11 21 5 52 21 6 11 19 7 9 10 25 4 1 4 1则返回主程序后s的值应为310。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include#include#define N 5int fun (int wN)main() int aNN=0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1; int i, j; int s; clrscr(); printf(*The array*n ); for (i=0; iN; i+) for (j=0;jN;j+) printf(%4d ,aij); printf(n ); s=fun(a); printf(*THE RESULT*n ); printf(The sum is : %dn ,s);该题您未回答: 答案:int fun (int wN) int i,j,k=0; int s=0; for(i=0;iN;i+) for(j=0;jN;j+) if(i=0|i=N-1|j=0|j=N-1) /*只要下标中有一个为0或N-1,则它一定是周边元素*/ s=s+wij*wij; /*将周边元素求平方和*/ return s; /*返回周边元素的平方和*/该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0或N-1,则它一定是周边元素。4.编程题下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),该函数的功能是:使数组右上半三角元素中的值全部置成0。例如a数组中的值为a=4 5 61 7 93 2 6,则返回主程序后a数组中的值应为0 0 01 0 03 2 0注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include #define N 5int fun (int aN)main() int aNN,i,j; clrscr(); printf(*The array*n); for(i=0;iN;i+) /*产生一个随机的5*5矩阵*/ for(j=0;jN;j+) aij=rand()%10; printf(%4d, aij); printf(n); fun(a); printf(THE RESULTn); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); 该题您未回答: 答案:int fun (int aN) int i,j; for(i=0;iN;i+) for(j=i;jN;j+) aij=0; /*将数组右上半三角元素中的值全部置成0*/本题旨在考查控制数组中右上半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。5.编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=16,b=35,调用该函数后,c=5361。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includevoid fun(int a ,int b,long *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);该题您未回答: 答案:void fun(int a ,int b,long *c) *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; 语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意/和%的用法。6.编程题请编写一个函数void fun(int m, int k, int xx),该函数的功能是:将大于整数m且紧靠m的k个非素数存入所指的数组中。例如,若输入15,5,则应输出16,18,20,21,22。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include void fun(int m, int k, int xx)main() int m,n,zz1000; clrscr(); printf(nPlease enter two integers: ); scanf(%d%d,&m,&n); fun(m, n, zz); for(m=0;mn;m+) printf(%d ,zzm); printf(n );该题您未回答: 答案:void fun(int m, int k, int xx) int i,j,n; for(i=m+1,n=0;nk;i+) /*找大于m的非素数,循环k次,即找出紧靠m的k个非素数*/ for(j=2;ji;j+) /*判断一个数是否为素数*/ if(i%j=0) xxn+=i; /*如果不是素数,放入数组xx中*/ break; /*并跳出本层循环,判断下一个数*/ 本题只要掌握了判断非素数和素数的算法即不难完成了,其实程序缺少部分也正是这部分。7.编程题程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int a N ,int n),该函数的功能是使数组左下半三角元素中的值加上n。例如:若n的值为3,a数组中的值为a=2 5 41 6 95 3 7则返回主程序后a数组中的值应为5 5 44 9 98 6 10 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include #define N 5fun(int a N, int n)main() int aNN,n, i,j; clrscr(); printf(* The array *n); for(i=0; iN; i+) /*产生一个随机5*5矩阵*/ for(j=0; j=5); printf(n=%4dn,n); fun(a, n); printf(*THE RESULT*n); for(i=0; iN; i+) for (j=0; jN; j+) printf(%4d,aij); printf(n); 该题您未回答: 答案:fun(int a N, int n) int i, j; for(i=0; iN; i+) for(j=0; j=i; j+) aij=aij+n; /*使数组左下半三角元素中的值加上n*/首先从数组中找出要被加上n的那部分元素,找的过程其实就是找出将被挑出的那部分元素在原数组中的分布规律的过程。通过观察得出,要被处理的那部分元素的下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得合乎要求的元素,然后再加上n。8.编程题请编写一个函数fun(),它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。若两个字符串长度相等,则返回第1个字符串。例如,输入nanjing nanchang (为回车键),函数将返回nanjing。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includechar *fun(char *s, char *t)main() char a20,b10,*p,*q; int i; printf(Input 1th string: ); gets(a); printf(Input 2th string: ); gets(b); printf(%s,fun(a,b);该题您未回答: 答案:char *fun(char *s, char *t) int i,j; for(i=0;si!= 0;i+); /*求字符串的长度*/ for(j=0;tj!= 0;j+); if(i=j) /*比较两个字符串的长度*/ return s; /*函数返回较短的字符串,若两个字符串长度相等,则返回第1个字符串*/ else return t;本题中,第1个for循环的作用是求出s的字符个数i,第2个for循环的作用是求出t的字符个数j,因为任何循环都要控制一条语句,所以在每一个for循环条件后面必须要有一个分号。本题也可用如下技巧:#include /*一定要9.编程题m个人的成绩存放在score数组中,请编写函数fun(),它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在up所指的数组中。例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(int score,int m, int up)main() int i, n, up9; int score9=24,35,88,76,90,54,59,66,96; clrscr(); n=fun(score, 9, up); printf(nup to the average score are: ); for(i=0;in;i+) printf(%d ,upi);该题您未回答: 答案:int fun(int score,int m, int up) int i,j=0; float av=0.0; for(i=0;im;i+) av=av+scorei/m; /*求平均值*/ for(i=0;iav) /*如果分数高于平均分,则将此分数放入up数组中*/ upj+=scorei; return j; /*返回高于平均分的人数*/该题第1个循环的作用是求出平均分av,第2个循环的作用是找出高于平均分的成绩并存入up数组中。10.编程题编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。例如:n为1000时,函数值应为s=96.979379。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include double fun(int n) main()clrscr();printf(s=%fn, fun(1000);该题您未回答: 答案:double fun(int n)double s=0.0;int i;for(i=0; in;i+) /*从0n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/ if(i%5=0&i%11=0) s=s+i;s=sqrt(s); /*对s求平方根*/return s;本题的解题思路是逐个取得从0n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:这两个条件要求同时成立,因此用到了&运算符。满足条件,该数就被累加到s中去,求出所有符合条件的数后,用sqrt()函数(包含于头文件中)对s求平方根。11.编程题请编一个函数void fun(int ttMN, int ppN), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #define M 3#define N 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); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(nThe result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n);该题您未回答: 答案:void fun(int ttMN,int ppN) int i,j,max; for(j=0;jN;j+) max=tt0j; /*假设各列中的第一个元素最大*/ for(i=0;imax) /*如果各列中的其他元素比最大值还大, 则将这个更大的元素看做当前该列中最大的元素*/ max=ttij; ppj=max; /*将各列的最大值依次放入pp数组中*/ 本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。12.编程题请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。例如:主函数从键盘给输入n的值为56,则输出为sum=1113。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include long fun(int n) main() int n; long sum; printf(Input n:); scanf(%d, &n); sum=fun(n); printf(sum=%ldn, sum);该题您未回答: 答案:long fun(int n) int i; long s=0; for(i=2;i=n-1;i+) /*从2n-1中找n的所有因子*/ if(n%i=0) s+=i*i; /*将所有因子求平方加*/ return s; /*将平方和返回*/本题的解题思路是用n逐个去除以2到n-1之间的所有数,如果n能被除尽,则把所得到的一个因子的平方累加到s中去。13.编程题N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #define N 8struct slist double s; struct slist *next;typedef struct slist STREC;double fun(STREC *h)STREC * creat (double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC); p-s=0; while(is=si; i+; p-next=q; p=q; p-next=NULL; return h; /*返回链表的首地址*/outlist(STREC *h) STREC *p; p=h; printf(head); do printf(-%2.0f ,p-s);p=p-n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高端氟产品类药物项目提案报告范样
- 2025海南软件职业技术学院考核招聘事业编制专任教师15人考前自测高频考点模拟试题及答案详解(必刷)
- 2025年PCR诊断试剂项目申请报告
- 2025年中级经济师资格考试(商业经济专业知识与实务)考前冲刺试题及答案
- 2025年中国玻璃纤维钓鱼竿行业市场分析及投资价值评估前景预测报告
- 2025年中国表面蒸汽冷却剂行业市场分析及投资价值评估前景预测报告
- 2025年中国吡氟醚乙基行业市场分析及投资价值评估前景预测报告
- 迪拜投资项目的员工福利与激励机制
- 国际地震应急预案
- 轻型钢结构施工安全管理方案
- 华为供应商质量认可标准实施细则
- 天气现象科学课件
- 航海船舶航线选择指南
- 2025年中小学校长岗位竞聘面试题库及答案
- 2025年中国心血管病报告
- 客户价值共创机制-洞察及研究
- 医院保密教育培训课件
- 高一语文必修上第三单元必背篇目理解性默写 (教师版)
- 垃圾管理培训课件
- 传感器应用技术 课件 3-18热释电红外传感器的原理及应用
- 医院培训课件:《S/D 比值临床价值》
评论
0/150
提交评论