最近要熟悉if语句的使用,找来这么一个题目:
用C语言编写的程序根据特定的条件确定司机的保险状况,符合以下情况则系统应该显示其已经投保,否则为未投保:
⑴如果司机已婚,则他(她)已经投保;
⑵如果司机是未婚的男性,且年龄在30岁以上,则他已经投保;
⑶如果司机是未婚的女性,且年龄在25岁以上,则她已经投保。
准备测试用例来检查用户输入的详细资料,给出期望的输出结果,如果输入错误的数据,将显示合适的错误信息。
代码如下:(本人较懒,没有注释,有疑问可以评论,看到就回)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int driver_insurance(char sex[],int age,char marry[]);
int determine(char sex[],int age,char marry[]);
void value(int sum);
char *MARRY_= "已婚";
char *NOTMARRY_ = "未婚";
char *BOY_ = "男";
char *GIRL_ = "女";
int main()
{
int age;
char sex[10];
char marry[10];
printf("请输入您的性别,年龄,婚姻状态\n");
while(1){
int flag=2;
scanf("%s %d %s" ,&sex,&age,&marry);
switch(determine(sex, age,marry))
{
case 0: flag=driver_insurance(sex,age,marry); break;
case 1: printf("请输入正确的性别!\n"); break;
case 3: printf("请输入正确的年龄!\n"); break;
case 5: printf("请输入正确的婚姻状态!\n"); break;
case 4: printf("请输入正确的性别,年龄!\n"); break;
case 6: printf("请输入正确的性别,婚姻状态!\n"); break;
case 8: printf("请输入正确的年龄,婚姻状态!\n"); break;
default: printf("请输入正确的性别,年龄,婚姻状态!\n");
}
if(flag==1)
printf("恭喜你,您已经有保险\n");
if(flag==0)
printf("很遗憾,您还没有保险\n");
}
return 0;
}
int driver_insurance(char sex[],int age,char marry[])
{
if(strcmp(marry,MARRY_) == 0)
{
return 1;
}
else if(strcmp(sex,BOY_)==0&&age>30)
{
return 1;
}
else if(strcmp(sex,GIRL_)==0&&age>25)
{
return 1;
}
else
return 0;
}
int determine(char sex[],int age,char marry[])
{
int a=strcmp(sex,GIRL_)!=0&&strcmp(sex,BOY_)!=0 ? 1:0;
int b=age<0||age>110 ? 3:0;
int c=strcmp(marry,MARRY_)!=0&&strcmp(marry,NOTMARRY_)!=0 ? 5:0;
int sum=a+b+c;
value(sum);
}
void value(int sum)
{
return sum;
}
以下是运行截图:
ok了事。