上机考试答案_第1页
上机考试答案_第2页
上机考试答案_第3页
上机考试答案_第4页
上机考试答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。例如:程序运行时输入123456789,输出:b=97531。#includelong fun(long int x) long b = 0; while(x0) if(x%10)%2=1) b=b*10+x%10; x/=10; return b; int main()long a,b; printf(Please input a long int num:); scanf(%ld,&a); b=fun(a); printf(b=%ldn,b); 2 编写函数vo

2、id fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。例如: 当s为12345, t为8624677时, p中的字符为: 867;当s为”good luck”,t为”thank you very much”时,输出:”thanyverm”#include#includeint test(char *s,int n,char ch) int i; for(i=0;in;i+)if(si=ch) return 1; return 0;void fun(char *

3、s,char *t,char *p) int i,j; for(i=j=0;ti!=0;i+)if(test(s,strlen(s),ti)=0&test(t,i,ti)=0)pj=ti; j+; pj=0;int main()char s150,s250,s350; gets(s1);gets(s2); fun(s1,s2,s3); puts(s3);3 编写函数int fun(int m),计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+n)=m最大的n。例如,当m=10000时,程序输出:n=38。#includeint fun(int m)int

4、 a,i,s; for(a=1,s=0;s=m;a+) for(i=1;i=a;i+) s+=i; return a-2;int main()int x; scanf(%d,&x); printf(n=%dn,fun(x);4 编写函数void fun(int *x,int n),它的功能是:删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。n为数组长度,规定x中数据都为正数。如程序运行时若输入:122 1461 6234 16 11 663 911 2671 381 6 删除后输出: 122 11 911 381 -1 -1 -1 -1 -1 -1 #define N

5、10#includevoid fun(int *x,int n) int i,j=0,k,t; for (i=0;in;i+) k=xi; while (k!=0) t=k%10; if(t=6) break; else k=k/10; if(k=0) xj+=xi; for(;jn;j+) xj=-1; return;int main() int aN,i; for(i=0;iN;i+) scanf(%d,a+i); fun(a,N); for(i=0;iN;i+) printf(%d ,ai); printf(n);5 编写函数long fun(int high,int n),功能是:计算

6、并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。#includelong sushu(long m) int i; for(i=2;i=m) return 1; else return 0;long fun(int high,int n) int i,j=0; long s=0; if(high1;i-) if(sushu(i) s+=i; j+; if(j=n) return s; return s;int main()int k,n; scan

7、f(%d%d,&k,&n); printf(sum=%ldn,fun(k,n);6 请编写函数int fun(int *a,int n),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a0、a1、a2、中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,输出:2 4 6 8 10 12 14 n=7#includeint fun(int *a,int n) int i,j; for(i=0,j=0;in;i+) if(*(a+i)%2=0) aj=ai; j+; aj=-1;

8、return j; int main()int x15,i,n; for(i=0;i15;i+)scanf(%d,x+i); n=fun(x,15); for(i=0;xi!=-1;i+)printf(%d ,xi); printf(n=%dn,n);7给定程序中,函数fun的功能是:有MN二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据:11 52 43 4 25 22 求最大值并对调后:11 22 43 4 25 5222 33 46 58 16 47 22 33 46 47 16

9、5883 42 54 26 47 0 0 42 54 26 47 834 5 6 7 8 9 4 5 6 7 8 945 96 17 18 39 2 45 2 17 18 39 96排序后最终输出:45 2 17 18 39 960 42 54 26 47 8322 33 46 47 16 5811 22 43 4 25 524 5 6 7 8 9#define N 6#define M 5#includevoid fun(int aMN) int i,j,k,m,t; for(i=0;iM;i+) k=0; for(j=1;jN;j+) if(aikaij) k=j; t=aik; aik=

10、aiN-1; aiN-1=t; for(i=0;iM-1;i+) k=i; for(j=i+1;jM;j+) if(akN-1ajN-1) k=j; if(i!=k) for(m=0;mN;m+) t=akm; akm=aim; aim=t; int main()int xMN=11,52,43,4,25,22,22,33,46,58,16,47,83,42,54,26,47,0,4,5,6,7,8,9,45,96,17,18,39,2,i,j;fun(x);for(i=0;iM;i+)for(j=0;jN;j+)printf(%3d,xij); printf(n);8. 函数void fun

11、(int x,char * p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#include stdio.hvoid fun(int x,char *p) char *q,t; if(x0) *p+=-;x=-x; if(x=0) *p+=0;*p=0;return; q=p; for(;x!=0;x/=2) *p+=x%2+0; *p=0; for(p-;qp;q+,p-) t=*q;*q=*p;*p=t; int main()int a; char c18; scanf(%d,&a); fun(

12、a,c); printf(%dS BINARY IS: %sn,a,c);9. 编写函数int fun(char (*ss)N,int m,char *s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s所指的字符数组中,然后返回此最大字符串的长度。#include#include#define N 30int fun(char (*ss)N,int m,char *s) int i,max; max=0; for(i=1;i0)max=i; strcpy(s,ssmax); return strlen(ssmax);int main()char

13、 a8N,bN;int i,len;for(i=0;i8;i+)gets(ai);len=fun(a,8,b);printf(len=%d,str=%sn,len,b);10 给定程序中,函数void fun(char *s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。#include#includevoid fun(char *s) int i,j; char a100; for(i=0,j=0;*(s+i)!=0;i+,j+) aj=*(s+i); if(*(s

14、+i)=0&*(s+i)=9) *(a+j+1)=*; j+; aj=0; strcpy(s,a); int main()char str80; gets(str); fun(str); puts(str);11给定程序中,函数void fun(char *s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#include#includevoid fun(char *s) int i,t,l; l=strlen(s); if(

15、l%2=1) t=sl-1; for(i=l-1;i0;i-=2) si=si-2; s0=t; else t=sl-2; for(i=l-2;i0;i-=2) si=si-2; s0=t; int main()char str80; gets(str); fun(str); puts(str);12编写函数void fun(char *s1,char *s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:The C Programming Language,输出:LTaegghmnor。(表空格)#in

16、cludevoid fun(char *s1,char *s2) int i,j,n; char t; for(i=0;*(s1+i)!=0;i+) n=i; for(j=i;*(s1+j)!=0;j+) if(*(s1+n)*(s1+j) n=j; t=*(s1+n);*(s1+n)=*(s1+i);*(s1+i)=t; for(i=0;*(s1+i)!=0;i+) if(i%2=0) *s2=*(s1+i); s2+; *s2=0;int main()char a80,b80; gets(a); fun(a,b); puts(b);13函数void fun(char s)的功能是:将s所指

17、字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、字符1的ASCII码值也为奇数、都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoid fun(char s) int i,j; for(i=0;si!=0;i+) if(si%2=1) for(j=i;sj!=0;j+) sj=sj+1; i-; int main()char a80; gets(a); fun(a); puts(a);14请编写一个函数int fun(long int x),它的功能是:判断整数x是否是同构数。若是

18、同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出Yes。要求x的值不大于10000。#includeint fun(long int x) long s; s=x*x; while(x!=0) if(s%10!=x%10) return 0; x/=10; s/=10; return 1;int main()int x; scanf(%d,&x); if(fun(x)=1)puts(Yse); else puts(No);15编写取子字符串函数void fun(char s1,ch

19、ar s2,int m,int n),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入abcd123、4,3时应输出d12;当我们输入abcd123、4,6时应输出d123。注意,这里是将1作为起始计数.#includevoid fun(char s1,char s2,int m,int n)int i;for(i=0;in;i+)s1i=s2m+i-1;s1n=0;main()static char a100,b100;int s,len;void fun(char s1,char s2,int m,int n);

20、puts(ENTER A STRING:);gets(a);puts(ENTER STARTING POSITION AND LENGTH:);scanf(%d,%d,&s,&len);fun(b,a,s,len);printf(THE SRBSTING IS:%sn,b);16. 编写函数void fun(char *str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入you HAVE 10 books,dont you? 输出You Have 10 Books,Dont You?。单词以空格、逗号、句号分隔。#includevoid fun(char

21、 *str) int i,j; for(i=0;stri;i+) if(stri=A&stri=a&str0=a&stri+1=z) stri+1-=32; int main()char a100; gets(a);fun(a);puts(a);17. n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数void fun(int *p,int n,int m),实现上述功能。在main()中输入与输出。如下面程序输出 7 8 9 10 1 2 3 4 5 6 。注意,m可能大于n。#include stdio.hvoid fun(int *p,int n,int m) i

22、nt i,j,k,t; k=m%n; for(i=0;i=0;j-) pj+1=pj; p0=t; int main()void fun(int *,int ,int ); int x10=1,2,3,4,5,6,7,8,9,10,i; fun(x,10,14); for(i=0;i10;i+) printf(%d ,xi); printf(n); 18. 编写函数void fun(char *s1,char *s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。 #include

23、#includevoid fun(char *s1,char *s2) int i,j,k; for(j=0,i=1;s2j!=0;) for(k=strlen(s1);k=i;k-) s1k+1=s1k; s1i=s2j; j+;i+; if(s1i) i+; int main()char a100,b100; void fun(char *,char *); gets(a); gets(b); fun(a,b); puts(a);19. 传说可以根据两个人的生日来计算其缘分.方法:将两个人的生日各位相加,将得到的数再一次各位相加,直到其值为一个一位数,此数即代表两个人的缘分.例如,两个生日为:19820523,19841111,则各位相加:1+9+8+2+5+2+3+1+9+8+4+1+1+1+1得:56;再5+6得11;再

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论