咱们的必记程序 |
|
|
程序要求:
1. 判断某一个数是否是质数(P209)(质数是除了1和它本身外再也没有一个数能被它整除的整数)
#include"stdio.h"
main()
{inti,j;
printf("请输入要判断的数:\n");
scanf("%d",&i);
for(j=2;j if(i%j==0)
break;
if(j printf("%d不是质数",i);
else
printf("%d是质数",i);
}
2. 输出2至99范围内的质数
3. 判断某一个数是否是水仙花数(P210)(水仙花数是一个三位整数,其各位数字立方和等于该数本身。比如153是一个水仙花数,因为153=111+555+333)
#include"stdio.h"
main()
{inti,j,k,n;
printf("请输入要判断的数\n");
scanf("%d",&n);
if(n<100||n>999)
printf("输入的数据错误\n");
else{i=n%10;
j=n/10%10;
k=n/100;
if(iii+jjj+kkk==n)
printf("%d是水仙花数\n",n);
else
printf("%d不是水仙花数\n",n);}
}
4. 输出100至999范围内的水仙花数
#include"stdio.h"
main()
{inti,j,k,n;
for(n=100;n<=999;n++)
{i=n%10;
j=n/10%10;
k=n/100;
if(iii+jjj+kkk==n)
printf("%d是水仙花数\n",n);}
}
5. 判断某一个数是否是完数(P211)(完数是指一个数恰好等于它的因子之和,例如6的因子是1,2,3。而6=1+2+3因此6是完数)
#include"stdio.h"
main()
{inti,j,s;
scanf("%d",&i);
s=0;
for(j=1;j if(i%j==0)
s=s+j;
if(s==i)
printf("%d是完数\n",i);
else
printf("%d不是完数\n",i);
}
6. 输出2至99范围内完数。
#include"stdio.h"
main()
{inti,j,s;
for(i=2;i<100;i++){
s=0;
for(j=1;j if(i%j==0)
s=s+j;
if(s==i)
printf("%d是完数\n",i);
}
}
7. 从键盘上输入十个实型数据,求他们的总和,平均值,最大值,最小值(P126)
#include"stdio.h"
main()
{floatmax,min,sum,avg;
inti,sz[10];
printf("输入十个数\n");
for(i=0;i<10;i++)
scanf("%d",&sz[i]);
max=sz[0];
for(i=1;i<10;i++)
if(max max=sz[i];
min=sz[0];
for(i=1;i<10;i++)
if(min>sz[i])
min=sz[i];
for(i=0;i<10;i++)
{sum=sum+sz[i];
avg=sum/10;}
printf("max=%f,min=%f,sum=%f,avg=%f",max,min,sum,avg);
}
8. 用冒泡排序给10个整数排序(P221)(冒泡法的思路:以升序排列为例,将相邻两个数比较,如果前一个数大于后一个数,则交换两数,以此类推,一趟完毕最大的数放在最后。第二趟重复这样的操作,把次大的数放在倒数第二的位置。)
#include"stdio.h"
#defineN10
main()
{inta[N];
inti,j,t;
for(i=0;i scanf("%d",&a[i]);
for(j=0;j for(i=0;i if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i printf("%d",a[i]);
}
9. 用选择排序给10个整数排序(P222)(选择排序法的思路:以升序排列为例,首先在一组数种找到最小数及其位置,然后和第1个数交换,然后在除开第一个数剩下的数种再找出最小数及其位置,并与第二个位置上的数进行交换,以此类推完成一组数的排序)
#include"stdio.h"
#defineN10
main()
{inta[N];
intmin,pos;
inti,j;
printf("请输入原始数组\n");
for(i=0;i scanf("%d",&a[i]);
for(i=0;i {min=a[i];
pos=i;
for(j=i+1;j if(a[j] {min=a[j];
pos=j;
}
a[pos]=a[i];
a[i]=min;
printf("经过%d次排序后,数组便化为\n",i+1);
for(j=0;j printf("%d",a[j]);
}
}
10. 用顺序查找法在一组数中定位指定的数(P226)(其思路是:把要查找的数从给定的一组数的第一个数开始,逐个与要查找的数据进行比较,若某个数与待查找的数相等,则查找成功。如果直到最后一个也没有相等的,则说明这组数中没有待查找的数据。)
#include"stdio.h"
#defineN10
main()
{inta[N];
intx,i;
printf("请输入十个整数\n");
for(i=0;i scanf("%d",&a[i]);
printf("请输入要查找的数\n");
scanf("%d",&x);
for(i=0;i if(a[i]==x)
break;
if(i printf("找到%d位于数组的第%d位",x,i+1);
else
printf("没有找到\n");
}
11. 用二分查找法在一组数中定位指定的数(P227)(其思路是先把数组从中间分成两段,把待查找的数据与数组中间点元素进行比较,如果相等,则找到所需要的数,否则可以确定待查找的数据在前半段或是后半段。在确定了查找范围后,又按照相同的方式一分为二,进行比较判定是否找到或者确定下一轮的查找范围,直到查找到要查找的数据或者判定为没有要找的数据)
#include"stdio.h"
#defineN10
main()
{inta[N];
inti,j,mid,high=0,low=9,loca=0;
printf("请输入十个整数\n");
for(i=0;i scanf("%d",&a[i]);
printf("请输入要查找的数\n");
scanf("%d",&j);
if(ja[9])
loca=-1;
while(loca==0&&high<=low)
{mid=(high+low)/2;
if(j==a[mid])
{loca=mid;
printf("找到%d位于数组的%d位:\n",j,loca+1);
break;}
else
if(j low=mid-1;
else
high=mid+1;
if(loca==-1)
printf("%d不在表中\n");
}
}
12. 从键盘输入一个十进制整数,把它转化成二进制并输出(P135)
#include"stdio.h"
main()
{inta,e[10],c,i=0;
printf("请输入一个正整数\n");
scanf("%d",&a);
while(a!=0)
{c=a%2;
a=a/2;
e[i]=c;
i++;
}
for(;i>0;i--)
printf("%d",e[i-1]);
}
13. 从键盘输入一串字符串,找到其中的数字字符并输出
#include"stdio.h"
main()
{inti,j=0,s;
charm[100];
gets(m);
for(i=0;m[i]!=''\0'';i++){
if(m[i]>=''0''&&m[i]<=''9'')
{
s=m[i]-48;
j=j10+s;}
}
printf("%d",j);
}
插入一个数至有序数组中\n
#include"stdio.h"
main(){
inta[20]={13,24,29,36,41,46,52,54,56,58,60,62,65,70,82},i,j,x,temp1,temp2,max;
printf("请输入要插入的数:");
scanf("%d",&x);
for(i=0;i<20;i++)
if((a[i]>x)&&(a[i-1] temp1=a[i];
a[i]=x;
temp2=i;
break;}
else
if(a[14] a[15]=x;
for(j=i+1;j<20;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;}
for(i=0;i<20;i++)
printf("%d",a[i]);
}
|
|
|
|
|
|
|
|