c语言编程考试

C语言程序设计
简单程序考核
功能
将数据文件中的n个整数中的偶数加1后,输出全部的素数。
输入
从当前目录的文本文件data.in中读取数据,文本文件中只有一行整数,整数与整数之间用一个空白字符隔开。
输出
输出转换后的素数,整数与整数之间用一个TAB隔开,最后一个整数后面紧接一个换行符。
返回值

返回值

含义

0

成功运行

1

无法打开数据文件

2

数据文件中的数据无效

说明
若data.in 文件中的元素个数超过100个,只读取前100个
数据文件的内容不满足输入要求时,视为数据无效。
示例
假设数据文件内容为:
1 2 35 4 27 6 7 8
则输出应该是:
1 3 5 7 7
注:
所举输入输出示例旨在帮助理解题意,并非评分使用的测试数据。

#include <stdio.h>
#include <math.h>

int isPrime(int n) {
int i,flag = 1;
if(n < 2) return 0;
for(i = 2; i <= sqrt(n) && flag; ++i)
if(n % i == 0) flag = 0;
return flag;
}

int main() {
int n;
FILE *fin = fopen("data.in","rt");
if(fin == NULL) {
printf("不能打开文件。\n");
return 1;
}
while(!feof(fin)) {
if(fscanf(fin,"%d",&n) != 1) {
printf("\n");
return 2;
}
if(n % 2 == 0) ++n;
if(isPrime(n)) printf("%d\t",n);
}
printf("\n");
fclose(fin);
return 0;
}

追问

你好,我用这个试了,结果是这样

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-11
帮你写可否?追问

好呀,好呀,尽快吧

追答

写一个函数?那个返回值 没看明白

追问

你好,不是写一个函数,就是要完成这个题目,写个完整的程序,实现这个功能,谢谢啊

哦,不是就是c语言程序考核

追答用这个测试通过了

你测试下,可以就采纳吧

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int isprime(int n)
{
    int i,k=(int)sqrt(n*1.0);
    for(i=2;i<=k;i++)
        if(n%i==0)
            return 0;
        return 1;
        
}
int check(char *str)
{
    int i=0;
    while(str[i]!='\0')
    {
        if(str[i]<'0' || str[i]>'9')
            return 0;
        i++;
    }
    return 1;
}
int main()
{
    FILE*fp;
    int data[101],i,count=0,temp;
    char str[20];
    fp=fopen("f:/test.txt","r");
    
    if(fp==NULL) return 1;
    while(!feof(fp))
    {
        fscanf(fp,"%s",str);
        if(!check(str)) return 2;
        temp = atoi(str);
        if(temp%2==0) temp++;
        if(isprime(temp))
            data[count++]=temp;
        if(count==100) return 0;
    }
    for(i=0;i<count;i++)
        if(i!=count-1)
            printf("%d ",data[i]);
        else
            printf("%d\n",data[i]);
    return 0;

}

追问


显示这个耶

相似回答