以下是一个求两个数的最大公约数,最小公倍数的一个小程序,请高手看一下,我的问题是:当输入1,2,和输入两个相同的数是,为什么程序出错了呢?
for(g=1;g<(x+y)/2;g++)
if((x%g==0)&&(y%g==0))
i=g;为什么这句具体是怎么运行的?这个程序怎么改进?
程序如下:
#include <stdio.h>
#include <math.h>
void main()
{
int zdgys(int x,int y);
int zxgbs(int e,int f);
int a,b,c,d;
scanf("%d,%d",&a,&b);
c=zdgys(a,b);
d=zxgbs(a,b);
printf("zdgys is %d\n",c);
printf("zxgbs is %d\n",d);
}
int zdgys(int x,int y)
{int i,g;
for(g=1;g<(x+y)/2;g++)
if((x%g==0)&&(y%g==0))
i=g;
return(i);
}
int zxgbs(int e,int f)
{int s,g,i;
for(g=1;g<(e+f)/2;g++)
if((e%g==0)&&(f%g==0))
i=g;
s=e*f/i;
return(s);
}
谢谢你们对我的帮助,我编的这个程序确实很垃圾,很感谢yang83980901当面指出我的缺点,我已经把这个程序改进了,运行的很好,我这个程序错在调用函数的定义上,int i,g;
for(g=1;g<(x+y)/2;g++)这里有错,1+2=3;3/2=1.5,但我定义g是整型的,所以运行是出错了!
C语言高手请进来11
第一题:运行后,循环第一轮后输出8,第二轮后输出7,第三轮输出6,第四轮时达到要求退出循环,结束程序。选B 第二题:这个是找出小于等于50的整数中能被2、3、7整除的数,这个题直接从答案里找一个,所以选C 第三题:运行到这个时for(j=0;j < 3;j++){ if(j%2) continue;x++;} x++ ...
编程高手请进!(C语言)
printf("\\n NEXT?(Y\/N):");\/*选择是否重新游戏*\/ scanf("%c",&yes);} } 2.include <stdio.h> void main(){ int gj, mj, xj, t1, t2;for (gj=1; gj<=20; gj++){ for (mj=1; mj<34; mj++){ xj=100-gj-mj;t1=xj%3;t2=5*gj+3*mj+xj\/3;if (t1==0&&t2==100...
C语言高手请进啊,高分哦,详细的解释!!!
定义的数组为二维。所以 p[1] 是第二行的全部元素 即 France 另外它不是省略的 p[1][0],两者不同,前者是一行,后者是一个 另外,你可以从c语言的打印方式看出,前者 %s 是打印字符串 后者 %c 是打印字符(一个)希望对你有帮助啊!
C语言编程问题.请高手进(附源码)!!!HELP
printf("请输入菜名,按回车键结束\\n");scanf("%s",A);printf("\\n请输入拼音码(菜名首字母)&编码&价格{回车确定}\\n");scanf("%s%d%f",c,&d,&e);printf("此款菜:类别为%d,编码为%d,拼音吗为%s,菜名为%s,价格为%f\\n是否正确?(正确请输入1,否则按任意键退出):",b,d,c,A,e);scan...
c语言高手请进
include <stdio.h> int main(){ int i,j,k;for(i=0;i<9;i++){ for(j=0;j<9;j++){ for(k=0;k<9;k++){ if((i+j+k)<10 && i!=0)printf("%d%d%d ",i,j,k);} } } return 0;} 都类似的,只要改改if里的条件就可以了...q币啊.....
高分C语言问题~~·高手请进
思路:A[n]中,n代表有多少堆果子,A中的元素代表各堆的果子数目 int getValue(int A[]){ 初始 int S=0 1. (数组A)n个数字从小到大排序 (例如:1,2,9)2. 取上步中最小的两个数相加之和为一个M , S=S+M 3. 数组A中除去最小的两个数,然后将M加进去形成一个新数组A元素个数为 n...
C语言高手请进~~~
static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},这里定义了一个 结构数组a ,并且将其初始化了,其中a[0]={1,&a[1]},a[1]={2,&a[2]} a[2]={3,&a[0]},后面ptr = &a[1];就是让ptr指向a[1],所以ptr的值就是{2,&a[2]},也就是ptr->i1=2,答案d又...
c语言问题,高手请进谢谢!!!
即i+i--->这两个i些时都是3;而不是一个2,一个3;4。再一个++i 此时i加1得到i,i=3+1=4;由上面的理解知道i此时已经是4,5、由上面四步得到一个i=4,i+i+i的式子,写入数据得到12 今天上课还在纠结这个问题,一看到你的问题突然想起来了!呵呵 ...
几道c语言题目,还请高手不吝赐教,谢谢!不要嫌烦哈……
c=a;printf("a=%d b=%d c=%d\\n",a,b,c);程序的输出结果是()。A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50 答案:A 我认为是C,求教……if(a>b) 是不成立的,后面的语句不运行!a,b,c值不变 ...
c语言高手请进来...
void copy(char *f,char *t);int main(){ char a[]="iamaman"; \/\/ 要改成数组,原先那样定义的是指向常量的指针,是不允许修改的。char b[]="youareaman"; \/\/同上 printf("a=%s \\nb=%s \\n",a,b);copy(a,b);printf("a=%s b=%s ",a,b);getchar(); \/\/改成getchar ...