编程序求100以内的素数,分别将它输出到显示器和x.txt文件中,要求每行5个数。(要求用c语言)
源程序代码以及算法解释如下:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int main(void)
{
const int n = 25;//定义成绩数量
int number[n];//定义存放成绩的数组
int p=0;
int flage=0;//标志变量
char Data[256];//定义存文件用的变量
FILE *pos;//定义一个文件指针
int ii = 0;//用于判断换行的变量
for (int i = 0; i <= 100; i++)//循环遍历
{
if (2 == i || 3 == i)//2,3都是素数
{
printf("%d\t", i);//打印
ii++;
flage = 1;//标志置位
}
for (int j = 2; j <= i / 2; j++)//判断
{
if (0 == i % j)
break;
if (i / 2 == j)
{
printf("%d\t", i);//打印
flage = 1;//标志置位
ii++;
}
if (ii == 5)//如果五个了进行换行
{
ii = 0;
printf("\n");
}
}
if (flage == 1)//标志置位则存到数组中
{
number[p] = i;
p++;
flage = 0;
}
}
if (pos = fopen("data.txt", "w+"))//写文件
{
for (int i = 0; i < n; i++) //循环写入
{
sprintf(Data, "%d\n", number[i]);//写入文件成绩
if ((i + 1) % 5 == 0)
cout << endl;
fputs(Data, pos);
}
fclose(pos);//关闭保存文件
}
return 0;
}
程序运行结果如下:
写入文件结果如下:
扩展资料:
【程序示例】从键盘输入一行字符,写入文件。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main(){
FILE *fp;
char ch;
//判断文件是否成功打开
if( (fp=fopen("D:\\demo.txt","wt+")) == NULL ){
printf("Cannot open file, press any key to exit!\n");
getch();
exit(1);
}
printf("Input a string:\n");
//每次从键盘读取一个字符并写入文件
while ( (ch=getchar()) != '\n' ){
fputc(ch,fp);
}
fclose(fp);
return 0;
}
说明:运行程序,输入一行字符并按回车键结束,打开D盘下的demo.txt文件,就可以看到刚才输入的内容。程序每次从键盘读取一个字符并写入文件,直到按下回车键,while 条件不成立,结束读取。
#include <math.h>
int ss(int n) /*检查n是否为素数,如果是则返回1,否则返回0*/
{
int i;
for (i=2; i<=(int)sqrt((double)n); i++)
if (n%i==0) return 0;
return 1;
}
int main(void)
{
FILE *fp;
fp=fopen("x.txt","w");
int i,j=0;
for (i=2; i<=100; i++)
if(ss(i))
{
j++;
printf("%5d",i);fprintf(fp,"%5d",i);
if (j%5==0) {printf("\n");fprintf(fp,"\n");}
}
fclose(fp);
return 0;
}
int is_prime(int x){
for (int i=2; i<x && x%i!=0; i++);
if (i == x) return 1;
else return 0;
}
void main()
{
int a, count=0;
FILE *x = fopen("x.txt", "w");
for (a=2; a<100; a++){
if (is_prime(a)){
printf("%d ", a);
fprintf(x, "%d ", a);
count++;
if(count%5 == 0){
printf("\n");
fprintf(x, "\n");
}
}
}
fclose(x);
}