1. 首页 > 科技

C语言中的问题 新人 麻烦详细过程说明一下谢谢了 百钱买百鸡问题c语言

C语言中的问题 新人 麻烦详细过程说明一下谢谢了百钱买百鸡问题c语言

C语言新手问题~

因为数组是从第0个开始算的,所以删第N个应该是删a[n-1];有9个数,所以最后一个是a[8];所以

for(i=n;i<=10;i++)改成for(i=n-1;i<=8;i++);

希望对你有帮助。。。。

C语言 需要详细过程和流程图

第一个程序可以用你的思想(不过求各位数的时候可以用整除也可以用求余,我这里用的是整除)

第二个程序文件的关键还是求出各位数字(我用的是除10取余的方法,从最低位开始,依次取出该数的各位数字,然后用最低位充当最高位,按反序重新构成新的数)

流程图这里不好话,因为程序比较简单,你对照着画下就可以第一个主要是一个循环,一个判断

第二个只是单纯的一个循环而已。

代码如下:

#include

void print_flower()

{

int i,a,b,c;

for(i=100;i<1000;i++)

{

a=i/100;

b=(i-100*a)/10;

c=i-100*a-10*b;

if(i==a*a*a+b*b*b+c*c*c)

printf("%d ",i);

}

printf("\n");

}

int Test_num(int i)

{

for(int newnum=0,oldnum=i;oldnum;newnum=10*newnum+oldnum%10,oldnum=oldnum/10);

return newnum;

}

int main()

{

int i=12345;

print_flower();

printf("%d\n",Test_num(i));

return 0;

}

C语言Hanoi问题求解(要求解释)

move(int n,int x,int y,int z)

的意思就是 把n个盘子从x借助y移动到z

函数执行时 xyz分别对应abc

n=1 就不说了

当n大于一时

执行的是

move(n-1,x,z,y);

printf("%c-->%c\n",x,z);

把a上的一个圆盘直接移到c上;

此时已经完成了最下面的盘子的移动

目前的状态是 n-1个盘子在b上 一个在c上

a是空着的 下面要做的就是吧n-1个盘子

从b移动到c上(借助a)也就是下面的调用

move(n-1,y,x,z);

递归开始的确不好理解 你可以先试一下 n=2的时候 这个很好理解

然后是n=3的时候

这时 我们要把a上面最下面的一个盘子移动到c上的前提 是上面的2个盘子在b上

你可以找个函数来完成 那就是 move(2,a,c,b)(注意abc的顺序)

这个调用就是上面的n=2的过程

这时a上面最下边的盘子就很轻松的移动到c上了

剩下的工作是把 b上的2个盘子移动到c上 那就是调用 move(2,b,a,c)(注意abc的顺序)

在这个移动的过程中 c上面的那个最下边的盘子是不受影响的。

执行完这一步 就OK了。

同理 n=456... 都可以这么分析,明白原理就好了。

c语言新手求教几个问题: 1、a=a+7=c+b为什么语法错误?

你好!1、等号是赋值运算,这就意味着等号左边必须是被赋值的变量,显然a+7是表达式,而不是变量。

2、整形运算是只取整数部分的,你定义的c1,c2,c3均是整数,所以;c3=1.0/c2*c1;进行的是整形运算,那么只取整数部分就是0.

3、注意:在浮点型与整形等混合运算时,系统会将所有类型的数据转化成double型的来运算,然后把结果再根据需要赋给响应变量。

对于你的表达式,c是float的,所以最后结果是要被转化成float赋值给c。

4、逗号运算符,又称顺序求值运算符,但是要区分这个顺序,这里的顺序指的是表达式,逗号运算符使用形式是:表达式1,表达式2,......

这就是说逗号隔开的是表达式,那么对于i=(a=2*3,a*5),a+6;就可以理解了:i=(a=2*3,a*5)是一个表达式,a+6是另外一个表达式。