程序猜价格c语言,C语言大作业:编写菜单控制猜商品价格程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

改写猜价格游戏的程序(见下),实现对这个游戏的一些管理功能,可以根据菜单对商品进行添加、删除、查找、浏览等操作,根据模块间数据传递的方式分析各个模块的函数原型及调用关系,并完成程序编写。商品价格要求在限定范围内取随机值。

如有兴趣可以完成更多功能(不属于作业要求内容),如:

使用链表存储商品(需要对链表进行操作的一些工具函数);

商品类型中加入商品个数信息,增加统计功能;

对用户进行分类(如管理员看到的界面和普通用户看到的界面应该是不同的);

增加文件存储功能等等。

#include 

#include 

#include 

#include 

#define MAXNUMOFGOODS 5

#define MAXNUMOFGUESS 6

struct GOODSTYPE

{

char name[20];

int price;

int lb;

int ub; };

void Begin( struct GOODSTYPE goods[], int size, struct GOODSTYPE* pchoice );

void Play( struct GOODSTYPE* pgoods );

int CheckNewGame();

void ListGoods( struct GOODSTYPE goods[], int size );

struct GOODSTYPE Select( struct GOODSTYPE goods[], int size );

int GuessPrice( struct GOODSTYPE* pgoods );

int Judge( struct GOODSTYPE* pgoods, int price );

int main()

{  struct GOODSTYPE goods[ MAXNUMOFGOODS ] = { { "Book", 61, 20, 120 },

{ "Radio", 177, 100, 300 },

{ "Electric Cooker", 395, 200, 500 },

{ "Microwave Oven", 988, 500, 1500 },

{ "Television", 2199, 1000, 3000 } };

struct GOODSTYPE choice;    clrscr();

while( 1 )

{

Begin( goods, MAXNUMOFGOODS, &choice );

Play( &choice );

if( !CheckNewGame() )

{

printf( "Thank you!\nBye!\n" );

break;

}

}

return 0;

}

void Begin( struct GOODSTYPE goods[], int size, struct GOODSTYPE* pchoice )

{

/* 列出全部商品 */

ListGoods( goods, size );

*pchoice = Select( goods, size );

}

void Play( struct GOODSTYPE* pgoods )

