C语言:求n(n<10000)以内的所有四叶玫瑰数。-将字符串s1和s2合并形成新的字符串s3,先取出1的第一个字符放入3,再取出2的第一个字符放入3,

时间:2022-08-07 00:23:02

//函数fun功能:求n(n<10000)以内的所有四叶玫瑰数并逐个存放到result所指数组中,个数作为返回值。如果一个4位整数等于其各个位数字的4次方之和,则称该数为函数返回值。

 #include<stdio.h>
#pragma warning (disable:4996)
int fun(int n, int result[])
{
int sum=,j=;
int a, b, c, d;
for (int i = ; i < n; i++)
{
a = i / ;
b = (i % ) / ;
c = (i % ) / ;
d = i % ;
if ((a*a*a*a + b * b*b*b + c * c*c*c + d * d*d*d) == i)
{
result[j++] = i;
}
}
return j;
}
main( )
{
int result[], n, i;
void NONO(int result[], int n);
n = fun(, result);
for(i=; i<n; i++) printf("%d\n", result[i]);
NONO(result, n);
} void NONO(int result[], int n)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp ;
int i; fp = fopen("out.dat","w") ;
fprintf(fp, "%d\n", n);
for(i=; i<n; i++) fprintf(fp, "%d\n", result[i]);
fclose(fp);
}

//函数fun将字符串s1和s2合并形成新的字符串s3,先取出1的第一个字符放入3,再取出2的第一个字符放入3,中,以此类推,若1和2的长度不等,较长的字符顺序放在新生成的3后。

 #include <stdio.h>
#include <string.h>
#pragma warning (disable:4996)
void fun( char *s1, char *s2, char *s3)
{ int i,j;
/**********************found***********************/
for(i = , j = ; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + ) //j自增2
{ s3[j] = s1[i];
s3[j+] = s2[i];
}
if (s2[i] != '\0')
{ for(; s2[i] != '\0'; i++, j++)
/**********************found***********************/
s3[j] = s2[i];
}
else if (s1[i] != '\0')
{ for(; s1[i] != '\0'; i++, j++)
s3[j] = s1[i];
}
/**********************found***********************/
s3[j] = '\0';
}
void main()
{ char s1[], s2[], s3[];
printf("Please input string1:");
gets(s1);
printf("Please input string2:");
gets(s2);
fun(s1,s2,s3);
printf("string:%s\n", s3);
}