好的,我现在正尝试使用check_status()下面的函数检查代码。
他们在代码中没有错误,但我想我搞砸了逻辑。 我想要做什么,当它运行时放入S,并打印“正确的答案.S”
现在代码工作正常,当你输入FEFWRGV或不是S,SH,MJ,MS的东西时打印出错误信息。 然而!当你输入SSDFIEWF或其他类似的东西时,它会说“正确的答案。”
我检查是否输入S的方式是 if(status [0] =='S')
有没有办法可以编写如下代码: if(status [0] =='S'&& status [1] == void)
因为我知道我在做什么是检查状态[0]然后我想确保没有使用状态[1]。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <cstdio>
//functions called
float wages_loop();
float other_loop();
float interest_loop();
void check_status();
//start main
int main(void)
{
char status[10], another[10];
char buffer[80];
float wages, other_income, interest, dividends, test;
int dependents;
int single_acc = 0, mj_acc = 0, ms_acc = 0, sh_acc = 0;
printf("Would you like to start: ");
gets_s(another);
if (another[0] != 'y' && another[0] != 'n')
{
while (another[0] != 'y' && another[0] != 'n')
{
printf("\n\n INCORRCT ANSWER. \n\n");
printf("\n Would you like to start. (y or n)");
gets_s(another);
}
}
while (another[0] == 'y')
{
check_status();
interest = 0;
printf("\n\n\t\t Your interest is: %.2f \n", interest);
system("pause");
printf("Would you like anoter: ");
gets_s(another);
if (another[0] != 'y' && another[0] != 'n')
{
while (another[0] != 'y' && another[0] != 'n')
{
printf("\n\n INCORRCT ANSWER. \n\n");
printf("\n Would you like anoter. (y or n)");
gets_s(another);
}
}
} //end loop
printf("\n\n\t\t\t Number of Singles filleing: %i \n", single_acc);
return 0;
}//end main
void check_status()
{
char status[10];
int check = 0;
while (check != 1)
{
printf("What is your Status: ");
gets_s(status);
if (status[0] == 'S' && status[1] == 'H')
{
printf("\n\n CORRECT ANSWER. SH \n\n");
check = 1;
}
else if (status[0] == 'S')
{
printf("\n\n CORRECT ANSWER. S \n\n");
check = 1;
}
else if (status[0] == 'M' && status[1] == 'J')
{
printf("\n\n CORRECT ANSWER. MJ \n\n");
check = 1;
}
else if (status[0] == 'M' && status[1] == 'S')
{
printf("\n\n CORRECT ANSWER. MS \n\n");
check = 1;
}
else
{
printf("\n\n INCORRECT ANSWER. noting \n\n");
}
}
}
答案 0 :(得分:4)
有没有办法可以编写如下代码:if(status [0] =='S'&amp;&amp; status 1 == void)
你差不多了。 C-“string”-termination不是void
而是'\0'
。
因此要测试“字符串”是否在1 st 字符后结束,即status[0]
执行以下操作:
if (status[0] == 'S' && status[1] == '\0')
顺便说一句:要声明一个没有任何参数的函数,请使用void
,如下所示:
check_status(void);
由于Joachim Pileborg已就您的问题发表了评论,因此您错误地使用了gets_s()
。 gets_s()
takes two parameters。
编译器应该已经警告过你这个缺少的第二个参数。
严肃对待此类警告是个好主意。