当前位置:首页 » 编程语言 » c语言高速超速处罚代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言高速超速处罚代码

发布时间: 2022-04-22 01:17:29

‘壹’ 请用c语言写这个程序。一定要用链表写,老师不让用数组。。。我不会链表。

设违章种类分为违章停车、闯红灯、超速等三种。设违章停车每次罚款100元、闯红灯每次罚款200元、超速每次罚款500元。
需处理的车辆及违章基本信息包括:车牌号、车主姓名、违章停车次数、闯红灯次数、超速次数。要求能:
1.车辆及违章信息的录入。
2.基于车牌号查询每台车辆的违章情况。
3.基于车牌号统计每台车辆的罚款总金额。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<Windows.h>
struct Car{
unsigned long car_number;
char ower_name[20] ;
unsigned int parking_number;
unsigned int run_red_light;
unsigned int overspeed;
struct Car* next;
};
struct Car* head=NULL;
struct Car* insert(){
struct Car *p1,*p2,*car_ptr;
while(1){
p1=head;
car_ptr=(struct Car*)malloc(sizeof(Car));
printf("请输入要添加的车辆信息(车牌号输入0,其它任意输入可退出)\n");
printf("请输入车牌号:");
scanf("%ld",&car_ptr->car_number);
printf("车主姓名:");
scanf("%s",&car_ptr->ower_name);
printf("违规停车次数:");
scanf("%d",&car_ptr->parking_number);
printf("闯红灯次数:");
scanf("%d",&car_ptr->run_red_light);
printf("超速次数:");
scanf("%d",&car_ptr->overspeed);
if(car_ptr->car_number==0)break;
if(p1==NULL){
head=car_ptr;
car_ptr->next=NULL;
continue;
}
while(car_ptr->car_number>p1->car_number&&p1->next!=NULL){
p2=p1;
p1=p1->next;
}
if(car_ptr->car_number<=p1->car_number){
if(p1==head){
car_ptr->next=head;
head=car_ptr;
}else{
p2->next=car_ptr;
car_ptr->next=p1;
}
}
else{
p1->next=car_ptr;
car_ptr->next=NULL;
}
}
return head;
}
struct Car* delete_car(){
unsigned long car_number;
struct Car* p1,*p2;
while(1){
p1=head;
printf("请输入要删除的车牌号(输入 0 退出):");
scanf("%ld",&car_number);
if(car_number==0)break;
while(p1->car_number!=car_number&&p1->next!=NULL){
p2=p1;
p1=p1->next;
}
if(p1->car_number==car_number){
if(p1==head)head=p1->next;
else
p2->next=p1->next;
free(p1);
}
else printf("没有发现该车牌号的车辆信息!\n");
}
return head;
}
void print_car(){
struct Car* p1,*p2;
p1=head;
if(head==NULL)printf("没有车辆信息!\n");
else{
while(p1->next!=NULL){
printf("车牌号:%ld\n车主姓名:%s\n违规停车次数:%d\n闯红灯次数:%d\n超速次数:%d\n",p1->car_number,
p1->ower_name,p1->parking_number,p1->run_red_light,p1->overspeed);
p1=p1->next;
}
printf("车牌号:%ld\n车主姓名:%s\n违规停车次数:%d\n闯红灯次数:%d\n超速次数:%d\n",p1->car_number,
p1->ower_name,p1->parking_number,p1->run_red_light,p1->overspeed);
}
}
void query(){
struct Car* p1,*p2;
float money;
p1=head;
unsigned long car_number;
if(head==NULL){
printf("没有车辆信息!\n");
return ;
}
printf("请输入要查询的车牌号:\n");
scanf("%ld",&car_number);
while(p1->car_number!=car_number&&p1->next!=NULL){
p2=p1;
p1=p1->next;
}
if(p1->car_number==car_number){
printf("车牌号:%ld\n车主姓名:%s\n违规停车次数:%d\n闯红灯次数:%d\n超速次数:%d\n",p1->car_number,
p1->ower_name,p1->parking_number,p1->run_red_light,p1->overspeed);
money=100*(p1->parking_number)+200*(p1->run_red_light)+500*(p1->overspeed);
printf("发款总金额:%f\n",money);
}else
printf("没有发现该车牌号的车辆信息!");
}

