题目:输入一个正整数n,然后读取n个正整数a1,a2,a3,……an,最后再读一个正整数m,统计a1,a2,a3……中有多少个整数小于m。
思路:如果是先输入m在输入n个数据,可以不使用数组,直接定义一个临时变量来保存输入的数据。如果是先输入的是数据,后输入m的值,就需要定义数组来保存输入数据。
一.fopen的用法:
#include<stdio.h>
#define M 1000
int main()
{
FILE *fin,*fout;
fin = fopen("stat.in","rb");
fout = fopen("stat.out","wb");
int n,m,t,count=0;
int a[M];
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d",&a[i]);
}
fscanf(fin,"%d",&m);
for(int j=1;j<=n;j++)
{
if(m>a[j]) count++;
}
fprintf(fout,"%d",count);
fclose(fin);
fclose(fout);
}
fopen的使用方法,先声明变量fin和fout。
FILE *fin,*fout;
fin = fopen("stat.in","rb");
fout = fopen("stat.out","wb");
把scanf改为fscanf,把printf改为fprintf,并且分别加上参数fin,fout。
fscanf(fin,"%d",&a[i]);
fprintf(fout,"%d",count);
最后定义:
fclose(fin);
fclose(fout);
如果要改为标准输入输出加上
fin=stdin;
fout=stdout;
并且删除 fclose(fin);fclose(fout);
二.freopen的用法:
#include<stdio.h>
#define M 1000
int main()
{
freopen("stat.in","r",stdin);
freopen("stat.out","w",stdout);
int n,m,t,count=0;
int a[M];
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int j=1;j<=n;j++)
{
if(m>a[j]) count++;
}
printf("%d",count);
}
只需加上
freopen("stat.in","r",stdin);
freopen("stat.out","w",stdout);