正在加载图片...
5-5有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡 报到3的人,退出圈子,问最后留下的是原来第几号的那位。试编程S5-5C, 并写出运行过程和结果 〖指导〗 (1)要解决上面的问题,需要定义如下变量或数组: ①一个一维数组num,和一个指针变量p,将p指向num ②定义一个循环计数变量=0,当in时,所有人都报了数,一轮报数结束, 第2轮报数开始,这时将ⅰ重新赋值为0: ③在循环报数过程中,需要定义一个变量k=0,作为按1,2,3报数时的计 数变量,把报到3的人所在的数组元素赋值为0; ④定义一个用于记录退出人数的变量m=0,直到只有1个非0元素为止 (2)算法步骤 ①输入人数n ②以1至n为序号给每个人编号,即 for(i=0; i<n; 1++) (p+i)=计+1;/*以1至n为序号给每个人编号* ③判断,如果*p+i)l=0,则k++ ④判断,如果k=3,则*(p+i)=0,即对退出圈子的人的编号置0;同时将k 重新置0,退出的人数加1,即m++;否则,执行⑤ ⑤计数变量i加1,如果ⅰn,则将i赋值为0,即报数到末尾后(一圈报数 结束)i恢复为0 ⑥如果m<n-1,继续执行③,否则执行⑦; ⑦如果*p=0,则p++,继续执行⑦,否则执行⑧ ⑧输出n个人中最后留下的是第几号。 56完善程序S5-6C,使其能按字典顺序对多个字符串排序 源程序S5-6C #include <stdio h> lude <string. h> main( i char*t; Int 1,, n, char *s[]=(pascal","basic","fortran", "turbo C") scanf ("%d", &n) /*输入字符串的个数n*/ for(i=0;i<n-1;i++) /*用冒泡法排序*1 〖指导〗 字符串的比较不能用相等运算符=”,只能用字符串比较函数 stroppo;3 5-5 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡 报到 3 的人,退出圈子,问最后留下的是原来第几号的那位。试编程 S5-5.C, 并写出运行过程和结果。 〖指导〗 (1) 要解决上面的问题,需要定义如下变量或数组: ① 一个一维数组 num,和一个指针变量 p,将 p 指向 num; ② 定义一个循环计数变量 i=0,当 i=n 时,所有人都报了数,一轮报数结束, 第 2 轮报数开始,这时将 i 重新赋值为 0; ③ 在循环报数过程中,需要定义一个变量 k=0,作为按 1,2,3 报数时的计 数变量,把报到 3 的人所在的数组元素赋值为 0; ④ 定义一个用于记录退出人数的变量 m=0,直到只有 1 个非 0 元素为止。 (2) 算法步骤 ① 输入人数 n; ② 以 1 至 n 为序号给每个人编号,即 for(i=0;i<n;i++) *(p+i)=i+1; /* 以 1 至 n 为序号给每个人编号 */ ③ 判断,如果*(p+i)!=0,则 k++; ④ 判断,如果 k=3,则*(p+i)=0,即对退出圈子的人的编号置 0;同时将 k 重新置 0,退出的人数加 1,即 m++;否则,执行⑤; ⑤ 计数变量 i 加 1,如果 i=n,则将 i 赋值为 0,即报数到末尾后(一圈报数 结束)i 恢复为 0; ⑥ 如果 m<n-1,继续执行③,否则执行⑦; ⑦ 如果*p=0,则 p++,继续执行⑦,否则执行⑧; ⑧ 输出 n 个人中最后留下的是第几号。 5-6 完善程序 S5-6.C,使其能按字典顺序对多个字符串排序。 源程序 S5-6.C #include <stdio.h> #include <string.h> main() { char *t; int i,j,n; char *s[ ]={"pascal", "basic","fortran","turbo C"}; scanf ("%d",&n); /* 输入字符串的个数 n */ for(i=0;i<n-1;i++) /* 用冒泡法排序 */ } 〖指导〗 字符串的比较不能用相等运算符“==”,只能用字符串比较函数 strcmp();函
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有