void free_car(){
struct Car* p1,*p2;
p1=head;
if(head==NULL);
else{
while(p1->next!=NULL){
p2=p1;
p1=p1->next;
free(p2);
}
free(p1);
}
}
void main(){
char ch;
while(1){
printf("\t\t----------1.添加车辆信息-----------\n");
printf("\t\t----------2.查询车辆信息-----------\n");
printf("\t\t----------3.删除车辆信息-----------\n");
printf("\t\t----------4.显示所有车辆信息-------\n");
printf("\t\t----------5.退出程序 -----------\n");
scanf("%c",&ch);
system("cls");
switch(ch){
case '1':insert();system("cls");break;
case'2':query();getchar();getchar();system("cls");break;
case'3':delete_car();system("cls");break;
case'4':print_car();getchar();getchar();system("cls");
break;
case'5':free_car();
exit(0);break;
}
}
}
还有很多不足你改一下吧

‘贰’ C语言 高速公路超速处罚 PTA编程题

时速100,限速110,110×1.1=121,满足100 < 121,应该输出OK。

‘叁’ c语言高速公路超速罚款

按照规定,超速10%以下的,警告一次,不扣分不罚款;超速10%以上20%以下的,扣3分罚款100元;超速20%以上50%以下的,扣6分罚款200元;超速50%以上的,扣12分罚款200~2000元,暂扣驾照,参加培训。

‘肆’ C语言:分支-08. 高速公路超速处罚(15)

#include<stdio.h>
intmain()
{
intx=0,z=0;
scanf("%d%d",&x,&z);
//问:为什么(x-z)*100/z;前面要加个double强制转换?
//答:因为x,z,100都是整数(int型),他们三的+-*/得到的结果也是整形,
//如果不转换会丢失精度,导致计算结果不准。
doubleb=(double)(x-z)*100/z;
if(b>50)
{
printf("Exceed%.0f%%.LicenseRevoked",b);
}
elseif(b>=10&&b<=50)
{
printf("Exceed%.0f%%.Ticket200",b);
}
elseif(b<10)
{
printf("OK");
}
return0;
}

‘伍’ C语言程序设计作业

#include<stdio.h>
intgeti(charc);//获取字符对应下标
intmain()
{
intia,ib;
chara,b;
printf("猜拳游戏:'V'表示剪刀,'S'表示石头,'P'表示布 ");
while(1)
{
printf("请输入玩家a的手势:");
scanf("%c",&a);
getchar();
printf("请输入玩家b的手势:");
scanf("%c",&b);
getchar();
ia=geti(a);
ib=geti(b);
if(ia==-1||ib==-1)
{
printf("输入不符合规则,请重新输入! ");
continue;
}
if(ia-ib==1||ia-ib==-2)
printf("玩家a胜 ");
elseif(ia-ib==-1||ia-ib==2)
printf("玩家b胜 ");
else
printf("平局 ");

}

return0;
}
intgeti(charc)//获取字符对应下标
{
charg[3]={'V','S','P'};//数组元素依次克前一个元素及被后一个元素克制
inti=0;
for(i=0;i<3;i++)
if(g[i]==c)
returni;
return-1;
}

‘陆’ 简单的C语言问题,问什么当输入110 100时,会显示OK,而不是罚款200.

你的问题出现的原因是,计算机中浮点(无论是单/双精度的)
都是有误差的
100*1.10可能的值是109.9999999
它不等于110的
所以你要加一个精度值,如
if(speed+0.000001>=1.10*limiting&&speed<1.50*limiting)
其它地方要同样处理

‘柒’ 我想要一个车辆违章查询系统的C语言程序,找了很多但是,代码树上去却又错误!!

这程序不完整,每个case后面都有一个函数,你前面没有声明,后面没有给出函数代码。而且查询系统肯定需要附带一个车辆信息数据库,程序需要对这些数据进行操作,显然你没有。如果只需要模拟,删掉case后面那些函数应该可以运行。如果要跟真的系统一样能查询,要么去认真学学c语言,要么洗洗睡吧

‘捌’ C语言程序设计的作业

#include<stdio.h>
intmain()
{
intf;
floatl,s;
while(1)
{
printf(" 输入限速值及所测车速:");
scanf("%f%f",&l,&s);
if(s-l<0)
printf("未超速不处罚记%d分 ",f=0);
elseif((s-l)/l<0.2)
printf("超速未到20%%记%d分 ",f=3);
elseif((s-l)/l>=0.2&&(s-l)/l<0.5)
printf("超速20%%未到50%%记%d分 ",f=6);
elseif((s-l)/l>=0.5)
printf("超速50%%及以上记%d分 ",f=12);
printf("驾驶证剩余分数:%d ",12-f);
}
return0;
}
#include<stdio.h>
intgeti(charc);//获取字符对应下标
intmain()
{
intia,ib;
chara,b;
printf("猜拳游戏:'V'表示剪刀,'S'表示石头,'P'表示布 ");
while(1)
{
printf("请输入玩家a的手势:");
scanf("%c",&a);
getchar();
printf("请输入玩家b的手势:");
scanf("%c",&b);
getchar();
ia=geti(a);
ib=geti(b);
if(ia==-1||ib==-1)
{
printf("输入不符合规则,请重新输入! ");
continue;
}
if(ia-ib==1||ia-ib==-2)
printf("玩家a胜 ");
elseif(ia-ib==-1||ia-ib==2)
printf("玩家b胜 ");
else
printf("平局 ");
}
return0;
}
intgeti(charc)//获取字符对应下标
{
charg[3]={'V','S','P'};//数组元素依次克前一个元素及被后一个元素克制
inti=0;
for(i=0;i<3;i++)
if(g[i]==c)
returni;
return-1;
}

