gpt4 book ai didi

c - 使用结构和数组的 Strcmp 的 If 语句不起作用

转载 作者:行者123 更新时间:2023-11-30 21:29:04 25 4
gpt4 key购买 nike

遇到一些问题,你会经常看到我在这里寻求帮助。我对 C 非常陌生。为基于学校的评估编写一个包含大约 5 个功能的程序。该程序与虚构业务中遇到的问题的问题定义相结合。到目前为止有五个功能。

函数1: MembershipInfo 存储公司的成员(member)信息(就像具有订阅/成员(member)系统的俱乐部)

函数2: SelectService 应该显示并提示用户选择可以提供给他们的各种服务。它使用结构体和数组以及各种 if。 if 语句没有运行,或者构建成功后没有显示在控制台上。

函数3: payment'根据成员(member)的成员(member)类型计算成员(member)需要支付的全部费用。计算输出0.0000

功能 4:功能 1 类似,但适合希望按小时费率使用某些服务而无需成为成员(member)的客户。对此输出的计算也是 0.0000

函数 5: MemberExp 应该跟踪成员(member)资格到期的日期并提醒用户。我想我必须以某种方式在注册时从功能 1 中的每个成员那里收集组日期,并将其与他们的成员(member)资格到期的日期进行比较。我有一个称为薪资计划的 float 变量,用于计算全部成本。这是一个人希望成为成员(member)的月数。

我正在 El Capitan 上使用 Xcode

我的代码

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

struct MembershipInfo{



float regfee;
int set;
float payplan;
char cust_fname[20];
char cust_lname[20];
char memtype[20];
char date[20];

};

/*Functions */

void MembershipInfo();
void Payment();
void SelectService();
void MemberExp();
void Accomodation();

int q;
int x=0;
int set;
float memcost;
float Fullcost;
char selection[20];


/*MAIN FUNCTION */


int main()

{


char decision[20];

printf("Are you registering a member or is it accomodation?, type in lowercase \n");
scanf( "%s" , decision);

if ( strcmp (decision, "member") ==0)
{
MembershipInfo();

}

else {
( strcmp(decision, "accomodation") ==0);
Accomodation();
}


MemberExp();

}


/* Function used to store membership information */
void MembershipInfo()
{
struct MembershipInfo member[x];
printf("Press 1 to continue or any other character to cancel \n ");
scanf( "%d", &set);

if (set==1) {

while (set==1) {
x++ ;
printf( "Please enter the first name of member\n");
scanf( "%s", member[x].cust_fname);

printf( "Please enter the last name of member\n");
scanf( "%s", member[x].cust_lname);

printf( "Please enter Membership type:\n Silver\n Gold\n Platinum\n");
scanf( "%s", member[x].memtype);

SelectService();

printf("Please enter payment plan\n"); /* An integer value from 1 to 12 which determines how much months are being paid for */
scanf( "%f", &member[x].payplan);


Payment();




printf("Do you have another member to register? Type 1 to continue or any number to End\n");
scanf( "%d", &set);

}
main();

}
main();

}


/* Function used to calculate the amount to be paid by each member */
void Payment()
{

struct MembershipInfo member[x];

if (strcmp(member[x].memtype, "Silver") ==0) {
memcost = 100;

if (strcmp(member[x].memtype, "Gold") ==0) {
memcost = 180;

if (strcmp(member[x].memtype, "Platinum") ==0) {
memcost = 300;
}
}
}

Fullcost = memcost * member[x].payplan ;
printf(" The Full cost is %f \n", Fullcost);


}


/* Function to Select Services for Members */

void SelectService()
{

struct MembershipInfo member[x];
if (strcmp(member[x].memtype, "Silver") ==0) {
printf("Check");
}

}



/*Function to determine Membership Expiration*/

void MemberExp()
{



}

void Accomodation()
{

struct Accomodationinfo{
char ac_fname[20];
char ac_lname[20];
int hours;
char date[30];
char selection[20];
int Fullcost; //Full Cost is an integer and not a float because hours will be rounded off and therefore customer will pay a rounded off value



};


struct Accomodationinfo customer[x];
printf("Press 1 to continue or any other number to cancel \n");
scanf( "%d" , &set);
if (set==1) {


while (set==1){
x++;
printf("Please enter customer's first name \n");
scanf( "%s", customer[x].ac_fname);

printf("Please enter customer's last name \n");
scanf( "%s" , customer[x].ac_lname);

printf("You have either the Gym, Sports Centres, or Music Studio available\n");
scanf( "%s" , customer[x].selection);

printf("How many hours?\n");
scanf( "%d", &customer[x].hours);

customer[x].Fullcost = customer[x].hours * 8;
printf("The full cost is %f per hour \n" , Fullcost );
getchar();
printf( "%s %s will have access to %s for %d hours \n", customer[x].ac_fname, customer[x].ac_lname , customer[x].selection, &customer[x].hours );
getchar();
printf("Do you have another customer for accomodation? Press 1 to continue or any other number to return to main \n ");
scanf( "%d" , &set);
}
main();
}
main();

}

<强> SelectService Function

