标题:帮忙改改
只看楼主
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
 问题点数:0 回复次数:6 
帮忙改改

这是个小程序

输入,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 
2004-10-08 11:09
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
得分:0 

改用指针赋值了

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

帮忙改改

#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); }

谢谢先

2004-10-08 13:30
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
得分:0 

我用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编辑过]

2004-10-08 13:41
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 

这样,我们为了简单,先假设有一个函数原形为 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!"); }

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


淘宝杜琨
2004-10-08 16:41
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 

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

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


淘宝杜琨
2004-10-08 16:52
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
得分:0 
以下是引用神vLinux飘飘在2004-10-08 16:52:23的发言:

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

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

谢谢 神vLinux飘飘!

2004-10-08 17:00
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
得分:0 

Thank you!

程序可以正确执行了

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

2004-10-08 17:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-6164-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.338244 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved