程序设计基本算法例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计基本算法例题
例1:完数(一个数等于它的因子之和)
#include <stdio.h>
int wanshu(int x)
{
int i,sum=0;
for(i=1;i<x;i++)
if(x%i==0)
sum+=i;
if(sum==x)
return 1;
return 0;
}
int main()
{
int i;
for(i=0;i<1000;i++)
if(wanshu(i))
printf("%5d",i);
return 0;
}
例2:素数
#include <stdio.h>
int prime(int x)
{
int i;
for(i=2;i<x;i++)
if(x%i==0)
return 0;
return 1;
}
int main()
{
int i;
for(i=2;i<1000;i++)
if(prime(i)==1)
printf("%6d",i);
return 0;
}
例3:大整数加法
#include <stdio.h>
#include <string.h>
void main()
{
char a[202],b[202],c[202];
int i,j,c1=0,n1,n2,k,k1;
scanf("%s",a); //输入两个大整数
scanf("%s",b);
n1=strlen(a); //求出串长
n2=strlen(b);
if(n1>n2)
k1=n1; //k1存放的是较大串的串长else
k1=n2;
k=k1-1; //最后一位的下标
for(i=n1-1,j=n2-1;i>=0||j>=0;i--,j--,k--) {
n1=a[i]-'0'; //将每一位转换成整数
n2=b[j]-'0';
if(i<0) //如果a串处理完
n1=0;
if(j<0) //若b串处理完
n2=0;
c[k]=n1+n2+c1; //对应位相加
c1=c[k]/10; //求出进位
c[k]=c[k]%10; //求出个位数
c[k]=c[k]+'0'; //转换为字符
}
if(c1!=0)
printf("%d",c1);
for(k=0;k<k1;k++)
printf("%c",c[k]);
printf("\n");
}
例4:字符串循环左移P199
#include<stdio.h>
int main()
{
char a[81];
int j,x,i=0;
scanf("%c",&a[i]);
while(a[i]!='\n')
{
i++;
scanf("%c",&a[i]);
}
scanf("%d",&x);
for(j=x;j<i;j++)
printf("%c",a[j]);
for(j=0;j<x;j++)
printf("%c",a[j]);
return 0;
}
例5:字符串的查找与替换
#include<stdio.h>
int cmp(char s[],char t[]);
int main()
{
char s[100],t[20];
int index;
printf("请输入主串:");
gets(s);
printf("请输入子串:");
gets(t);
index=cmp(s,t);
if(index==0)
printf("匹配不成功!\n");
else
printf("匹配成功!%s在%s中的序号是:%d\n",t,s,index);
return 0;
}
int cmp(char s[],char t[])
{
int i=0,j=0,start=0;
while(s[i]!='\0'&&t[j]!='\0')
{
if(s[i]==t[j])//准备比较下一对字符
{i++;j++;}
else
{start++;i=start;j=0;}//一趟匹配失败,不再比较余下字符
}
if(t[j]=='\0')
return start + 1;
else
return 0;
}
例6:求两个随机数的最大公约数和最小公倍数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void CommonDivMul(int m, int n);
int p=0,q=0;
int main()
{
int m,n;
srand(time(NULL));
m=1+rand()%100;
n=1+rand()%100;
printf("随机数为%d %d",m,n);
CommonDivMul(m,n);
printf("公约数:%d\n公倍数: %d\n",p,q);
return 0;
}
void CommonDivMul(int m, int n)
{
int mt=m,nt=n,r;
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
p=n;
q=mt*nt/p;
return;
}。

相关文档
最新文档