一道简单的C语言程序设计题,请懂的人帮忙指正!!!

作者&投稿:崇诸 (若有异议请与网页底部的电邮联系)
一道c语言程序设计题,请懂的人帮忙!!~

tg_scorpio在您第四次分的时候,就出错了。
按找您的每次分的结果为:
6,5,15,19,10,7,8,10,17,15,
6,11,18,15,9,8,9,14,17,11,
9,15,17,13,9,9,12,16,15,9,
12,17,16,12,10,11,14,16,13,10,
15,17,14,11,11,13,15,15,12,11,
16,16,13,12,13,15,16,14,12,14,
16,15,13,13,15,16,15,13,13,15,
16,15,14,15,16,16,15,14,15,16,
16,15,15,16,16,16,15,15,16,16,
16,16,16,16,16,16,16,16,16,16,
经过11次后,大家手上都有16块糖.

我按照你的分发顺序,计算的结果为:
6,5,15,19,10,7,8,10,17,15,
6,11,18,15,9,8,9,14,17,11,
9,15,17,13,9,9,12,16,15,9,
13,17,16,12,10,11,14,16,13,10,
16,17,14,11,11,13,15,15,12,12,
17,16,13,12,13,15,16,14,12,14,
17,15,13,13,15,16,15,13,13,16,
17,15,14,15,16,16,15,14,15,17,
17,15,15,16,16,16,15,15,17,18,
17,16,16,16,16,16,16,17,18,18,
17,16,16,16,16,16,17,18,18,18,
17,16,16,16,16,17,18,18,18,18,
17,16,16,16,17,18,18,18,18,18,
17,16,16,17,18,18,18,18,18,18,
17,16,17,18,18,18,18,18,18,18,
17,17,18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18,18,18,

after 17 times,everyone hav 18 candies!

这题应该考虑两种情况,即老师的发糖顺序有两种,所以答案应该有两组:
15,6,5,15,19,10,7,8,10,17,
17,11,6,11,18,15,9,8,9,14,
16,15,9,9,15,17,13,9,9,12,
14,16,13,10,13,17,16,12,10,11,
13,15,15,12,12,16,17,14,11,11,
13,15,16,14,12,14,17,16,13,12,
13,15,16,15,13,13,16,17,15,13,
14,15,16,16,15,14,15,17,17,15,
15,15,16,16,16,15,15,17,18,17,
17,16,16,16,16,16,16,17,18,18,
18,17,16,16,16,16,16,17,18,18,
18,18,17,16,16,16,16,17,18,18,
18,18,18,17,16,16,16,17,18,18,
18,18,18,18,17,16,16,17,18,18,
18,18,18,18,18,17,16,17,18,18,
18,18,18,18,18,18,17,17,18,18,
18,18,18,18,18,18,18,18,18,18,

after 17 times,everyone hav 18 candies!
6,5,15,19,10,7,8,10,17,15,
6,11,18,15,9,8,9,14,17,11,
9,15,17,13,9,9,12,16,15,9,
13,17,16,12,10,11,14,16,13,10,
16,17,14,11,11,13,15,15,12,12,
17,16,13,12,13,15,16,14,12,14,
17,15,13,13,15,16,15,13,13,16,
17,15,14,15,16,16,15,14,15,17,
17,15,15,16,16,16,15,15,17,18,
17,16,16,16,16,16,16,17,18,18,
17,16,16,16,16,16,17,18,18,18,
17,16,16,16,16,17,18,18,18,18,
17,16,16,16,17,18,18,18,18,18,
17,16,16,17,18,18,18,18,18,18,
17,16,17,18,18,18,18,18,18,18,
17,17,18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18,18,18,

after 34 times,everyone hav 18 candies!

源代码如下:

int main()
{
#define BABE_COUNT 10//babe人数
int next_babe;//下一个babe手里的糖果总数
int current_babe;
int loop_count=0;
int ok_flag;
int next_babe_order;
int babe[BABE_COUNT];//每个babe手里的糖果数

//方向一
babe[0]=10;
babe[1]=2;
babe[2]=8;
babe[3]=22;
babe[4]=16;
babe[5]=4;
babe[6]=10;
babe[7]=6;
babe[8]=14;
babe[9]=20;
do{
//开始分糖
if(babe[0]%2==1)
babe[0]++;
next_babe=babe[0];
for (int i=0; i<BABE_COUNT; i++){
next_babe_order=(i+1) % BABE_COUNT;
if ( babe[ next_babe_order ] % 2 == 1 )//下一个babe不够偶数,则问老师要一个
babe[ next_babe_order ]++;
current_babe=next_babe;
next_babe=babe[ next_babe_order ];//得到下一个babe传递前的个数
babe[ next_babe_order ]=current_babe/2+next_babe/2;//得到下一个babe传递后的个数
}
loop_count++;

//显示本次分发结果
for ( int kk=0;kk<10;kk++)
printf("%d,",babe[kk]);
printf("
");

//判断是否都相等
ok_flag=1;
for (int i=1; i<BABE_COUNT; i++){
if(babe[0]!=babe[i]){
ok_flag=0;
break;
}
}
if(ok_flag==1)break;

}
while(1);

//显示结果
printf("
after %d times,everyone hav %d candies!
",loop_count,babe[0]);

//方向二
babe[0]=10;
babe[1]=2;
babe[2]=8;
babe[3]=22;
babe[4]=16;
babe[5]=4;
babe[6]=10;
babe[7]=6;
babe[8]=14;
babe[9]=20;
do{
//开始分糖
if(babe[BABE_COUNT-1]%2==1)
babe[BABE_COUNT-1]++;
next_babe=babe[BABE_COUNT-1];
for (int i=BABE_COUNT-1; i>=0; i--){
if(i==0)
next_babe_order=9;
else
next_babe_order=(i-1);
if ( babe[ next_babe_order ] % 2 == 1 )//下一个babe不够偶数,则问老师要一个
babe[ next_babe_order ]++;
current_babe=next_babe;
next_babe=babe[ next_babe_order ];//得到下一个babe传递前的个数
babe[ next_babe_order ]=current_babe/2+next_babe/2;//得到下一个babe传递后的个数
}
loop_count++;

//显示本次分发结果
for ( int kk=0;kk<10;kk++)
printf("%d,",babe[kk]);
printf("
");

//判断是否都相等
ok_flag=1;
for (int i=1; i<BABE_COUNT; i++){
if(babe[0]!=babe[i]){
ok_flag=0;
break;
}
}
if(ok_flag==1)break;

}
while(1);

//显示结果
printf("
after %d times,everyone hav %d candies!
",loop_count,babe[0]);

return 0;
}

Hi里说

我想大家没理解楼主的意思,每个字母代表一个十进制数字,程序要求的是EGAL每个字母代表的值,我的做法是:
EGAL*L=LGAE
左边可以表示为:
E*L*(10+3E)+G*L*(10+2E)+A*L*(10+1E)+L*L*(10+0E)
右边可以表示为:
L*(10+3E)+G*(10+2E)+A*(10+1E)+E*(10+0E)
左边减去右边为:
(E*L-L)*(10+3E) + (G*L-G)*(10+2E) + (A*L-A)*(10+1E) + (L*L-E)*(10+0E) = 0

所以:
E*L-L = 0
G*L-G = 0
A*L-A = 0
L*L-E = 0

L = E = 1; G = A = [1-9];

这是数学解法,如果C编程解的话,最简单的方法是穷举法,把A,E,G,L是个代表的数字从0到9(有些不能为0) 循环,如果式子相等就是解之一。

LGAE = EGAL * L

对啊,赋值运算符的左边只能是个变量,不能是表达式也不能是常量,比如:5=EGAL * L也同样错误~!~!~

#include<stdio.h>
void main()
{
int L ,G, A ,E ;
for(L=1;L<10;L++)
for(G=0;G<10;G++)
for(A=0;A<10;A++)
for(E=1;E<10;E++)
{
if((E*1000+G*100+A*10+L)*L==(L*1000+G*100+A*10+E))
printf("\nE--%d G--%d A--%d L--%d",E,G,A,L);
}
getchar();

}

......
int
minute1
=
time1
%
100;
int
hour1
=
time1
/
100;
int
minute2
=
time2
%
100;
int
hour2
=
time2
/
100;
if(minute1
<
minute2){
hour1
-=1;
minute1
+=
60;
}
minutes
=
minute1
-
minute2;
hour
=
hour1
-
hour2;
......

#include
void
main()
{
int
L
,G,
A
,E
;
for(L=1;L<10;L++)
for(G=0;G<10;G++)
for(A=0;A<10;A++)
for(E=1;E<10;E++)
{
if((E*1000+G*100+A*10+L)*L==(L*1000+G*100+A*10+E))
printf("\nE--%d
G--%d
A--%d
L--%d",E,G,A,L);
}
getchar();
}


10道经典的C语言例题(含参考程序)
1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。include include int main(){ int bai_wei,shi_wei,ge_wei,i,sum=0;for(i=100;i<1000;i++){ bai_wei=i\/100;shi_wei=(i%100)\/...

最简单的C语言代码
最简单的C语言代就是输出“helloWord”,通常是作为初学编程语言时的第一个程序代码。具体代码如下:include <stdio.h> int main(){ printf("Hello, World! \\n");return 0;}

高手们,帮我编几个c语言的小程序!!谢谢.明天就要交!!
编一C程序,它能读入两个整数m与n,计算并输出m与n的绝对值的最大公约数及最小公倍数 解:源程序如下:int gys (int x,int y){ int j;j=(x<y)?x:y;for(;j>0;j--)if(x%j==0&&y%j==0)break;else continue;return (j);} int gbs (int z,int w){ int i;i=(z>w)?z:...

这道C语言怎么写?麻烦大佬了
代码没错,更严谨的话应该把sqrt(m+1)改为sqrt(m)我运行是没问题的:如上图所示,成功输出了所有的素数 所以应该是编译器的问题,可以搜索下错误提示具体看看是什么原因 实在不行就重装Visual Studio或者换其他的编译器 其实一些简单的代码在网上随便搜一个在线编译的平台都可以跑,比如python123.io ...

简单c语言程序
1、★编写程序,输入两个整数:1500和350,求出它们的商和余数并输出。main(){int a;int b;scanf("%d%d",a,b)printf("商:%d\\n余数:%d",a\/b,a%b);} 2、★编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,b中原来的值给c, c中原来的值给a,且输出改变后...

如何编写C语言程序?
1.打开桌面上的DEV_C++,进入如下界面:2.快捷键“CTRL+N”建立新源代码。3.输入源代码,下面给出最简单的Hello,world源代码:include <stdio.h> int main( ){ printf("Hello,World\\n");return 0;} 4.按下F11编译并且运行源代码,得到运行结果:5.点击任意键返回源代码编辑界面可以继续进行开发...

请问下面这道C语言分段函数题代码怎么写?
按照题目要求编写的分段函数的C语言程序如下(见图)

哪位大佬能帮看看这道c语言?
所以,定义2个指针分别指向a,b最后一个输入的元素地址,嵌套循环,分别往前移动,同时比较两数组元素,每次找到对应位置就将a移位并插入b的位置。ps:由于存在b小于a的所有元素这种特殊情况,循环外还有a数组全部后移的情况。故位移写成单独函数,符合编程习惯。下面是代码:include <stdio.h> void move1...

三道c语言的程序题要求要步骤全、最好把思路写上 先上200分在线等_百 ...
第一题很简单,没啥好说的,就是输入数字,然后一个简单的 switch case 语句。include <stdio.h> int main(){ int a, b, opr;printf("输入两个数字,如 3 5 (数字用空格分开)\\n");scanf("%d %d", &a, &b);printf("选择计算方式:\\n");printf("1. 加, 2. 减, 3. 乘, ...

C语言程序两道题目
while(a>++c)j++;当a大于C时结束循环,在此语句中++c和判断语句在一条语句中,因此实际上这语句相当于while(a>(c+1)){j++;c=c+1;},所以a和c+1之间相差4,有4次机会循环,因此j=4,如果这里是c++,那么相当于while(a>c){j++;c=c+1;},结果就变成5了 do k++;while(a>d++);...

凤县15839555116: 一道简单的C语言程序设计题,请懂的人帮忙指正!!! -
晏左欧迪: 我想大家没理解楼主的意思,每个字母代表一个十进制数字,程序要求的是EGAL每个字母代表的值,我的做法是:EGAL*L=LGAE 左边可以表示为:E*L*(10+3E)+G*L*(10+2E)+A*L*(10+1E)+L*L*(10+0E) 右边可以表示为:L*(10+3E)+G*(10+2...

凤县15839555116: 菜鸟求助:一道很简单的C编程题 -
晏左欧迪: 这样是可以的,形式是输入一个数跟着输出绝对值 EOF指的是end of file.是一个特定的标记 #include <stdio.h> main() { float a; while(scanf("%f",&a)!=EOF) //这个语句的意思就是用a来接收输入的数 //并以Ctrl+z结束整个程序 { if (a<0) a=-a; ...

凤县15839555116: 一道简单的C语言程序设计题 -
晏左欧迪: ......int minute1 = time1 % 100; int hour1 = time1 / 100; int minute2 = time2 % 100; int hour2 = time2 / 100; if(minute1hour1 -=1; minute1 += 60; } minutes = minute1 - minute2; hour = hour1 - hour2;......

凤县15839555116: ~~帮忙做个简单的C语言程序设计题目~~~急!!! -
晏左欧迪: 展开全部#include void f(char *p) { int i,j; i=j=0; while( *(p+i)!='\0') /* p[i]=*(p+i) */ { if(*(p+i)!=' ') /* p[i]!=空格 */ { *(p+j)=*(p+i); /*把不是空格的字符重新赋值给s[]*/ j++; /*指向下一个未被赋值的内存*/ } i++; /*指向下一个为被判断的字符*/ } *(...

凤县15839555116: 简单的C语言编程题,请帮忙做一下 -
晏左欧迪: 1)#include<stdio.h> int main() { int n; scanf("%d",&n); if(n%2==1)n++;else n+=2;printf("%d\n",n); system("pause");return 0; }2) #include<stdio.h> int main() { int n,m; scanf("%d %d",&n,&m); if(n%m==0)printf("%d是%d的倍数\n",n,m);else printf("%d不是%d的倍数\n",n,m); system("pause");return 0; }

凤县15839555116: 一道简单的C语言编程题
晏左欧迪: 如下,望采纳#include <stdio.h>#include <stdlib.h> int main(){ int a[10],i,j; for(i=0;i<10;i++) scanf("%d",&a[i]); //输入10个数 //冒泡排序,从小到大 for(i=0;i<10;i++) { for(j=i+1;j<10;j++) { if(a[j]<a[i]) { int tmp=a[j]; a[j]=a[i]; a[i]=tmp; } } } //输出 for(j=0;j<10;j++) printf("%d ",a[j]); printf("\n"); return 0;}

凤县15839555116: 简单C语言程序设计题 -
晏左欧迪: #include "stdio.h" void main(){ int n; int a,b,c,d; printf("input a number:"); scanf("%d",&n); a=n/1000; /*千位*/ b=n%1000/100; /*百位*/ c=n%100/10; /*十位*/ d=n%10; /*个位*/ printf("%d+%d+%d+%d=%d\n",a,b,c,d,a+b+c+d); }#...

凤县15839555116: 求助:比较简单的C语言程序设计题目 -
晏左欧迪: 1、 #includeint main(int argc, char* argv[]) { long n = 0; printf("请输入一个整数\n"); scanf("%ld", &n); if (n % 2 == 0) printf("%ld是偶数\n", n); else printf("%ld是奇数\n", n); return 0; } 2、 #includeint main(int argc, char* argv[]) { long a ...

凤县15839555116: 简单的C语言编程题 -
晏左欧迪: #include void main() {int h; float r,v; r=2.5;h=5; v=r*r*3.14*h/3; ptinrf(

凤县15839555116: 简单的C语言程序设计题,请高手进来解答!
晏左欧迪: #include <stdio.h>void abc(int y,int m,int d) { int sum=0; int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((y%4==0&&y%100!=0)||(y%400==0)) days[2]=29; for(int i=0;i<m;i++) { sum+=days[i]; } sum+=d; printf("%dth Day of this year\n",sum); ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网