第1个回答 2011-05-07
第一题:
#include<stdio.h>
void fun(char s1[],int n,int m,char s2[])
{
for(int i=n-1,j=0;s1[m]&&j<m;i++,j++)
{
s2[j]=s1[i];
}
s2[j+1]='\0';
for(i=0;s2[i]!='\0';i++)
printf("%c",s2[i]);
printf("\n");
}
void main()
{
int n,m;
char s1[256],s2[256];
printf("请输入一个字符串:");
scanf("%s",&s1);
printf("输入要求截取字符串的起始位置和长度:");
scanf("%d%d",&n,&m);
fun(s1,n,m,s2);
}
第二题:
#include<stdio.h>
int fun(int n)
{
int temp1=0,temp[256];
for(int i=1,j=0;i<n;i++)
{
if(n%i==0)
{
temp[j]=i;
j++;
}
}
for(i=0;i<j;i++)
{
temp1+=temp[i];
}
if(temp1==n)
return 1;
else
return 0;
}
void main()
{
printf("完数如下:\n");
for(int i=2;i<1000;i++)
if(fun(i))
printf("%d ",i);
printf("\n");
}
第三题:
#include<stdio.h>
#include<math.h>
int PD(int n)//判断一个数是不是素数
{
int temp,mark=1;
temp=(int)sqrt(n);
for(int i=2;i<=temp;i++)
{
if(n%i==0)
{
mark=0;//不是素数
break;
}
}
return mark;
}
int fun(int n,int a[])
{
for(int i=2,k=0;i<=n;i++)//k用来记录素数个数
{
if(PD(i))
{
a[k]=i;
k++;
}
}
return k;
}
void main()
{
int n,a[256],count;
printf("请输入一个整数:");
scanf("%d",&n);
count=fun(n,a);
printf("素数的个数:%d\n",count);
printf("小于%d的素数如下:\n",n);
for(int i=0;i<count;i++)
printf("%d ",a[i]);
}
都是调试通过的,你自己可以试试,我也是初学者,呵呵
第2个回答 2011-05-06
#include<stdio.h>
void fun(char s1[ ],int n,int m,char s2[ ])
{
s1[n-1+m]='\0';
strcpy(s2,&s1[n-1]);
}
// 1 yes
int wan_shu(int n){
int i,sum=0;
for (i=1;i< n;i++) if ( (n % i) == 0) sum=sum+i;
if (sum==n) { return 1;} else return 0;
}
int su_shu(int n, int a[])
{
int i,j,flag,NN=0;
for (j=2;j<=n;j++){
flag = 1;
for (i=2;i<=j/2; i++) { if ( (j % i) == 0) flag = 0; }
if (flag == 1) { a[NN]=j; NN=NN+1;}
}
return NN;
}
void main()
{
char s[100],s2[100];
int i,n,m,NN;
int a[100];
printf("please enter string: abcdefgh\n");
gets(s);
printf("please enter n,m 3 4\n");
scanf("%d %d",&n,&m);
fun(s,n,m,s2);
printf("%s\n",s2);
printf("WanShu\n");
for (i=2;i<=1000;i++) if (wan_shu(i) == 1) printf("%d\n",i);
printf("\nplease enter n 20\n");
scanf("%d",&n);
printf("SuShu\n");
NN= su_shu( n, a);
for (i=0;i<NN;i++) printf("%d\n",a[i]);
}本回答被网友采纳