写以下c语言程序 求正整数2和n之间的所有完全数 求数组的累加和 int Sum(double a[],int num); 求字符串1在字符串2中出现的位置 char* StrPos(char* str2,char *str1)
时间: 2024-03-23 13:38:07 浏览: 59
请参考下面的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 求2到n之间的所有完全数
void PerfectNumbers(int n) {
for (int i = 2; i <= n; i++) {
int sum = 1;
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
sum += j;
if (j * j != i) sum += i / j;
}
}
if (sum == i) printf("%d ", i);
}
printf("\n");
}
// 求数组的累加和
double Sum(double a[], int num) {
double sum = 0.0;
for (int i = 0; i < num; i++) {
sum += a[i];
}
return sum;
}
// 求字符串1在字符串2中出现的位置
char* StrPos(char* str2, char* str1) {
char* pos = strstr(str2, str1);
return pos;
}
int main() {
// 测试完全数函数
printf("The perfect numbers between 2 and 1000 are:\n");
PerfectNumbers(1000);
// 测试数组累加和函数
double array[] = { 1.0, 2.0, 3.0, 4.0, 5.0 };
int num = sizeof(array) / sizeof(double);
double sum = Sum(array, num);
printf("\nThe sum of the array is: %f\n", sum);
// 测试字符串位置函数
char str1[] = "good";
char str2[] = "This is a good day.";
char* pos = StrPos(str2, str1);
printf("\nThe substring \"%s\" is found at position %ld of \"%s\".\n", str1, pos - str2, str2);
return 0;
}
```
该程序分别实现了求2到n之间的所有完全数、数组的累加和和字符串1在字符串2中出现的位置的功能。其中,求完全数的函数使用了两层循环,分别计算每个数的因子和,如果等于该数本身,则说明该数是完全数。求数组的累加和的函数使用了一个for循环,依次累加数组中的元素,并返回总和。求字符串1在字符串2中出现的位置的函数使用了C语言标准库中的strstr函数,该函数会在str2中查找str1的第一次出现,并返回该位置的指针。
阅读全文