C语言数组编程题及解答--精选文档_第1页
C语言数组编程题及解答--精选文档_第2页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、【程序1】用筛选法求100之内的素数筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274194年)发明的,又称埃拉托斯特尼筛子。 具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂

2、腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。#include <stdio.h>#include <math.h>void main()int i,j;int a100;for(i=0;i<100;i+)ai=i+1;for(i=1;i<100;i+)if(ai=0)continue;for(j=i+1;j<100;j+)if(aj%ai=0)aj=0;for(j=1;j<100;j+) /j从1开始,去除a0(其值为1),因为1既不是质

3、数,也不是合数if(aj!=0)printf("%d,",aj);printf("n");【程序2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。程序源代码:#include <stdio.h>int main()int k10;int i,j,n,s;for(j=2;j<1000;j+)n=-1;s=j;for(i=1;i<j;i+)if (j%i)=0)n+;s=s-i;kn=i;if(s=0) /说明是完数printf("%d is a wanshu:&

4、quot;,j);for(i=0;i<=n;i+)printf("%d ",ki);printf("n");return 1;【程序3】题目:用选择法对10个数进行从大到小排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。 2.程序源代码:#include <stdio.h>#define N 10int main()int i,j,max,tem,aN;/*input data*/printf("please input ten nu

5、m:n");for(i=0;i<N;i+)printf("a%d=",i);scanf("%d",&ai);printf("n");printf("Before sorted n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");/*sort ten num*/for(i=0;i<N-1;i+)max=i;for(j=i+1;j<N;j+)if(amax<aj) max=j;if (ma

6、x!=i)tem=ai;ai=amax;amax=tem;/*output data*/printf("After sorted n");for(i=0;i<N;i+)printf("%5d",ai); printf("n");return 1;=【程序4】题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将aii累加后输出。2.程序源代码:#include <stdio.h>int main()float a33,sum=0;int i,j;printf("plea

7、se input rectangle element:n");for(i=0;i<3;i+)for(j=0;j<3;j+)scanf("%f",&aij);for(i=0;i<3;i+)sum=sum+aii;printf("duijiaoxian he is %6.2f",sum);return 1;【程序5】题目:将一个数组逆序输出。1.程序分析:用第一个与最后一个交换。2.程序源代码:#define N 5int main() int aN=9,6,5,4,1,i,temp;printf("n orig

8、inal array:n");for(i=0;i<N;i+)printf("%4d",ai);for(i=0;i<N/2;i+)temp=ai;ai=aN-i-1;aN-i-1=temp;printf("n sorted array:n");for(i=0;i<N;i+)printf("%4d",ai);printf("n");return 1;1QrP,jRCDC0#,?'eOG/M+f9B051Testing软件测试网;S$p-$a i 【程序6】W ?#At0uP+D0打印

9、出以下杨辉三角形(要求打印出10行)。 xW"(d01 51Testing软件测试网2tk O;11 &Dz8H;qA6A6k%A,*|.|0121 51Testing软件测试网2QX Vzau4b1331 51Testing软件测试网Q jM+qd1Qq14641 51Testing软件测试网AY MDU(Q15101051&9tS 6YW W0#include <stdio.h>void main()int n,i;int a10,b10;a0=1;a1=1;printf("%-4d

10、n",a0);printf("%-4d%-4dn",a0,a1);for(n=3;n<=10;n+)b0=1;for(i=1;i<n-1;i+)bi=ai-1+ai;bn-1=1;for(i=0;i<n;i+)printf("%-4d",bi);ai=bi;printf("n");r.vXMF3FL.DPXp0 【程序7】有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出"无此数"51Testing软件测试网+V

11、eC7jpT5Si#i#include<stdio.h>int main()int a15=1,4,9,13,21,34,55,89,144,233,377,570,671,703,812;int w,l,m,h;printf("please enter search number:");scanf("%d",&w);for(l=0,h=14;)m=(l+h)/2;if(w=am)break;if(w>am)l=m+1;if(w<am)h=m-1;if(l>h)break;if(l>h)printf("

