/*
专注于为中小企业提供网站设计制作、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业桦南免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
c语言,购物卡消费充值
基本要求:1.按“+数字”给购物卡充值,按“-数字”表示消费,要在卡中减去该值。
2.卡中余额少于3时,提示“余额不足,请充值”字样,并且此次不能消费。
扩展功能:1.按*键可查询当前余额。
2.按#键不允许充值和消费。显示“此卡暂时不能使用”字样。
*/
#includestdio.h
#includestring.h
using namespace std;
struct shopcard{
int balance;
int open;
};
void initcard(shopcard* card, int balance){
card-balance = balance;
card-open = 1;
}
int rechargeorconsum(shopcard* card, int num)
{
if (!card-open)
{
return -1;
}
else if (num 0 || card-balance + num = 3)
{
card-balance += num;
return 1;
}
else
return 0;
}
int getbalance(shopcard* card)
{
return card-balance;
}
void closecard(shopcard* card)
{
card-open = 0;
}
int main()
{
char instring[100] = {0};
char * tmp = "*";
int num, ret;
shopcard card;
initcard(card, 100);
printf("使用购物卡:输入+数字表示充值, 输入-数字表示消费,输入*查询余额,输入#表示关闭购物卡使用功能,输入0退出系统\n");
while(1)
{
scanf("%s", instring);
fflush(stdin);
if ('+' == instring[0] || '-' == instring[0])
{
sscanf(instring, "%d", num);
ret = rechargeorconsum(card, num);
switch(ret){
case -1:
printf("购物卡已关闭消费充值功能\n");
break;
case 0:
printf("余额不足\n");
break;
case 1:
break;
default:
break;
}
}
else if (!strcmp("#", instring))
{
closecard(card);
}
else if (!strcmp("*", instring))
{
printf("余额:%d\n", getbalance(card));
}
else if (!strcmp("0", instring))
{
break;
}
}
return 0;
}
//已调试通过,楼主记得采纳哈
函数调用了,是你写的有问题。
比如你第一次调用 swap(n1,n2),这个时候程序把n1,n2的值传给p1,p2,然后p1,p2的值交换了,但是你需要的n1,n2没有变化。
你改成void swap(int n1,int n2),引用就可以了
#include stdio.h
int main()
{
int i, sum=0, a;
printf("充值:\n");
printf("请输入你要充值的金额(最低限额50,最大限额500)\n");
scanf("%d", a);
if(a=50 a=500)
{
sum += a;
printf("\t充值成功!!您现在的总金额为 %d 元。可进行游戏!", sum);
}
else if(a 50)
printf("\t充值失败!! 您输入的金额过低!");
else
printf("\t充值失败!! 您输入的金额过高!");
return 0;
}
你这个程序实现是有问题的
f1(int a)实现的是判定一个数是否是素数,是素数时返回1,否则返回0
int f1(int a)
{
int i;
for(i=1;i=a/2;i++) //因此初始应该让 i = 2
if(a%i==0) return 0;//这里任何一个整数都能够被1整除,所以一进入这个循环就返回0了
return 1;
}
void main()
{
int a;
printf("shuru");
scanf("%d",a);
if(a%2==0) f2(a); //这里主程序传进去的数是能被2整除的数,所以f2(a)中的实参a是一个偶数
else printf("chongxinshuru");
}
void f2(int a)
{
int i;
for(i=2;i=a/2;i++)
if(f1(a)) //而这里调用f1(a)只有当a是素数才会执行下一步,因为传进来的数a是个能被2整除的数,因此永远不会执行下边的代码
if(f1(a-i))
printf("%d+%d=%d\n",i,a-i,a);
}
你应该讲main函数中的if(a%2==0) f2(a); 这一句改成 if(a%2==1) f2(a);
修改后的程序如下:
#includestdio.h
int f1(int);
void f2(int);
void main()
{
int a;
printf("shuru:\n");
scanf("%d",a);
if(a%2==1)
f2(a);
else
printf("chongxinshuru:\n");
}
int f1(int a)
{
int i;
for(i=2;i=a/2;i++)
if(a%i==0)
return 0;
return 1;
}
void f2(int a)
{
int i;
for(i=2;i=a/2;i++)
if(f1(a))
if(f1(a-i))
printf("%d+%d=%d\n",i,a-i,a);
}
//测试结果为:
shuru:
7
2+5=7
Press any key to continue
函数先使用后定义了。
C语言要求调用某一个函数之前,一定要知道该函数的定义。
两者修改方法:
//一、将函数的定义放在调用之前,这样调用的时候就知道该函数的定义了
#includestdio.h
void cheer() {
printf ("cheer");
}
int main() {
cheer();
}
//二、在调用函数之前,显示声明该函数的类型
#includestdio.h
int main() {
void cheer();
cheer();
}
void cheer() {
printf ("cheer");
}