在数据结构中:用C语言求 100 以内的素数。 要求: (1)以十进制输出这些素数,每行 10 个,每输出一个素数都要有数秒的停顿,且每输出一个素数,在原素数显示区内消失。 (2)统计这些素数的个数,以十进制形式输出。 (3)计算这些素数之和,以十进制形式输出,并让该和闪烁 3 次。 (4)数据的输入和结果的输出都要有必要的提示,且提示独占一行。 (5)要使用到子程序。
时间: 2024-02-16 17:05:27 浏览: 73
C语言 求素数的和。
好的,这里是用C语言实现的代码:
```c
#include <stdio.h>
#include <conio.h>
#include <windows.h>
// 求素数
int* get_prime() {
static int primes[30];
int prime[101];
for (int i = 0; i <= 100; i++) {
prime[i] = 1;
}
prime[0] = prime[1] = 0;
for (int i = 2; i < 10; i++) {
if (prime[i]) {
for (int j = i * i; j <= 100; j += i) {
prime[j] = 0;
}
}
}
int count = 0;
for (int i = 2; i <= 100; i++) {
if (prime[i]) {
primes[count++] = i;
}
}
primes[count] = -1; // 用-1表示素数数组的结尾
return primes;
}
// 输出素数
void print_primes(int* primes) {
system("cls"); // 清空屏幕
int count = 0;
for (int i = 0; primes[i] != -1; i++) {
count++;
printf("%d ", primes[i]);
if (count % 10 == 0) {
printf("\n");
}
Sleep(1000); // 停顿一秒
system("cls"); // 清空屏幕
}
}
// 统计素数个数和求和
void count_sum(int* primes, int* count, int* s) {
*count = 0;
*s = 0;
for (int i = 0; primes[i] != -1; i++) {
*count += 1;
*s += primes[i];
}
}
// 让素数之和闪烁三次
void blink_sum(int s) {
printf("\n素数之和为:%d", s);
for (int i = 0; i < 3; i++) {
Sleep(500);
system("cls");
Sleep(500);
printf("\n素数之和为:%d", s);
}
}
// 主程序
int main() {
printf("欢迎使用求100以内素数程序!\n");
printf("按任意键开始...");
getch();
int* primes = get_prime();
printf("\n100以内的素数为:\n");
print_primes(primes);
int count, s;
count_sum(primes, &count, &s);
printf("\n100以内的素数个数为:%d", count);
blink_sum(s);
printf("\n程序结束,感谢使用!");
return 0;
}
```
运行程序后,可以看到程序会提示用户按任意键开始。然后,程序会先求出100以内的素数,并在屏幕上输出每个素数,每个素数输出后会停顿一秒,并且在屏幕上消失。
输出素数之后,程序会统计素数的个数和素数的和,并在屏幕上输出。素数的和会闪烁三次,最后程序会输出结束语并退出。
阅读全文