c语言编程,后天考试 谢谢

编写函数void fun(char s1[ ],int n,int m,char s2[ ]),求一个字符串的从第n个字符开始、长度为m的子串。要求在main函数中输入字符串s1,n,m,调用fun函数后,输出求得的子串。例如:字符串为abcdefgh,输入开始位置n:3,长度m:4,则输出结果为:cdef。

编写函数int fun(int n)判断一个数n是否完数,是返回1,不是返回0,完数定义:如果一个数等于其所有真因子(不含自身)之和,则该数为完数,例如6的真因子有1,2,3,且6=1+2+3,所以6是完数。要求在main函数中求出2~1000中所有的完数,并输出。

编写函数int fun(int n,int a[ ]),求出小于或等于n的所有素数并放在a数组中,函数返回所求出的素数的个数。要求在main函数中输入n值,并输出数组a。

第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]);
}本回答被网友采纳
相似回答