2019年11月24日C语言作业错题

用C语言编写的代码程序是一个源程序。

以下不构成无限循环的语句或语句组是n=0; do{++n;}while(n<=0);。

已知int i,sum=0;执行以下程序段后的sum的值是16.for(i=7;i>=1;i=i-2){sum+=i;}

已知int i,sum=0;执行以下程序段后的sum的值是4.for(i=1;i<5;i=i+2){sum+=i;}

/*------------------------------------------------

【程序设计】 -- Guo S.


题目:编写函数fun(int n1, int n2),函数的功能是:

统计n1到n2之间(含n1和n2),

有几个素数。函数返回素数的个数。

提示:n1和n2的大小关系不确定,即无论n1和n2大小关系如何,函数fun均可对应。

比如,当n1为6, n2为8时,函数返回1,因为包括6和8,只有一个素数7

比如,当n1为8, n2为6时,函数也同样返回1,因为包括8和6,只有一个素数7


注意:部分源程序给出如下。请勿改动主函数

main和其它函数中的任何内容,仅在函

数fun的花括号中填入所编写的若干语句。

*********Begin**********和********** End **********不可删除

------------------------------------------------*/

#include "stdio.h"

#include "math.h"

void bky(void);

 

int fun(int n1, int n2)

{

/**********Begin**********/

/********** End **********/

}

main()

{

int k,n1,n2;

printf("请输入两个整数(用空格隔开):");

scanf("%d%d",&n1,&n2);

k=fun(n1,n2);

printf("%d和%d之间,有%d个素数\n",n1,n2,k);

bky();

}

void bky(void)

{

FILE IN,OUT;

int iIN1, iIN2,iOUT,i;

IN=fopen("in.txt","r");

if(IN==NULL)

{

printf("Please Verify The Currernt Dir..It May Be Changed");

}

OUT=fopen("out.txt","w");

if(OUT==NULL)

{

printf("Please Verify The Current Dir.. It May Be Changed");

}

for(i=0;i<6;i++)

{

fscanf(IN,"%d%d",&iIN1,&iIN2 );

iOUT=fun(iIN1, iIN2);

fprintf(OUT,"%d\n",iOUT);

}

fclose(IN);

fclose(OUT);

return ;

}

【参考代码】

int num=0, i, j, k, flg;

 

if(n1>n2){//确保n1小于n2

i=n1;

n1=n2;

n2=i;

}

 

for(i=n1;i<=n2;i++)

{

flg=1;

for(k=2;k<=sqrt(i);k++) // i-1, i/2均可

{

if(i%k==0)

{

flg=0;

break;

}

}

if(flg)

num++;

}

return num;

===============

【考生代码】

int i,j,t,b,s;

if(n1<n2){t=n1;

n1=n2;

n2=t;

}

for(i=n1;i<n2;i++){b=1;

for(j=2;j<=i/2;j++)

if(i%j==0){b=0;break;

}

if(b!=0) s++;

return s;

}


代码准确率:100.00%,得分比例:0.40

程序编译检测:编译成功,得分比例:0.40

程序结果检测:结果错误,得分比例:0.00

 

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据