C语言数组编程题及解答_第1页
C语言数组编程题及解答_第2页
C语言数组编程题及解答_第3页
C语言数组编程题及解答_第4页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、j!=0)printf(%d,aj);printf(n);【程序 2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1 2 3. 编程找出 1000 以内的所有完数。程序源代码:#include int main()int k10;int i,j,n,s;for(j=2;j1000;j+)精选资料,欢迎下载。n=-1;s=j;for(i=1;ij;i+)if (j%i)=0)n+;s=s-i;kn=i;if(s=0) /说明是完数printf(%d is a wanshu:,j);for(i=0;i=n;i+)printf(%d ,ki);printf(n);retur

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

5、+)printf(%5d,ai);精选资料,欢迎下载。printf(n);/*sort ten num*/for(i=0;iN-1;i+)max=i;for(j=i+1;jN;j+)if(amaxaj) max=j;if (max!=i)tem=ai;ai=amax;amax=tem;/*output data*/printf(After sorted n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 1;=【程序 4】题目:求一个3*3 矩阵对角线元素之和1. 程序分析:利用双重for循环控制输入二维数组,再将aii累加后输出。2. 程序源代码

6、:#include int main()float a33,sum=0;int i,j;printf(please input rectangle element:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%f,&aij);for(i=0;i3;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,tem

7、p;printf(n original array:n);for(i=0;iN;i+)printf(%4d,ai);for(i=0;iN/2;i+)temp=ai;ai=aN-i-1;aN-i-1=temp;printf(n sorted array:n);for(i=0;iN;i+)printf(%4d,ai);printf(n);return 1;【程序 6】打印出以下杨辉三角形(要求打印出10 行)。11112113311464115101051#include void main()int n,i;int a10,b10;a0=1;a1=1;printf(%-4dn,a0);print

8、f(%-4d%-4dn,a0,a1);for(n=3;n=10;n+)b0=1;for(i=1;in-1;i+)精选资料,欢迎下载。bi=ai-1+ai;bn-1=1;for(i=0;in;i+)printf(%-4d,bi);ai=bi;printf(n);【程序 7】有个 15 数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出 无此数 #includeint main()int a15=1,4,9,13,21,34,55,89,144,233,377,570,671,703,812; int w,l,m,h;printf

9、(please enter search number:);scanf(%d,&w);for(l=0,h=14;)m=(l+h)/2;if(w=am)break;if(wam)l=m+1;if(wh)break;if(lh)printf(无此数 n);if(w=am)printf(it is at %d n,m+1);return 1;【程序 8】有一篇文章,共有 3 行文字,每行有个 80 字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。#include #include int main()精选资料,欢迎下载。char a381;int i,j,len;int nu

10、m5=0,0,0,0,0;for(i=0;i3;i+)gets(ai);for(i=0;i3;i+)len=strlen(ai);for(j=0;j=a&aij=A&aij=1&aij=9)num3+;elsenum4+;printf(英文小写字母、大写字母、空格、数字、其他字符的个数分别为 %d,%d,%d,%d,%dn,num0,num1,num2,num3,num4);return 1;【程序 9】打印以下图案*#include #define N 5int main()int i,j;for(i=0;iN;i+)精选资料,欢迎下载。for(j=0;ji;j+)printf( );for

11、(j=0;jZa-zB-Yb-yC-Xc-x即第一个字母变成第 26 个字母,第 i 个字母变成第( 26-i+1 )个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。#include int main()int i;char str1100,str2100;gets(str1);for(i=0;str1i!=0;i+)if(str1i=A&str1i=97&str1iS2,输出一个正数; S1=S2,输出 0;S1S2,输出一个负数。不要用 strcmp 函数。两个字符串用 gets 函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的 ASCII 码的差值

12、。例如, A与 C相比,由于 AC,应输出负数,由于 A 与 C的码差值为 2,因此应输出 -2 。同理: And 和Aid 比较,根据第 2 个字符比较结果, n比 i 大 5,因此应输出 5 。#include 精选资料,欢迎下载。#include 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&bi=0)result=ai;printf(返回

13、值为 %dn,result);return 1;【程序 12】编写一个程序 , 将字符数组 s2 中的全部字符拷贝到字符数组 s1 中, 不用 strcpy 函数。拷贝时, 0 也要拷贝过去, 0 后面的字符不拷贝。#include #include void main()int i;char a20;char b20;gets(a);i=-1;doi+;bi=ai;while(ai!=0);printf(拷贝后为 %sn,b);精选资料,欢迎下载。【程序 13】从键盘输入若干个整数,其值在0 至 4 范围内,用 -1 作为输入结束的标志。统计每个整数的个数。参考程序:#include int

14、 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】从键盘输入两个字符串 a 和 b,要求不用库函数 strcat 把串 b 的前五个字符连接到串 a 中;如果 b 的长度小于 5,则把 b 的所有元素都连接到 a 中。试编程。参考程序:#include #include int main()char a80,

15、b80;int i=0,j;printf(Input two strings:n);gets(a);gets(b);while(ai) i+;for(j=0;j5&bj;j+)ai+=bj;ai=0;puts(a);精选资料,欢迎下载。return 1;【程序 15】 阿姆斯特朗数:如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。如 407=43 +03+73 就是一个阿姆斯特朗数。试编程求 1000 以内的所有阿姆斯特朗数。程序分析:可采用穷举法,依次取 1000 以内的各数(设为 i ),将 i 的各位数字分解后,根据阿姆斯特朗数的性质进行计算和判断。程序源代码:#include int

温馨提示

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

评论

0/150

提交评论