c语言习题 帮忙看下!!!

来源:百度知道 编辑:UC知道 时间:2024/05/02 04:55:16
c语言课本上的习题,本人语文水平差,题目看不懂,大家帮忙解释一下,不需代码,谢谢!!

数组篇:
1.n个人围成一圈,编号为从1到n.从编号为1的人开始,从1到3报数,凡报3的人退出圈子,编写程序输出依次出列的人多的编号.
2.n个人围成一圈,编号为从1到n.从编号为1的人开始,从1到m报数,凡报m的人退出圈子,问最后一个人的编号.
2.编程把一个输入的十进制的整数转换成任意进制的数.
3.输入30个学生的姓名和成绩,按照成绩从高到低的顺序输出每个学生的姓名和成绩.
4.输入一个数字字符串,将其转换为十进制数输出.
5.全班30个人,输入每人的姓名,出生日期,学号,专业,编写程序实现查找,要求输入待查学生学号,输出其基本信息.
注:以上只能用数组做
你们也真搞笑,一二三楼的解释不等于没说吗,这个我还是懂的.
只是不知道题目到底想考我们什么,怎么着手去做!!!

机器没装编译工具。。
大概说一下思路吧
-------------------------------
1&2(问下楼主,你这里怎么两个2?难道老师给题时念的题号是一二俩仨四五六?嘿嘿,开个小玩笑别介意)
第一题第二题是一样的
可以设一个整体计数的变量count=N,每次有人出列就count--,当count=1时退出循环。
数组可以设一个二维的,(其实一维也行,不过麻烦很多)
二维数组的的结构如下图
1,2,3,4,5,6,7,8,……,N-1,N
1,2,3,4,5,6,7,8,……,N-1,1
意思是这样的,就相当于一个静态循环链表一样,第0行表示的是编号,第1行表示的是指针,指向他后边链的序号。当数到M时,就更改他上一个的指针位,例如,编号3要退出,则将编号2的指针为编号3的指针,这里是3。第一题在这个时候就要输出退出的人的编号(即第0行的值);至于第二题,当count为1的时候,输出当前指针所在位置的编号就行了。(不知道我说的你明白了没。。。)
----------------------------
3.编程把一个输入的十进制的整数转换成任意进制的数.

实验了半天,可算想起来怎么换算了。。。
设十进制的数M,要求转换成N进制的
则a1=M%N,b1=M/N,(b1为int型),继续 a1=a1*10+b1%N,b1=b1/N,
……
直到b1%N小于N位置,直接输出a1就是转换后的值

按理说应该是a1*N+b1%N才是真正的转换的值,但是涉及到输出的问题,如果不按10进制输出,那还要做一个输出的函数,很麻烦嘛。。。
---------------------------------
4.输入30个学生的姓名和成绩,按照成绩从高到低的顺序输出每个学生的姓名和成绩.
这题没什么好说的,冒泡最简单了
-----------------------------------
5.输入一个数字字符串,将其转换为十进制数输出.

这个也好做,读取一个字符a,
x='a&