‘玖’ 用C语言编写程序

y不应该定义成int 型,因为两个整数相除得到的还是整数,后面的小数部分会丢失的,后面if判断的条件也有所欠缺。y应该是float或者double类型。
改法:
删掉int y
float y=1.0*(float)(chesu-xiansu)/(float)xiansu;
if(y>0.1&&y<0.5)
说实话你这个程序后面一般人都看不懂最后输出的是什么意思,我写了个,你可以参考下。
#include <stdio.h>
void main()
{
int speed,limit;/*车速,限速*/
printf("please Input speed and limit speed:\n");
scanf("%d%d",&speed,&limit);
float x=(float)speed/(float)limit;
if(x>1.1&&x<1.5)
printf("罚款200\n");
if(x>=1.5)
printf("吊销驾驶证\n");
}

‘拾’ C语言:车辆交通违章管理程序

一个一模一样的,我COPY过来,勿怪...实在是一样
//注释删除掉 以及 中文用不了之外
其他是一样的,那边也是要求C语言编,的确一样.
//VC++6.0下调试通过
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <time.h>

typedef enum {s_park=1, s_speed, s_signal, s_other} SheetType;
typedef enum {f_id, f_car, f_driver, f_police} FindType;

typedef struct Sheet
{
signed long id;//罚单号
char carNo[20];//车牌号
char driver[20];//司机名
char police[20];//警察编号
SheetType type;//罚单类型
tm time;//出单日期
}Sheet;

typedef struct Node
{
Sheet data;
Node* next;
}Node;

static Node* begin=NULL;//哨兵结点
static signed long len=0;//链表长度

void printMenu();//打印菜单
void printBye();//打印退出界面
void printList(Node* bg);//打印所有罚单信息
void printNode(Sheet sheet);//打印单条罚单
Node* lookupSheet(void* pInfo, signed short* n,
FindType type=f_id);//根据类型查询罚单。成功返回结点。失败NULL
int addNode(Node* bg, Sheet sheet);//添加罚单。成功返回链表长度。内存分配失败0
int deleteNode(signed short stid);//根据罚单号删除罚单。
int total(char* driver, tm date1, tm date2, signed short* icar,
signed short* ispeed, signed short* isignal, signed short* iother);//统计
int getListlen(Node* bg);
void freeList(Node* bg);//释放链表