void SelectService()
{
if (strcmp(Members[x].memtype, "Silver") ==0)
{
printf( "You have available any three of the following(Notice the casino is not available):\n");
printf( "Swimming Pools \n Spas \n Bars \n Arcade\n Sports Centres\n Resource Room\n Theatre\n Gym\n Food Courts\n Music Studio\n");
for (q=0; q<4; q=q+1) {
printf( "Please enter selection\n");
scanf( "%s" , selection[q]);
printf( "Your chosen selections are %s , %s and %s\n" , selection[1], selection[2], selection[3]);
}


if (strcmp(Members[x].memtype, "Gold") ==0) {
printf( "You have available any five of the following\n");
printf( "Casino \n Swimming Pools \n Spas \n Bars \n Arcade\n Sports Centres\n Resource Room\n Theatre\n Gym\n Food Courts\n Music Studio\n");
for (q=0; q<6; q=q+1) {
printf( "Please enter selection\n");
scanf( "%s" , &selection[q]);


}
if (strcmp(Members[x].memtype, "Platinum") ==0) {
printf( "You have all services available");
}
}
}

}

编辑:程序不断跳过函数 SelectService idk不知道如何使这一点更清楚。尝试在您自己的编译器中运行它并解决问题?

最佳答案

以下代码合并了注释,可以干净地编译,并且是一种可能的实现。

您可能想要添加更多功能

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>



#define MAX_DATE_LEN (30)
#define MAX_MEMBERS (100)
#define MAX_BUFFER_LEN (20)
#define COST_PER_HOUR (8)

struct MembershipInfo_t
{
float regfee;
int set;
unsigned payplan;
char cust_fname[ MAX_BUFFER_LEN ];
char cust_lname[ MAX_BUFFER_LEN ];
char memtype[ MAX_BUFFER_LEN ];
char date[ MAX_BUFFER_LEN ];
};


// prototypes
void processMembershipInfo( void );
void Payment( void );
void SelectService( void );
void MemberExp( void );
void processAccommodation( void );

//global data
struct MembershipInfo_t Members[ MAX_MEMBERS ];
int numMembers = 0;

int q;
int x=0;
int set;
unsigned memcost;
unsigned Fullcost;
char selection[ MAX_BUFFER_LEN ];


/*MAIN FUNCTION */


int main( void )
{
int done = 0;

while( !done && (x < MAX_MEMBERS) )
{
// clear stdin
int ch;
while( (ch = getchar()) != EOF && '\n' != ch );

// display menu
printf( "\nm: Member processing");
printf( "\na: Accommodiation processing:");
printf( "\nq: quit");
printf( "\n");

// get user menu selection
int choice = 0;
choice = getchar();

// process the user menu choice
switch( tolower(choice) )
{
case 'a':
processAccommodation();
break;

case 'm':
processMembershipInfo();
break;

case 'q':
done = 1;
break;

default:
printf( "\n %c is not a valid entry\n", (char)choice);
break;
} // end switch

if( !done ) x++; // step to next member entry in Members[] array
} // end while


if( x )
{// then some members entered
MemberExp();
}
return 0;
} // end function main()


/* Function used to store membership information */
void processMembershipInfo()
{
printf( "Please enter the first name of member\n");
scanf( " %19s", Members[x].cust_fname);

printf( "Please enter the last name of member\n");
scanf( " %19s", Members[x].cust_lname);

printf( "Please enter Membership type:\n Silver\n Gold\n Platinum\n");
scanf( " %19s", Members[x].memtype);

SelectService();

do
{
printf("Please enter payment plan range: 1...12 months\n"); /* An integer value from 1 to 12 which determines how much months are being paid for */
scanf( "%u", &Members[x].payplan);
} while( (1 > Members[x].payplan) && (12 < Members[x].payplan) );


Payment();
} // end function: processMembershipInfo


/* Function used to calculate the amount to be paid by each member */
void Payment()
{
if (strcmp(Members[x].memtype, "Silver") ==0)
{
memcost = 100;
}

else if (strcmp(Members[x].memtype, "Gold") ==0)
{
memcost = 180;
}

else if (strcmp(Members[x].memtype, "Platinum") ==0)
{
memcost = 300;
}

Fullcost = memcost * Members[x].payplan ;
printf(" The Full cost is %u \n", Fullcost);
} // end function: Payment


/* Function to Select Services for Members */
void SelectService()
{
if (strcmp(Members[x].memtype, "Silver") ==0)
{
printf("Check");
}
}



/*Function to determine Membership Expiration*/

void MemberExp()
{

}

struct Accomodationinfo
{
char ac_fname[ MAX_BUFFER_LEN ];
char ac_lname[ MAX_BUFFER_LEN ];
unsigned hours;
char date[ MAX_DATE_LEN ];
char selection[ MAX_BUFFER_LEN ];
unsigned Fullcost; //Full Cost is an integer and not a float because hours will be rounded off and therefore customer will pay a rounded off value
};

void processAccommodation()
{

struct Accomodationinfo customer;

printf("Press 1 to continue or any other number to cancel \n");

printf("Please enter customer's first name \n");
scanf( " %19s", customer.ac_fname);

printf("Please enter customer's last name \n");
scanf( " %19s" , customer.ac_lname);

printf("You have either the Gym, Sports Centres, or Music Studio available\n");
scanf( " %19s" , customer.selection);

printf("How many hours?\n");
scanf( "%u", &customer.hours);

customer.Fullcost = customer.hours * COST_PER_HOUR;
printf("The full cost is $%u at $%u per hour \n", Fullcost, COST_PER_HOUR );

printf( "%s %s will have access to %s for %u hours \n",
customer.ac_fname,
customer.ac_lname ,
customer.selection,
customer.hours );
} // end function: processAccommodation

关于c - 使用结构和数组的 Strcmp 的 If 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com