|
Nov
13
|
|
写一个关于滚梯的程序:滚梯的台阶一个接一个的出现,人们可以站在滚梯的台阶上。
通过键盘登记在滚梯台阶上的人的数量。在滚梯台阶上的人数(#<Anzahl>),还有当前的新出现的滚梯台阶在每次的运行中被告知。在每个时刻只能看到此刻前5个滚梯台阶(及站在台阶上的人)。
一旦输入一个负数,程序结束。
提示:
编译程序,请您使用子程序 zustandTreppe 只输出或者读取下一个台阶的信息。在子程序中输入输出指令被使用。
例如:int person=zustandTreppe( <台阶的阶数>,人数,台阶数); 请在主程序中使用一个do循环。
程序输出举例:
0 0 0 0 0 – #0 – 1. 台阶? 1
1 0 0 0 0 – #1 – 2. 台阶? 2
2 1 0 0 0 – #3 – 3. 台阶? 0
0 2 1 0 0 – #3 – 4. 台阶? 1
1 0 2 1 0 – #4 – 5. 台阶? 0
0 1 0 2 1 – #4 – 6. 台阶? 0
0 0 1 0 2 – #3 – 7. 台阶? 3
3 0 0 1 0 – #4 – 8. 台阶? -1
给出的答案:
#include <stdio.h> int rolltreppe(int t[5], int personen, int iteration){ printf("%d %d %d %d %d - # %d –第 %d 个台阶: ", t[0], t[1], t[2], t[3], t[4], personen, iteration); int input; //下一个台阶上将上来的人数 scanf("%d", &input); return input; } int main(){ int personen, t[5], iter=0; do{ personen = rolltreppe(t,t[0]+t[1]+t[2]+t[3]+t[4], iter); iter=iter+1; //记录滚动了多少次 t[4] = t[3]; t[3] = t[2]; t[2] = t[1]; t[1] = t[0]; t[0] = personen; } while(personen >= 0); }
我写的代码:
#include <stdio.h> #define N 5 int rolltreppe(int t[N], int personen, int iteration){ int i; for(i=0;i<N;i++) printf("%d ", t[i]); printf("- # %d –第 %d 个台阶: ", personen, iteration); int input; scanf("%d", &input); return input; } int main(){ int personen, t[N]={0}, iter=0; int i,total; do{ total = 0; for( i=0; i<N; i++ ) total += t[i]; personen = rolltreppe(t,total, iter); iter=iter+1; for( i=N-1;i>=0;i-- ) t[i] = t[i-1]; t[0] = personen; } while(personen >= 0); system("pause"); }
From 迷途知返, post 国外的C语言考题-滚梯
RELATED POSTS:
过来学习一下,欢迎回访~~