void main()
{
//初始化链表。
begin=(Node*)malloc(sizeof(Node));
begin->next=NULL;
printf("----------------------------------------------------------------------------\n");
printf("--- 《交通罚单管理系统》 ---\n");
printf("--- 沙支夸依 2007-12-24 ---\n");
printf("----------------------------------------------------------------------------\n");
printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
printMenu();
while (1)
{
fflush(stdin);
char cmd=getchar();
Sheet sheet;
memset(&sheet, 0, sizeof(Sheet));
switch (cmd)
{
case '1':
printf("---添加交通处罚单信息。(车牌号为 0 结束)\n");
while (1)
{
printf("请输入违章车辆号: ");
fflush(stdin);
gets(sheet.carNo);
if (!strcmp(sheet.carNo,"0"))
break;
printf("请输入违章司机姓名: ");
fflush(stdin);
gets(sheet.driver);
printf("请输入开单交警编号: ");
fflush(stdin);
gets(sheet.police);
printf("请选择违章类型(1-违章停车 2-超速 3-不按信号灯行使 4-其它):");
scanf("%d", &sheet.type);
printf("请输入开单日期(例 2007-12-24): ");
scanf("%d-%d-%d", &sheet.time.tm_year, &sheet.time.tm_mon, &sheet.time.tm_mday);
int succ=addNode(begin, sheet);
if (!succ)
{
printf("内存错误!请重新输入!\n");
}
else
printf("添加成功!当前记录�?%d\n", len);
printf("\n");
}
printMenu();
break;
case '2':
printf("---删除交通处罚单信息。(罚单号为 0 结束)\n");
while (1)
{
signed short stid=0;
printf("请输入要删除的罚单号:");
scanf("%d", &stid);
if (!stid)
break;
Node* delNode=lookupSheet(&stid, NULL);
if (!delNode)
printf("对不起!你要删除的记录不存在。\n");
else
{
printNode(delNode->data);
printf("您确定要删除这条记录吗?(任意键删除/ n 取消)\n");
fflush(stdin);
char cDelete=getchar();
if ('n'==cDelete)
continue;
printf("删除成功!剩余记录数: %d\n",deleteNode(stid));
}
printf("\n");
}
printMenu();
break;
case '3':
printf("---查询交通处罚单信息。(输入 0 结束)\n");
while (1)
{
printf("请选择查询类型: 1-车辆号 2-司机 3-交警 4-退出\n>>>");
Node* findNode=NULL;
int findtype=0;
scanf("%d", &findtype);
if (4==findtype)
break;
char findInfo[20];
signed short findcout=0;
switch (findtype)
{
case 1:
printf("请输入车辆号: ");
fflush(stdin);
gets(findInfo);
findNode=lookupSheet(findInfo, &findcout, f_car);
if (getListlen(findNode)>=5)
{
printf("---该车辆违章超过5次。建议重罚。\n");
}
break;
case 2:
printf("请输入司机姓名: ");
fflush(stdin);
gets(findInfo);
findNode=lookupSheet(findInfo, &findcout, f_driver);
if (getListlen(findNode)>=5)
{
printf("---该司机违章超过5次。建议重罚。\n");
}
break;
case 3:
default:
printf("请输入交警编号: ");
fflush(stdin);
gets(findInfo);
findNode=lookupSheet(findInfo, &findcout, f_police);
}
if (!findNode)
printf("对不起!你要查询的记录不存在。\n");
else
{
printList(findNode);
freeList(findNode);
}
printf("\n");
}
printMenu();
break;
case '4':
printf("---统计司机处罚单信息。(输入 0 结束)\n");
while (1)
{
printf("请输入司机姓名: ");
char driver[20];
fflush(stdin);
gets(driver);
if (!strcmp(driver, "0"))
break;
printf("请输入起始日期(如 2007-12-24): ");
tm date1;
memset(&date1, 0, sizeof(tm));
scanf("%d-%d-%d", &date1.tm_year, &date1.tm_mon, &date1.tm_mday);
printf("请输入终止日期(如 2007-12-24): ");
tm date2;
memset(&date2, 0, sizeof(tm));
scanf("%d-%d-%d", &date2.tm_year, &date2.tm_mon, &date2.tm_mday);
signed short car, speed, signal, other;
int sum=total(driver, date1, date2, &car, &speed, &signal, &other);
printf("司机姓名:%-10s 违章停车:%2d 超速:%2d 不按信号灯行使:%2d 其它:%2d 共计:%2d\n",
driver, car, speed, signal, other, car+speed+signal+other);
printf("\n");
}
printMenu();
break;
case '5':
printList(begin);
printMenu();
break;
case '6':
printf("---修改交通处罚单信息。(输入 0 结束)\n");
while (1)
{
signed short stid=0;
printf("请输入要修改的交通处罚单号:");
fflush(stdin);
scanf("%d", &stid);
if (!stid)
break;
Node* updataNode=lookupSheet(&stid, NULL);
if (!updataNode)
printf("对不起!你要修改的记录不存在。\n");
else
{
printNode(updataNode->data);
memset(&sheet, 0, sizeof(Sheet));
sheet.id=stid;
printf("请修改违章车辆号: ");
fflush(stdin);
gets(sheet.carNo);
printf("请修改违章司机姓名: ");
fflush(stdin);
gets(sheet.driver);
printf("请修改开单交警编号: ");
fflush(stdin);
gets(sheet.police);
printf("请修改违章类型(1-违章停车 2-超速 3-不按信号灯行使 4-其它):");
scanf("%d", &sheet.type);
printf("请修改开单日期(例 2007-12-24): ");
scanf("%d-%d-%d", &sheet.time.tm_year, &sheet.time.tm_mon, &sheet.time.tm_mday);
updataNode->data=sheet;
printNode(updataNode->data);
}
printf("\n");
}
printMenu();
break;
case '7':
printBye();
freeList(begin);
exit(0);
break;
default:
printMenu();
}
}
}

