c语言题目不知道该怎么编 5

编写一个程序,设置变量m为短整型,且数值为八进制整数0177501,设置变量为短整型,且数值为八进制整数-0277,打印显示出变量m和n所表示的十进制整数,并上传程序和运... 编写一个程序,设置变量m为短整型,且数值为八进制整数0177501,设置变量为短整型,且数值为八进制整数-0277,打印显示出变量m和n所表示的十进制整数,并上传程序和运行结果截图 展开
 我来答
司马刀剑
高粉答主

2020-04-16 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7347万
展开全部
面向过程编程的一般思路:分析问题->设计流程和模块->编码和测试->改进并总结

做算法问题的一般思路:先用数学方法计算分析,充分理解问题。在思考程序哪些地方应该用循环、指针或数组等细节问题之前,先要确定程序的大体框架,可以自己先试着用伪代码描述整个算法,然后再一步步e69da5e6ba907a686964616f31333330336238的确定应该怎么编码。最后验证结果并反思能否改进算法。

本题思路:1.在草稿纸上简单的分析发现,这个报数过程可以用数组来模拟。

2.建一个21位的数组,数组索引代表每个人的编号,数组值代表1代表在圈中0代表离开。

3.在只剩一人之前不断的循环报数,故考虑用while循环。

4.while没循环一次就相当于报一个数(num++),如果此时报的数能被5整除,就把数组索引(i)处的值改为0,然后下一个人报数(i++)。i大于21的时候需要把i变成i除21的余数(人是围成一个圈编号21的下一位是1)。

5.考虑一般情况,所以把人数和报数倍数定义为宏,就能只修改宏的值就能计算所有的此类问题

#include <stdio.h>

#include <conio.h>

#define N 21//人数

#define M 5//报数的倍数

int main()

{

int i,

num,//报的数字

left = N,//圈子剩余的人数

people[N];//1表示还在圈中,0表示出去

for(i=0;i<N;++i)

people[i]=1;

//开始报数

i=0;

num=0;

//报数一个回合

while(left>1)

{

if(i>=N)

i=i%N;

if(people[i]==1)

{

++num;

if(num%M==0)

{

people[i]=0;

--left;

}

}

++i;//继续报

}

for(i=0;i<N;++i)

{

if(people[i]==1)

printf("Id:%d",i+1);

}

getch();

return 0;

}

编程很难一蹴而就。自己完全独立的完成一些问题,由易到难循序渐进。就能慢慢进步。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式