12、;无此数n");if(w=am)printf("it is at %d n",m+1); return 1;【程序8】有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。"w:Gm TP7u0 #include <stdio.h>#include <string.h>int main()char a381;int i,j,len;int num5=0,0,0,0,0;for(i=0;i<3;i+)gets(ai);for(i=0;i<3;i+)len=strle

13、n(ai);for(j=0;j<len;j+)if(aij>='a'&&aij<='z')num0+;else if(aij>='A'&&aij<='Z')num1+;else if(aij=' ')num2+;else if(aij>='1'&&aij<='9')num3+;elsenum4+;printf("英文小写字母、大写字母、空格、数字、其他字符的个数分别为%d,%d,%d,

14、%d,%dn",num0,num1,num2,num3,num4); return 1; 51Testing软件测试网,f*hISB4kP9G*Z 【程序9】打印以下图案 51Testing软件测试网gxy cua HtF* Y'D(MsY'Y0    * Y+PQlxI&Qi_8n0        * 51Testing软件测试网:j+w+v8S r      

15、      *  * 51Testing软件测试网5$t D/s                * v?bFF'dj0#include <stdio.h>#define N 5 int main()int i,j;for(i=0;i<N;i+)for(j=0;j<i;j+)printf(" ");for(j=0;j&

16、lt;N;j+)printf("* ");printf("n");return 1;51Testing软件测试网,f*hISB4kP9G*Z 【程序10】有一行电文译文下面规律译成密码: K'e4T5O-L)rj0A->Za->z 51Testing软件测试网E7L7GQ#NcB->Yb->y /E;1Z:H0C->Xc->x 51Testing软件测试网*3Z!T-TF 51Testing软件测试网1PYr!_2g"oA即第一个字母变成第26个字母,

17、第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。51Testing软件测试网 b)hSs!e3u a/a#include <stdio.h>int main()int i;char str1100,str2100; gets(str1); for(i=0;str1i!='0'i+) if(str1i>='A'&&str1i<='Z') str2i=2*'A'+25-str1i; /* str1i表示第(str1i-'A'+1

18、)个字母,变成(26-(str1i-'A'+1)+1)个字母,对应的ASCII是26-(str1i-'A'+1)+1+'A'-1=2*'A"+25-str1i */else if(str1i>=97&&str1i<=122) str2i=2*'a'+25-str1i; else str2i=str1i; str2i='0'printf("miwen is:%snyuanwen is:%sn",str2,str1); return 1;51Testin

19、g软件测试网,f*hISB4kP9G*Z 【程序11】0nB.D.r;Z0编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1<S2,输出一个负数。不要用strcmp函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,A与C相比,由于A<C,应输出负数,由于A与C的码差值为2,因此应输出"-2"。同理:"And"和"Aid"比较,根据第2个字符比较结果,n比i大5,因此应输出"5"。

20、60;51Testing软件测试网'xw U5"b)Y#include <stdio.h>#include <string.h> int main() int result=0;int i=0;char a20,b20;gets(a);gets(b);while(ai!='0'&&bi!='0')if(ai!=bi)result=ai-bi;break;i+;if(ai='0'&&bi!='0')result=-bi;else if(ai!='0&#

21、39;&&bi='0')result=ai;printf("返回值为%dn",result); return 1;#Qc X.FK*UA0 4O;c0u;?k,QMC;Q051Testing软件测试网,f*hISB4kP9G*Z 【程序12】编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,0也要拷贝过去,0后面的字符不拷贝。 G-b4Q T%N"P&s0#include <stdio.h>#include <string.h> void main(

22、) int i;char a20;char b20;gets(a);i=-1;doi+;bi=ai;while(ai!='0'); printf("拷贝后为%sn",b);51Testing软件测试网 T3P4H"Jvj6G m;Zx hg【程序13】 从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。统计每个整数的个数。参考程序:#include <stdio.h>int main() int i,s5=0,x;printf("Input some numbers(between 0 to 4):");scanf("%d",&x);while(x!=-1)if (x>=0&&x<=4) sx+;scanf("%d",&x);for(i=0;i<=4;i+)printf("%d: %dn",i,si);return 1;【程序14】从键盘

温馨提示

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

评论

0/150

提交评论