{

int i, price, judge;

for( i = 0; i 

{

price = GuessPrice( pgoods );

judge = Judge( pgoods, price );

switch( judge )

{

case -1:

printf( "Low. %d opportunities left.\n", MAXNUMOFGUESS - i - 1 );

break;

case  0:

printf( "Congratulations! You win the %s!\n", pgoods->name );

break;

case  1:

printf( "High. %d opportunities left.\n", MAXNUMOFGUESS - i - 1 );

break;

}

if( judge == 0 ) break;

}

if( price != pgoods->price )

printf( "\n+++ You lose! +++\n+++ The price is %d +++\n", pgoods->price );

}

int CheckNewGame()

{

static char replay[2] = "N";

printf( "\nDo you want to play another game ( Y | N )? " );

gets( replay );

if( toupper( replay[0] ) == 'Y' )

return 1;

else

return 0;

}

void ListGoods( struct GOODSTYPE goods[], int size )

{

int i;

printf( "++++++++++++++++        Welcome!         ++++++++++++++\n\n" );

printf( "Choose one from the list. You'll get it if you can\n" );

printf( "tell the price within %d times.\n\n", MAXNUMOFGUESS );

printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++\n" );

for( i = 0; i 

printf( "%d. %-20s(price : %d-%d)\n", i + 1, goods[i].name,

goods[i].lb, goods[i].ub );

printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n" );

}

struct GOODSTYPE Select( struct GOODSTYPE goods[], int size )

{

int sel;

printf( "Input your choice (%d-%d), Others to quit the game: ",

1, size );

scanf( "%d", &sel );

if( sel  size )

exit( 0 );

return( goods[ sel - 1 ] );

}

int GuessPrice( struct GOODSTYPE* pgoods )

{

int price;

while( 1 )

{

printf( "Input your price between %d and %d: ",

pgoods->lb, pgoods->ub );

scanf( "%d", &price );

getchar();

if( ( price >= pgoods->lb ) && ( price <= pgoods->ub ) )

break;

else

printf( "Out of range, please input a price between %d and %d.\n",

pgoods->lb, pgoods->ub );

}

return price;

}

int Judge( struct GOODSTYPE* pgoods, int price )

{

if( price == pgoods->price )

return 0;

else if( price price )

return -1;

else

return 1;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20165301 预备作业二:学习基础和C语言基础调查

《做中学》读后感及C语言学习调查 读《做中学》有感 娄老师在文章中多次提到「做中学(Learning By Doing)」的概念&#xff0c;并通过娄老师自己的减肥经历、五笔练习经历、乒乓球练习经历和背英文单词的经历为读者更加详细地阐明了「做中学(Learning By Doing)」的重要性。 在…

思科(Cisco)路由器策略路由配置详解

策略路由是路由优化的常用方法。在做路由牵引时很多情况都要用到策略路由。 网络拓扑 R2的E1\E2口分别与R3的E1\E2口相连。 先配置好静态路由&#xff0c;使192.168.2.X与192.168.1.X互通(不经过R3)。即R1<->R2<->R4是互通的。 下面介绍一下配置策略路由的方法。 实…

c语言通过什么传递参数 寄存器,关于使用寄存器传参解决方法

关于使用寄存器传参在使用64位系统编程时&#xff0c;发现一个问题&#xff0c;麻烦大家帮忙看看&#xff0c;谢谢啦&#xff01;&#xff01;&#xff01;C语言代码如下&#xff1a;void swap(int *a, int *b){int c;c *a;*a *b;*b c;}对应的汇编代码&#xff1a;Dump of a…

c语言编2048,c语言编写的2048游戏代码,大家可以参考一下这些

2048_launcher.c#include #include #include void main(){printf("正在启动中&#xff0c;请稍后&#xff01;\n");Sleep(1000);system("bin\\Version\\games\\0.1\\0.1.exe");}补充&#xff1a;0.1.c#include#include#include#include#define WIN 256 // …

python numpy中sum()时出现负值

import numpy anumpy.random.randint(1, 4095, (5000,5000)) a.sum() 结果为负值, 这是错误的&#xff0c;a.sum()的类型为 int32&#xff0c;如何做才能是结果显示正确呢&#xff1f;按照如下做法&#xff1a; cnumpy.int64(a).sum() 结果为正直&#xff0c;正确&#xff0c;c…

SQL Server插入中文数据出现乱码问题

问题如上图。 创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出现上图所示内容是因为proName varchar(50) not null这个地方有问题。一般来说&#xff0c;如果含有中文字符&#xff0c;用nchar/nvarchar&…

c语言find和mid函数的使用方法,Excel Mid函数和MidB函数使用方法的7个实例,含与Len和Find组合反向提取字符或截取单位...

在 Excel 中&#xff0c;Mid函数用于从文本中提取从指定位置开始的指定字符数&#xff0c;而MidB函数用于从文本中提取从指定位置开始的指定字节数&#xff1b;它们的区别为&#xff1a;前者把全角(如汉字)与半角(如数字和字母)都算作一个字符&#xff0c;后者把全角算作两个字…

C++类指针类型的成员变量的浅复制与深复制

本篇文章旨在阐述C类的构造&#xff0c;拷贝构造&#xff0c;析构机制&#xff0c;以及指针成员变量指针悬空问题的解决。需要读者有较好的C基础&#xff0c;熟悉引用&#xff0c;const的相关知识。 引言&#xff1a; 类作为C语言的一种数据类型&#xff0c;是对C语言结构体的一…

21天学通c语言第四版pdf,21天学通Visual C++ PDF扫描版[116MB]

21天学通Visual C 内容简介&#xff1a;本书是Visual C语言的入门教程&#xff0c;较全面地介绍了Visual C编程的相关知识&#xff0c;然而&#xff0c;本书并没有泛讲Visual C语言的所有知识&#xff0c;而是突出重点&#xff0c;选择最重要的内容进行讲解。本书一共分为五篇&…

空间索引不能用analyze进行分析

一天&#xff0c;同事问&#xff0c;为何执行了索引分析后&#xff08;ANALYZE INDEX index_name COMPUTE STATISTICS;&#xff09;&#xff0c;查看user_indexes视图中的last_analyze字段时间没有变化。自己试了下&#xff0c;发现普通索引是可以的&#xff0c;但是对于空间索…

继续聊WPF——动态数据模板

我为啥称之为“动态数据模板”&#xff1f;先看看下面的截图&#xff0c;今天&#xff0c;我们就是要实现这种功能。 大概是这样的&#xff0c;我们定义的DataTemplate是通过触发器动态应用到 ComboBoxItem 上。 这个下拉列表控件绑定了一个Person集合&#xff0c;Person类的定…

刺激战场c语言,刺激战场:假车库、C字楼都是啥?学会吃鸡术语新手变大神!...

原标题&#xff1a;刺激战场&#xff1a;假车库、C字楼都是啥&#xff1f;学会吃鸡术语新手变大神&#xff01;刺激战场有越来越多的新玩家加入其中&#xff0c;然而新手想入门&#xff0c;却有时候找不对方法&#xff0c;其实吃鸡这个游戏其实还是非常简单的&#xff0c;不过想…

WPF 创建无边框的圆角窗口

第一步&#xff1a;去掉窗体默认样式的边框 首先将窗体的背景设为透明&#xff0c;将允许透明的属性设置为True&#xff0c;即&#xff1a;Background"Transparent" AllowsTransparency"True"&#xff0c;将Window的WindowStyle属性设置为None&#xff0c…

c语言关于链表选择题看不懂,有关链表基本操作三题

因为觉得C语言老师讲链表讲的太匆忙了&#xff0c;况且PPT太乱太杂&#xff0c;看不懂因此特地重写了次这周三上机有关链表操作的三题。(所写题目默认已排序&#xff0c;不考虑排序)问题A:在单链表中按学号查成绩时间限制: 1 Sec 内存限制: 128 MB提交: 62 解决: 43[提交][状…

linux下的awk程序执行

#!/bin/awk -f awk脚本开头使用这个命令&#xff0c;赋予这个文本文件以执行的权限。这样做之后&#xff0c;你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了。 BEGIN和END的大括号必须紧其后&#xff0c;如果换行会出错&#xff1a; awk: cmd. line:14: war…

HTMLParser-实战

了解了HTMLParser库的知识后&#xff0c;选择做一个小训练&#xff0c;对https://www.python.org/events/python-events/这个网址进行分析&#xff0c;之后输出其中每次会议的题目、时间和地点。 如果要简单了解下HTMLParser库可以点击打开 下面进入正题 这是网站的源码&#x…

c语言会员卡管理系统,路西牌会员管理系统。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼void VIP::show( Node *v){no(v);char *aVIP::sex(v);std::cout<<< "会员姓名: "<< node.item.num[1]<< endl<< "性别: "<< sex(v)<<< "手机号码: "<…

Data URI scheme 在 html 中嵌入小图片

例如: <img src"https://img-blog.csdnimg.cn/2022010704064257868.png" /> 这会显示一张图片,网上的资料一般说是 ie8 才支持,不过我在老早前就见过了,应该和 ie8 没什么关系. 刚刚又用 ie6 试了一下,的确是可以的.这是以讹传讹啊. 另外据说这只支持 32K 大小…

常见的不同类型运算的转换方式

1.字符串和数字相加&#xff0c;数字转成字符串. var one"This is a test"; var two123; var threeonetwo;// 结果&#xff1a;three:This is a test123 2.数字和布尔值相加&#xff0c;布尔值 false 转成 0&#xff0c;true 转成 1 var one13; var twotrue; var thr…

c++2015语言,2015年7月TIOBE编程语言排行榜:C++ 的复兴

2015年7月TIOBE编程语言排行榜&#xff1a;C 的复兴C是2015年上半年同比增长最快的编程语言。具体为C 增长3.1%&#xff0c;Java 增长2.0%&#xff0c;C#增长1.6%&#xff0c;Python增长1.6%。C大幅度增长的原因可能是引入了新的C11标准。这使得C被大范围的接受。C 11标准为C带…