void printMenu()
{
printf("----------------------------------------------------------------------------\n");
printf("--- 1、添加交通处罚单信息。 2、删除交通处罚单信息。 ---\n");
printf("--- 3、查询交通处罚单信息。 4、统计司机处罚单信息。 ---\n");
printf("--- 5、浏览交通处罚单信息。 6、修改交通处罚单信息。 ---\n");
printf("--- 7、退出。 ---\n");
printf("----------------------------------------------------------------------------\n");
printf(">>>");
}

void printBye()
{
printf("----------------------------------------------------------------------------\n");
printf(" 感谢您使用交通罚单管理系统 \n");
printf(" 再 见 \n");
printf("----------------------------------------------------------------------------\n");
}

void printNode(Sheet sheet)
{
char* type=NULL;
switch (sheet.type)
{
case s_park:
type="违章停车";
break;
case s_speed:
type="超速";
break;
case s_signal:
type="不按信号灯行使";
break;
case s_other:
default:
type="其它";
}
printf("罚单号:%-6d 车牌号:%-10s 司机名:%-10s 交警名:%-10s\n"
"罚单类型:%-15s 开单日期:%d-%d-%d\n",
sheet.id, sheet.carNo, sheet.driver, sheet.police,
type, sheet.time.tm_year, sheet.time.tm_mon, sheet.time.tm_mday);
printf("--------------------------------------------------------------------------\n");
}

void printList(Node* bg)
{
Node* temp=bg->next;
if (!temp)
{
printf("暂时无记录可供浏览!\n");
}
while (temp)
{
printNode(temp->data);
temp=temp->next;
}
}

Node* lookupSheet(void* pInfo, signed short* n, FindType type)
{
Node* result=NULL;
if (type)
{
result=(Node*)malloc(sizeof(Node));
result->next=NULL;
*n=0;
}
Node* temp=begin->next;
switch (type)
{
case f_id:
while (temp)
{
if (temp->data.id==*(signed long*)pInfo)
{
if (n)
*n=1;
return temp;
}
temp=temp->next;
}
break;
case f_car:
while (temp)
{
if (!strcmp(temp->data.carNo,(char*)pInfo))
{
addNode(result, temp->data);
(*n)++;
}
temp=temp->next;
}
break;
case f_driver:
while (temp)
{
if (!strcmp(temp->data.driver,(char*)pInfo))
{
addNode(result, temp->data);
(*n)++;
}
temp=temp->next;
}
break;
case f_police:
while (temp)
{
if (!strcmp(temp->data.police,(char*)pInfo))
{
addNode(result, temp->data);
(*n)++;
}
temp=temp->next;
}
break;
}
return result;
}

int addNode(Node* bg, Sheet sheet)
{
Node* temp=(Node*)malloc(sizeof(Node));
if (!temp)
return 0;
if (bg==begin)
{
if (bg->next)
{
sheet.id=bg->next->data.id+1;
}
else
sheet.id=1;
}
temp->data=sheet;
temp->next=bg->next;
bg->next=temp;
return ++len;
}

int deleteNode(signed short stid)
{
Node* temp=begin;
Node* pos=NULL;
while (temp->next)
{
if (temp->next->data.id==stid)
{
pos=temp->next;
temp->next=pos->next;
free(pos);
return --len;
}
temp=temp->next;
}
return -1;
}

int getListlen(Node* bg)
{

Node* temp=bg;
int i=0;
while (temp->next)
{
i++;
temp=temp->next;
}
return i;
}

void freeList(Node* bg)
{
Node* temp=NULL;
while (bg)
{
temp=bg->next;
free(bg);
bg=temp;
}
}

int total(char* driver, tm date1, tm date2, signed short* icar,
signed short* ispeed, signed short* isignal, signed short* iother)
{
signed short result=0;
*icar=0;
*ispeed=0;
*isignal=0;
*iother=0;
Node* findNode=lookupSheet(driver, &result, f_driver);
if (!findNode)
{
free(findNode);
return 0;
}

time_t o,n,nw;
date1.tm_year-=1900;
date2.tm_year-=1900;
o=mktime(&date1);
n=mktime(&date2);
if (o<n)
{
time_t tp=o;
o=n;
n=tp;
}
Node* temp=findNode->next;
while (temp)
{
tm t=temp->data.time;
t.tm_year-=1900;
nw=mktime(&t);
if (nw>o||nw<n)
{
temp=temp->next;
continue;
}
switch (temp->data.type)
{
case 1:
(*icar)++;
break;
case 2:
(*ispeed)++;
break;
case 3:
(*isignal)++;
break;
case 4:
default:
(*iother)++;
}
temp=temp->next;
}
freeList(findNode);
return result;
}