这是个小程序
输入,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编辑过]
----------------解决方案--------------------------------------------------------
改用指针赋值了
可还是不能反复使用,只能用一次)
帮忙改改
#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完成它未能完成的任务吧
----------------解决方案--------------------------------------------------------
还有,我忘记了在循环中使用scanf函数会不会有副作用~~~如果没有,最好啦
如果有,那自己写个按键判断函数去代替scanf完成它未能完成的任务吧
谢谢 神vLinux飘飘!
----------------解决方案--------------------------------------------------------
Thank you!
程序可以正确执行了
[此贴子已经被作者于2004-10-08 17:38:37编辑过]
----------------解决方案--------------------------------------------------------