当前位置: 代码迷 >> C语言 >> 帮忙改改
  详细解决方案

帮忙改改

热度:311   发布时间:2004-10-08 11:09:00.0
帮忙改改

这是个小程序

输入,a,b输出a,b间素数的个数,包含a,b

要求:让这个程序可以循环,就是让它可以反复执行

直到输入E才退出,(以下这个程序只能执行一次)

#include <stdio.h> int sushu(int a) { int k,flag; flag=0; for(k=2;k<a;k++) { if(a%k==0) flag=1; } if(flag==0) return (0); else return(1); }

void sushuab(int a,int b) { int i; int j=0; for(i=a;i<=b;i++) { if(sushu(i)==0&&i>1) j++; } printf("%d ",j); }

main () { int a,b,c; scanf("%d ",&a); scanf("%d ",&b); if(a>b) { c=a; a=b; b=c; } sushuab(a,b); getch(); }

循环这部分一直写不好

谢谢先

[此贴子已经被作者于2004-10-08 11:11:24编辑过]

搜索更多相关的解决方案: int  素数  flag  改改  sushu  

----------------解决方案--------------------------------------------------------

改用指针赋值了

可还是不能反复使用,只能用一次)

帮忙改改

#include <stdio.h> int sushu(int a) { int k,flag; flag=0; for(k=2;k<a;k++) { if(a%k==0) flag=1; } if(flag==0) return (0); else return(1); }

void sushuab(int a,int b) { int i; int j=0; for(i=a;i<=b;i++) { if(sushu(i)==0&&i>1) j++; } printf("%d ",j); } int* fuzhi() { int a,b,c; int *q; printf("Please input a:"); scanf("%d ",&a); printf("Please input b:"); scanf("%d ",&b); if(a>b) { c=a; a=b; b=c; } *(q)=a; *(q+1)=b; return (q); }

main () { do{ int *p; p=fuzhi(); printf("%d ",*(p)); printf("\n"); printf("%d ",*(p+1)); free(p); getch(); }while(1); }

谢谢先


----------------解决方案--------------------------------------------------------

我用C++的CIN代替了SCANF在C++里没有问题

可在C里就不行,我的意思就是这个代码在C++中的运行结果(程序可以反复使用)

按'#'后退出.

代码如下:

#include <stdio.h> #include <iostream.h> int sushu(int a) { int k,flag; flag=0; for(k=2;k<a;k++) { if(a%k==0) flag=1; } if(flag==0) return (0); else return(1); }

void sushuab(int a,int b) { int i; int j=0; for(i=a;i<=b;i++) { if(sushu(i)==0&&i>1) j++; } printf("%d ",j); } void main() { int a,b; int c; char ch; do{ ch=getchar(); cout<<"Please input a:"; cin>>a; cout<<endl<<"Please input b:"; cin>>b; if(a>b) { c=a; a=b; b=c; } sushuab(a,b); }while(ch!='#'); }

可不可以帮忙改成C可以用的程序

谢谢先

[此贴子已经被作者于2004-10-08 13:50:59编辑过]


----------------解决方案--------------------------------------------------------

这样,我们为了简单,先假设有一个函数原形为 int sushu(int a,int b) 它的返回值就是我们的答案--即:“输入,a,b输出a,b间素数的个数,包含a,b”

然后我们可以专心来写循环部分的代码

main() { int a,b;

printf("Press AnyKey to ENTER / Press 'E' to QUIT\n"); while( getch()!='e' ) { printf("\nPlease input a,b : "); scanf("%d,%d",&a,&b); printf("The Answer is %d\n",sushu(a,b)); printf("Go on? Press AnyKey to GOON/Press 'E' to QUIT"); } printf("\n88\nMy name is bcomer. Thank you!"); }

因为没有机器可以让我编译,所以如果如果有错误可以自己更正。


----------------解决方案--------------------------------------------------------

还有,我忘记了在循环中使用scanf函数会不会有副作用~~~如果没有,最好啦

如果有,那自己写个按键判断函数去代替scanf完成它未能完成的任务吧


----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2004-10-08 16:52:23的发言:

还有,我忘记了在循环中使用scanf函数会不会有副作用~~~如果没有,最好啦

如果有,那自己写个按键判断函数去代替scanf完成它未能完成的任务吧

谢谢 神vLinux飘飘!


----------------解决方案--------------------------------------------------------

Thank you!

程序可以正确执行了

[此贴子已经被作者于2004-10-08 17:38:37编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案