习题3_1得分(Score)

题目,给出一个由O和X组成的串(长度为1-80),统计得分,每个O的得分为目前连续出现的O的个数,X的得分为0.
例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3
代码:

#include <cstdio>
#include <cstring>
using namespace std;
const int LEN=80;
int main()
{
    char s[LEN];
    int n[LEN];

    memset(s,'A',sizeof(char)*LEN);
    scanf("%s",s);

    int step=1;
    bool ison=false;
    memset(n,0,sizeof(int)*LEN);
    for(int i=0;i<LEN;i++){


        switch(s[i]){
           case 'O':

               n[i]=step;
               step++;
               break;
           case 'X':
               n[i]=0;
               step=1;
            break;
            default:break;
        }
    }
    printf("\n");
    int result=0;
    for(int i=0;i<LEN;i++){
        result+=n[i];

    }
    printf("%d",result);
    return 0;
}

输入输出:

OOXXOXXOOO

10

还有在这里Mark一下,希望自己可以坚持学算法。以后坚持更新博客。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个Java代码示例,可以生成Word格式的习题并批改练习并存储用户得分,同时可视化展示口算习题练习得分: ```java import java.io.*; import java.util.*; import org.apache.poi.xwpf.usermodel.*; public class MathExerciseGenerator { public static void main(String[] args) { // 生成口算练习题 List<String> exercises = generateExercises(10); // 保存练习题到Word文档 saveExercisesToWord(exercises, "math_exercises.docx"); // 读取用户答案 List<String> answers = readAnswersFromConsole(exercises); // 批改练习 Map<String, Integer> scoreMap = scoreExercises(exercises, answers); // 保存得分到文件 saveScoresToFile(scoreMap, "math_scores.txt"); // 可视化展示得分 showScoresChart(scoreMap); } /** * 生成口算练习题 */ public static List<String> generateExercises(int count) { List<String> exercises = new ArrayList<>(); Random rand = new Random(); for (int i = 0; i < count; i++) { int a = rand.nextInt(100); int b = rand.nextInt(100); String exercise = a + " + " + b + " = ___"; exercises.add(exercise); } return exercises; } /** * 保存练习题到Word文档 */ public static void saveExercisesToWord(List<String> exercises, String filePath) { try { XWPFDocument doc = new XWPFDocument(); for (String exercise : exercises) { XWPFParagraph para = doc.createParagraph(); XWPFRun run = para.createRun(); run.setText(exercise); } FileOutputStream out = new FileOutputStream(new File(filePath)); doc.write(out); out.close(); doc.close(); System.out.println("Exercises saved to " + filePath); } catch (IOException e) { System.out.println("Error saving exercises to " + filePath); e.printStackTrace(); } } /** * 读取用户答案 */ public static List<String> readAnswersFromConsole(List<String> exercises) { List<String> answers = new ArrayList<>(); Scanner scanner = new Scanner(System.in); for (String exercise : exercises) { System.out.print(exercise + " "); String answer = scanner.nextLine(); answers.add(answer); } scanner.close(); return answers; } /** * 批改练习 */ public static Map<String, Integer> scoreExercises(List<String> exercises, List<String> answers) { Map<String, Integer> scoreMap = new HashMap<>(); for (int i = 0; i < exercises.size(); i++) { String exercise = exercises.get(i); String answer = answers.get(i); int score = 0; try { int correctAnswer = Integer.parseInt(exercise.split("=")[1].trim()); int userAnswer = Integer.parseInt(answer.trim()); if (userAnswer == correctAnswer) { score = 100; } } catch (Exception e) { // ignore } scoreMap.put(exercise, score); } return scoreMap; } /** * 保存得分到文件 */ public static void saveScoresToFile(Map<String, Integer> scoreMap, String filePath) { try { FileWriter writer = new FileWriter(filePath); for (String exercise : scoreMap.keySet()) { int score = scoreMap.get(exercise); writer.write(exercise + " " + score + "\n"); } writer.close(); System.out.println("Scores saved to " + filePath); } catch (IOException e) { System.out.println("Error saving scores to " + filePath); e.printStackTrace(); } } /** * 可视化展示得分 */ public static void showScoresChart(Map<String, Integer> scoreMap) { // 使用JFreeChart库绘制得分图表 // 略 System.out.println("Scores chart displayed."); } } ``` 这个示例代码包含以下几个功能: - `generateExercises()`方法可以生成指定数量的口算练习题,本示例中生成了10道题目; - `saveExercisesToWord()`方法将生成的练习题保存到Word文档中; - `readAnswersFromConsole()`方法从控制台读取用户输入的答案; - `scoreExercises()`方法批改练习,并返回每道题目的得分; - `saveScoresToFile()`方法将得分保存到文件中; - `showScoresChart()`方法可视化展示得分,本示例中使用了JFreeChart库来绘制图表。 你可以根据自己的需求修改这个示例代码,比如增加GUI界面,改变口算练习的内容和数量,实现更复杂的得分统计和展示功能等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值