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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

100上机编程题.docx

1、100上机编程题113. 编程题请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:234 345 753 134 436 458 100 321 135 760则输出结果为6,100。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include int fun(int *s,int t,int *k)main() int a10=234,345,753,134,436,458,100,32

2、1,135,760,k; clrscr(); fun(a, 10, &k); printf(%d, %dn , k, ak);答案:int fun(int *s,int t,int *k)int i; *k=0; /*k所指的数是数组的下标值*/ for(i=0;isi) *k=i; /*找到数组的最小元素,把该元素的下标赋给k所指的数*/ return s*k; /*返回数组的最小【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值,即*k=0。123. 编程题下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(in

3、t 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;

4、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、分元素的下标值的范围是每行中从列数等于该行行数开始,直到列数等于阶数-1为止。73. 编程题程序定义了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,

6、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=ai

7、j+n; /*使数组左下半三角元素中的值加上n*/【解析】首先从数组中找出要被加上n的那部分元素,找的过程其实就是找出将被挑出的那部分元素在原数组中的分布规律的过程。通过观察得出,要被处理的那部分元素的下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得合乎要求的元素,然后再加上n。133. 编程题下列程序定义了NN的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是:求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a 数组中的值为a=0 1 2 7 91 11 21 5 52 21 6 11 19 7 9 10 25

8、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

9、(%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,且只要

10、下标中有一个为0或N-1,则它一定是周边元素。143. 编程题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 (d

11、ouble *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-next; /*输出各分数*/ while(p!=NULL); printf(nn );main() double sN=56,89,76,95,91,68,75,8

12、5, min; STREC *h; h=creat(s); outlist(h); min=fun(h); printf(min=%6.1fn ,min);答案:double fun(STREC *h) double min=h-s; while(h!=NULL) /*通过循环找到最低分数*/ if(minh-s) min=h-s; h=h-next; return min;【解析】在本题中,h为一个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符-。由于是链表,所以要使h逐一往后移动,使用的是h=h-next。153. 编程题请编写一个函数fun(),它的功能是:

13、比较两个字符串的长度,(不得调用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

14、: ); 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; /*函数返回较短的字符串,若else return t;【解析】本题中,第1个for循环的作用是求出s的字符个数i,第2个for循环的作用是求出t的字符个数j,因为任何循环都要控制一条语句,所以在每一个for循环条件后面必须要有一个分号。163. 编程题请编写函数fun(),它的功能是

15、:求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include void fun(int *a,int *n)main( ) int aa1000, n, k; clrscr( ); fun(aa,&n); for(k=0;kn;k+) if(k+1)%10=0) printf(%5d ,aak); printf(n ); /*一行写10个数*/ else printf(

16、%5d ,aak);答案:void fun(int *a,int *n) int i,j=0; for(i=1;i=1000;i+) /*求1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数,并放入数组a中*/ if(i%5=0|i%13=0)&i%65!=0) 或if (i%5=0|i%13=0) & !( i%5=0 & i%13=0) aj+=i; *n=j; /*传回满足条件的数的个数*/【解析】注意本题题目是找出能被5或13整除但不能同时被5和13整除的所有整数。能同时被5和13整除的整数一定能被65整除,且不能被65整除的数不一定就是能被5或13整除的数。所以可得

17、出程序中的if()。按运算优先级可知(i%5=0|i%13=0),注意,两边必须要有小括号。173. 编程题请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。例如,若输入ABC4efG,则应输出aBc4efg。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includevoid fun(char *ss)main() char tt81; clrscr(); printf(nPlease enter an

18、string within 80 characters:n); gets(tt); printf(nnAfter changing, the stringn %s,tt); fun(tt); printf(nbecomesn %sn,tt);答案:void fun(char *ss) int i; for(i=0;ssi!=0;i+) /*将ss所指字符串中所有下标为偶数位置的字母转换为小写*/ if(i%2=0&ssi=A&ssi=Z) ssi=ssi+32;【解析】从C语言的学习中我们知道,只要将小写字母减去32则转成大写字母,将大写字母加上32则转成小写字母。该程序是用if语句实现该功能

19、转化的。183. 编程题请编写一个函数fun(),它的功能是:求出一个4M整型二维数组中最小元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#define M 4#include fun (int aM)main() int arr4M=11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7; printf(min=%dn,fun(arr);答案:fun (int aM) int i,j,min=a00; for(i=0;i4;i+) for(j=0

20、;jaij) min=aij; /*求出二维数组的最小值*/ return min;【解析】此类求最大值或最小值的C语言问题,我们可以采用逐个比较的方式。要求数组中的所有元素走动一遍,并从中找出最大、最小值,要注意一开始应使min存放数组中的第一个元素的值。可按逐行查找也可按逐列查找的方式,本题采用的是逐行查找的方式。即行下标在外层循环,列下标在内层循环,因为在循环的嵌套中越在内层循环,循环变化就越快。193. 编程题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把分数最低的学生数据放在h所指的数组中。注意:分数低的学生可能不只一个

21、,函数返回分数最低学生的人数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #define N 16typedef struct char num10; int s ;STREC;int fun (STREC *a, STREC *b)main () STREC sN=GA005,82,GA003,75,GA002,85,GA004,78, GA001,95,GA007,62,GA008,60,GA006,85, GA015,83,GA013,94,GA012,78,GA014,97, GA01

22、1,60,GA017,65,GA018,60,GA016,74; STREC hN; int i, n; FILE *out; n=fun(s,h); printf(The %d lowest score :n,n); for (i=0; in; i+) printf(%s %4dn,hi.num,hi.s); /*输出最低分学生的学号和成绩*/ printf(n); out=fopen(out19.dat, w); fprintf(out, %dn,n); for(i=0; in; i+); fprintf(out, %4dn ,hi.s); fclose(out);答案:int fun (

23、STREC *a, STREC *b) int i,j=0,min=a0.s; for(i=0;iai.s) min=ai.s; /*找出最小值*/ for(i=0;iN;i+) if(min=ai.s) bj+=ai; /*找出成绩与min相等的学生的记录,存入结构体b中*/ return j; /*返回最低成绩的学生人数*/【解析】该程序使用循环嵌套,第1个for语句的作用是找出最小值。第2个循环的作用是找出与min相等的成绩,也即最低成绩的学生记录,并存入b中。203. 编程题请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(pn-1

24、)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #define N 80void fun(int *w, int p, int n)main() int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; int i, p,

25、n=15; printf(The original data:n); for(i=0;in;i+) printf(%3d,ai); printf(nnEnter p: ); scanf(%d,&p); fun(a,p,n); printf(nThe data after moving:n); for(i=0;in;i+) printf(%3d,ai); printf(nn);答案:void fun(int *w, int p, int n) int i,j,t; for(i=p;i=0;j-) /*实现循环右移*/ wj+1=wj; w0=t; 【解析】本题采用循环右移的算法。和我们在前面分析

26、的稍有不同的是,一个是整型数组,一个是字符型数组。213. 编程题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,低分在前。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #define N 16typedef struct char num10; int s ;STREC;int fun (STREC a) main () STREC sN= GA005,88,GA003,64,GA002,77,GA004,89, GA001,54,GA0

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2