实用标准文案精彩文档【程序1】用筛选法求100之内的素数筛选法又称筛法,是求不超过自然数N(N1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。#includestdio.h#includemath.hvoidmain(){inti,j;inta[100];for(i=0;i100;i++)a[i]=i+1;for(i=1;i100;i++){if(a[i]==0)continue;for(j=i+1;j100;j++)if(a[j]%a[i]==0)a[j]=0;}for(j=1;j100;j++)//j从1开始,去除a[0](其值为1),因为1既不是质数,也不是合数if(a[j]!=0)printf(%d,,a[j]);printf(\n);}【程序2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。程序源代码:#includestdio.hintmain(){intk[10];inti,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;k[n]=i;}}if(s==0)//说明是完数{printf(%disawanshu:,j);for(i=0;i=n;i++)printf(%d,k[i]);printf(\n);}}return1;}【程序3】题目:用选择法对10个数进行从大到小排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。2.程序源代码:#includestdio.h#defineN10intmain(){inti,j,max,tem,a[N];/*inputdata*/printf(pleaseinputtennum:\n);for(i=0;iN;i++){printf(a[%d]=,i);scanf(%d,&a[i]);}printf(\n);printf(Beforesorted\n);for(i=0;iN;i++)printf(%5d,a[i]);实用标准文案精彩文档printf(\n);/*sorttennum*/for(i=0;iN-1;i++){max=i;for(j=i+1;jN;j++)if(a[max]a[j])max=j;if(max!=i){tem=a[i];a[i]=a[max];a[max]=tem;}}/*outputdata*/printf(Aftersorted\n);for(i=0;iN;i++)printf(%5d,a[i]);printf(\n);return1;}==============================================================【程序4】题目:求一个3*3矩阵对角线元素之和1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。2.程序源代码:#includestdio.hintmain(){floata[3][3],sum=0;inti,j;printf(pleaseinputrectangleelement:\n);for(i=0;i3;i++)for(j=0;j3;j++)scanf(%f,&a[i][j]);for(i=0;i3;i++)sum=sum+a[i][i];printf(duijiaoxianheis%6.2f,sum);return1;}【程序5】题目:将一个数组逆序输出。实用标准文案精彩文档1.程序分析:用第一个与最后一个交换。2.程序源代码:#defineN5intmain(){inta[N]={9,6,5,4,1},i,temp;printf(\noriginalarray:\n);for(i=0;iN;i++)printf(%4d,a[i]);for(i=0;iN/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf(\nsortedarray:\n);for(i=0;iN;i++)printf(%4d,a[i]);printf(\n);return1;}【程序6】打印出以下杨辉三角形(要求打印出10行)。11112113311464115101051#includestdio.hvoidmain(){intn,i;inta[10],b[10];a[0]=1;a[1]=1;printf(%-4d\n,a[0]);printf(%-4d%-4d\n,a[0],a[1]);for(n=3;n=10;n++){b[0]=1;for(i=1;in-1;i++)实用标准文案精彩文档b[i]=a[i-1]+a[i];b[n-1]=1;for(i=0;in;i++){printf(%-4d,b[i]);a[i]=b[i];}printf(\n);}}【程序7】有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出无此数#includestdio.hintmain(){inta[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};intw,l,m,h;printf(pleaseentersearchnumber:);scanf(%d,&w);for(l=0,h=14;;){m=(l+h)/2;if(w==a[m])break;if(wa[m])l=m+1;if(wa[m])h=m-1;if(lh)break;}if(lh)printf(无此数\n);if(w==a[m])printf(itisat%d\n,m+1);return1;}【程序8】有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。#includestdio.h#includestring.hintmain()实用标准文案精彩文档{chara[3][81];inti,j,len;intnum[5]={0,0,0,0,0};for(i=0;i3;i++)gets(a[i]);for(i=0;i3;i++){len=strlen(a[i]);for(j=0;jlen;j++){if(a[i][j]='a'&&a[i][j]='z')num[0]++;elseif(a[i][j]='A'&&a[i][j]='Z')num[1]++;elseif(a[i][j]=='')num[2]++;elseif(a[i][j]='1'&&a[i][j]='9')num[3]++;elsenum[4]++;}}printf(英文小写字母、大写字母、空格、数字、其他字符的个数分别为%d,%d,%d,%d,%d\n,num[0],num[1],num[2],num[3],num[4]);return1;}【程序9】打印以下图案*************************#includestdio.h#defineN5intmain(){inti,j;for(i=0;iN;i++){实用标准文案精彩文档for(j=0;ji;j++)printf();for(j=0;jN;j++)printf(*);printf(\n);}return1;}【程序10】有一行电文译文下面规律译成密码:A-Za-zB-Yb-yC-Xc-x…即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变,要求编程序将密码回原文,并打印出密码和原文。#includestdio.hintmain(){inti;charstr1[100],str2[100];gets(str1);for(i=0;str1[i]!='\0';i++)if(str1[i]='A'&&str1[i]='Z')str2[i]=2*'A'+25-str1[i];/*str1[i]表示第(str1[i]-'A'+1)个字母,变成(26-(str1[i]-'A'+1)+1)个字母,对应的ASCII是26-(str1[i]-'A'+1)+1+'A'-1=2*'A+25-str1[i]*/elseif(str1[i]=97&&str1[i]=122)str2[i]=2*'a'+25-str1[i];elsestr2[i]=str1[i];str2[i]='\0';printf(miwenis:%s\nyuanwenis:%s\n,str2,str1);return1;}【程序11】编一个程序,将两个字符串S1和S2比较,如果S1S2,输出一个正数;S1=S2,输出0;S1S2,输出一个负数。不要用strcmp函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,’A’与’C’相比,由于’A’’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出-2。同理:And和Aid比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出5。#includestdio.h实用标准文案精彩文档#includestring.hintmain(){intresult=0;inti=0;chara[20],b[20];gets(a);gets(b);while(a[i]!='\0'&&b[i]!='\0'){if(a[i]!=b[i]){result=a[i]-b[i];break;}i++;}if(a[i]=='\0'&&b[i]!='\0')result=-b[i];elseif(a[i]!='\0'&&b[i]=='\0')result=a[i];printf(返回值为%d\n,result);return1;}【程序12】编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,’\0’也要拷贝过去,’\0’后面的字符不拷贝。#includestdio.h#includestring.hvoidmain(){inti;chara[20];charb[20];gets(a);i=-1;do{i++;b[i]=a[i];}while(a[i]!='\0');printf(拷贝后为%s\n,b);实用标准文案精彩文档}【程序13】从键盘输入若干个整数,其值在0至4范围内,用-1作为输入结束的标志。统计每个整数的个数。参考程序:#includestdio.hintmain(){inti,s[5]={0},x;printf(Inputsomenumbers(between0to4):);scanf(%d,&x);while(x!=-1){if(x=0&&x=4)s[x]++;scanf(%d,&x);}for(i=0;i=4;i++)printf(%d:%d\n,i,s[i]);retu