用C语言程序读取文件然后完成这些题 47.文本文件a.txt中存储的都是int型整数,空格分隔。求

用C语言程序读取文件然后完成这些题
47.文本文件a.txt中存储的都是int型整数,空格分隔。求其中的所有数的中位数。
48.文本文件a.txt中存储的都是int型整数,空格分隔。求其中所有素数的个数。
49.文本文件a.txt中存储的都是int型整数,空格分隔。求其中三位数的个数。
50.文本文件a.txt中存储的都是int型整数,空格分隔。将其中的素数输出到文本文件b.txt。

第1个回答  2016-12-19

47.

#include <stdio.h>
int main(void){
int a[2000],i,j,k,n,nh;
    FILE *fp;
    if((fp=fopen("a.txt","r"))==NULL){
        printf("Open the file failure...\n");
        return 0;
    }
    for(n=0;fscanf(fp,"%d",a+n)==1;n++);
    fclose(fp);
    for(nh=n>>1,i=0;i<n;i++){
        for(k=i,j=k+1;j<n;j++)
            if(a[k]>a[j])
                k=j;
        if(k-i)
            j=a[k],a[k]=a[i],a[i]=j;
        if(i==nh){
            printf("The result is %g\n",n&1 ? a[i] : (a[i]+a[i-1])/2.0);
            break;
        }
    }
    return 0;
}

48.

#include <stdio.h>
int prime(int n){
    int i;
    if(n>2 && !(n&1) || n<2)
        return 0;
    for(i=3;i*i<=n;i+=2)
        if(!(n%i))
            return 0;
    return 1;
}
int main(void){
    int n,m,x;
FILE *fp;
if((fp=fopen("a.txt","r"))==NULL){
printf("Open the file failure...\n");
return 0;
}
for(m=n=0;fscanf(fp,"%d",&x)==1;n++)
if(prime(x))
m++;
fclose(fp);
    printf("A total of %d prime(s).\n",m); 
    return 0;
}

49.

#include <stdio.h>
int main(void){
    int n,m,x;
    FILE *fp;
    if((fp=fopen("a.txt","r"))==NULL){
        printf("Open the file failure...\n");
        return 0;
    }
    for(m=n=0;fscanf(fp,"%d",&x)==1;n++)
        if(x>99 && x<1000)
            m++;
    fclose(fp);
    printf("It is %d.\n",m); 
    return 0;
}

50.

#include <stdio.h>
int prime(int n){
    int i;
    if(n>2 && !(n&1) || n<2)
        return 0;
    for(i=3;i*i<=n;i+=2)
        if(!(n%i))
            return 0;
    return 1;
}
int main(void){
    int n,x;
    FILE *fpi,*fpo;
    fpi=fopen("a.txt","r");
    fpo=fopen("b.txt","w");
    if(fpi==NULL || fpo==NULL){
        printf("Open the file failure...\n");
        if(fpi) fclose(fpi);
        if(fpo) fclose(fpo);
        return 0;
    }
    for(n=0;fscanf(fpi,"%d",&x)==1;n++)
        if(prime(x))
            fprintf(fpo,"%d ",x);
    fclose(fpi);
    fputc('\n',fpo);
    fclose(fpo);
    return 0;
}

本回答被网友采纳
相似回答