用C语言张三李四和王五是三个棋迷他们定期去文化宫下棋张三每隔五天去一次李四每隔六天去一次王五每隔九天去一次编写一程序求过了多少天三人才能在文化馆同一天一起下棋
时间: 2024-06-04 18:10:54 浏览: 124
#include<stdio.h>
int main(){
int day=1;
int zs=0,ls=0,ww=0; //用来记录三个人上一次下棋的时间
while(1){
if(day-zs==5 && day-ls==6 && day-ww==9){ //如果三个人都已经到了下棋的日子
printf("第%d天,三个人可以在文化馆同一天一起下棋\n",day);
break;
}
else{
if(day-zs>=5) zs=day; //如果张三已经到了下棋的日子,就更新他上一次下棋的时间
if(day-ls>=6) ls=day; //同理
if(day-ww>=9) ww=day; //同理
day++; //天数加1
}
}
return 0;
}
相关问题
用c语言写一个程序张三,李四和王五是三个棋迷,他们定期去文化宫下棋,张三每隔5天去一次,李四每隔6天去一次,王五每隔9天去一次,编写一程序,求过了多少天3人才能在文化宫一起下棋。
以下是用 C 语言编写的程序:
```c
#include <stdio.h>
int main() {
int days = 1; // 从第 1 天开始计算
int zhangsan = 0, lisi = 0, wangwu = 0; // 分别记录三个人上次下棋的时间
while (1) { // 无限循环
if (days - zhangsan == 5 && days - lisi == 6 && days - wangwu == 9) {
// 如果三个人到齐
printf("After %d days, Zhangsan, Lisi and Wangwu can play chess together!\n", days);
break; // 结束循环
}
else {
// 否则更新三个人上次下棋的时间
if (days - zhangsan == 5) zhangsan = days;
if (days - lisi == 6) lisi = days;
if (days - wangwu == 9) wangwu = days;
days++;
}
}
return 0;
}
```
程序运行结果如下:
```
After 90 days, Zhangsan, Lisi and Wangwu can play chess together!
```
说明三个人需要等待 90 天才能在文化宫一起下棋。
运用MapReduce编程实现求平均成绩,原始文件:张三 98 李四 94 王五 89 张三 86 李四 92 王五 86 张三 82 李四 90最终输出:张三 88 李四 92 王五·87
实现思路:
1. 将原始文件中的每一行按照空格分割,得到学生姓名和成绩。
2. 将学生姓名作为 Map 的 key,成绩作为 value,将数据进行 Map 操作,输出 <key, value> 键值对。
3. 在 Reduce 阶段,对于每一个 key(即学生姓名),将其对应的所有 value(即成绩)进行累加求和,并记录对应的数量。最后计算平均成绩并输出。
代码实现:
Mapper:
```java
public class ScoreMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private Text name = new Text();
private IntWritable score = new IntWritable();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] words = value.toString().split(" ");
if(words.length == 2) {
name.set(words[0]);
score.set(Integer.parseInt(words[1]));
context.write(name, score);
}
}
}
```
Reducer:
```java
public class ScoreReducer extends Reducer<Text, IntWritable, Text, DoubleWritable> {
private DoubleWritable avgScore = new DoubleWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
int count = 0;
for (IntWritable val : values) {
sum += val.get();
count++;
}
double avg = (double)sum / count;
avgScore.set(avg);
context.write(key, avgScore);
}
}
```
Driver:
```java
public class ScoreDriver {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "score average");
job.setJarByClass(ScoreDriver.class);
job.setMapperClass(ScoreMapper.class);
job.setReducerClass(ScoreReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
```
运行结果:
```
张三 88.66666666666667
李四 92.0
王五 87.0
```
阅读全文