您的位置:首页 > 财经 > 产业 > 上海建筑设计院工资_ps个人主页网页设计模板_网络营销服务的内容_广告主广告商对接平台

上海建筑设计院工资_ps个人主页网页设计模板_网络营销服务的内容_广告主广告商对接平台

2024/12/23 12:14:28 来源:https://blog.csdn.net/qq_59611876/article/details/144459755  浏览:    关键词:上海建筑设计院工资_ps个人主页网页设计模板_网络营销服务的内容_广告主广告商对接平台
上海建筑设计院工资_ps个人主页网页设计模板_网络营销服务的内容_广告主广告商对接平台

C语言实践作业:游戏与字符处理系统

ps:都是我编的,主要可以熟悉各种循环,但是拿去做考试题也不是不行,各位老师要是拿去出题的话,能不能告诉我下,让我有点成就感啊!!!!(要是出题的话我就把源码删掉!!!不用感谢我!)

题目描述

请实现一个具有多功能的C语言程序,包含以下功能模块:

  1. 石头剪刀布游戏
  2. 成绩计算系统
  3. 字母转换器
  4. 高级字母转换器

具体要求

1. 主菜单设计

  • 创建一个循环菜单系统,允许用户选择不同的功能
  • 提供清晰的菜单选项和退出机制
  • 对无效输入进行适当的错误处理

2. 石头剪刀布游戏

实现一个具有以下特性的游戏:

  • 游戏最多进行5轮
  • 跟踪并显示获胜次数和胜率
  • 实现以下功能:
    • 用户可以选择石头(0)、剪刀(1)、布(2)
    • 电脑随机生成选择
    • 正确判断胜负
    • 允许提前退出(输入9)
    • 显示最终游戏统计信息

3. 成绩计算系统

开发一个成绩处理程序:

  • 接收5门课程的成绩输入
  • 要求:
    • 验证输入成绩是否在0-100范围内
    • 计算总分
    • 计算平均分
    • 清晰展示计算结果

4. 基础字母转换器

创建一个字符转换程序:

  • 功能要求:
    • 接收单个字符输入
    • 如果是小写字母,向后移动4位并转换为大写
    • 如果是大写字母,向后移动4位并转换为小写
    • 非字母字符保持不变
    • 实现字母循环(例如:‘z’后接’a’)

5. 高级字母转换器

在基础转换器的基础上添加动画效果:

  • 增加以下特性:

    • 显示用户输入的字符
    • 等待1秒
    • 使用退格符(\b)清除显示的字符
    • 在相同位置显示转换后的结果
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <windows.h>void guessWinner(void);
void calculateGrades(void);
void convertLetter(void);
void advancedConvertLetter(void);int main() {while(1){int choice;printf("1.猜拳游戏\n");printf("2.成绩计算\n"); printf("3.基础字母转换\n");printf("4.进阶字母转换\n"); printf("0.退出\n");printf("请输入您的选择:\n");scanf("%d", &choice);switch(choice){case 1:guessWinner();break;case 2:calculateGrades();break;case 3:convertLetter();break;case 4:advancedConvertLetter();break;case 0:exit(0);default:printf("输入有误!请重新输入!\n"); }}return 0;
}void guessWinner()
{int player;int computer;int rounds = 0;  // 当前轮数int wins = 0;    // 获胜次数float winRate;   // 胜率printf("\n游戏说明:\n");printf("在游戏过程中,输入9可以随时退出游戏\n");printf("0 - 石头\n1 - 剪刀\n2 - 布\n9 - 退出游戏\n\n");while(rounds < 5) // 只玩5轮{printf("第 %d 轮游戏(共5轮):\n", rounds + 1);printf("0 - 石头\n1 - 剪刀\n2 - 布\n9 - 退出\n");printf("请输入你的选择: \n");scanf("%d", &player);if(player == 9) {printf("\n您选择退出游戏。\n");break;  // 跳出游戏循环}if (player < 0 || player > 2) {printf("无效的选择!\n");continue; // 无效输入不计入轮数} computer = rand() % 3;printf("你选了: \n");if(player == 0) printf("石头\n");if(player == 1) printf("剪刀\n");if(player == 2) printf("布\n");printf("计算机选了: \n");if(computer == 0) printf("石头\n");if(computer == 1) printf("剪刀\n");if(computer == 2) printf("布\n");if(player == computer){printf("平局!\n");}else if((player == 0 && computer == 1) || (player == 1 && computer == 2) || (player == 2 && computer == 0)){printf("恭喜!你赢了!\n");wins++;  // 记录获胜次数}else{printf("对不起!你输了!\n");}rounds++;  // 增加轮数if(rounds < 5){printf("\n按 Enter 键继续...");getchar(); getchar();system("cls");}}	// 计算并显示最终胜率if(rounds >= 1){winRate = (float)wins / rounds * 100;printf("\n=== 游戏结束 ===\n");printf("总共进行了5轮游戏\n");printf("你赢了 %d 轮\n", wins);printf("最终胜率: %.1f%%\n", winRate);printf("\n按 Enter 键返回主菜单...");getchar(); getchar();system("cls");}else{printf("游戏结束!因为未完成任何一局游戏,无法统计胜率。\n");  // 更清晰的提示信息printf("\n按 Enter 键返回主菜单...");getchar(); getchar();system("cls");}}void calculateGrades()
{int i;int scores[5];  // 存储五门课程成绩int score;int total = 0;  // 总分float average;  // 平均分printf("\n=== 成绩计算 ===\n");printf("请输入五门课程的成绩(整数):\n");for(i = 0; i < 5;i++){do {printf("请输入第 %d 科分数: ", i + 1);scanf("%d", &score);if(score >= 0 && score <= 100) {scores[i] = score;break;  // 如果分数有效,跳出do-while循环} else {printf("成绩必须在0-100之间,请重新输入第 %d 门课程的成绩: ", i + 1);}} while(1);total += scores[i];}average = (float)total / 5;printf("\n=== 计算结果 ===\n");printf("总分为:%d",total);printf("平均分为:%lf",average);printf("\n按 Enter 键返回主菜单...");getchar();getchar();system("cls");
}void convertLetter(void)
{char input, result;printf("\n=== 字母转换 ===\n");printf("请输入一个字符: ");getchar();  // 清除缓冲区scanf("%c", &input);if (islower(input)) {  // 如果是小写字母result = ((input - 'a' + 4) % 26) + 'A';  // 循环后移4位并转大写printf("转换结果: %c\n", result);}else if (isupper(input)) {  // 如果是大写字母result = ((input - 'A' + 4) % 26) + 'a';  // 循环后移4位并转小写printf("转换结果: %c\n", result);}else {  // 其他字符不转换printf("输入的不是字母,保持不变: %c\n", input);}printf("\n按 Enter 键返回主菜单...");getchar();getchar();system("cls");
}void advancedConvertLetter()
{char input, result;printf("\n=== 进阶字母转换 ===\n");printf("请输入一个字符: ");getchar();  // 清除缓冲区scanf("%c", &input);// 在输入位置显示输入的字符printf("%c", input);// 等待1秒Sleep(1000);// 回到字符位置printf("\b");// 清除之前输入的字符(用空格覆盖)printf(" ");// 再次回到字符位置printf("\b");// 计算结果if (islower(input)) {result = ((input - 'a' + 4) % 26) + 'A';}else if (isupper(input)) {result = ((input - 'A' + 4) % 26) + 'a';}else {result = input;}// 在相同位置显示结果printf("%c", result);printf("\n\n按 Enter 键返回主菜单...");getchar();getchar();system("cls");
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com