int inquire_day(pstudent head, int date[3])//查询到期学生 { int day1 = 0, day2 = 0; printf("编号\t\t姓名\t\t性别\t\t年龄\t\t班级\t\t缴费日期\t\t费年限\n"); while (head != NULL) { day1 = day_diff(head->date, date);//实际学习天数 day2 = day_diff(head->date, head->time);//应学习天数 if (day2 < day1) p(head); head = head->next; } return 1; }
时间: 2024-04-05 21:32:22 浏览: 115
这段代码是一个查询学生缴费日期的函数。它的输入参数包括一个指向学生链表头结点的指针head和一个日期数组date,表示要查询的日期。函数首先定义了两个变量day1和day2,用于计算学生实际学习天数和应学习天数。然后,它遍历整个学生链表,在每个节点上计算实际学习天数和应学习天数,如果应学习天数小于实际学习天数,就输出该学生的信息。最后,函数返回1表示查询完成。
相关问题
#include<iostream> #include<vector> #include<fstream> #include<algorithm> using namespace std; class air_information{//航空信息 public: string flight_num; string staring_station; string terminal;//终点站 string aircraft_model; string flight_date; int member_num;// 成员定额 int remain_ticketnum;//余票量 air_information(string num,string star,string ter,string air,string fli,int mem,int rem):flight_num(num),staring_station(star),terminal(ter),aircraft_model(air),flight_date(fli),member_num(mem),remain_ticketnum(rem) { ; } }; vector<air_information>p; void data_read() { ifstream ios; air_information a1; ios.open("D:\\程序语言练习\\航空管理信息.txt"); for(int i=1;i<4;i++) { ios>>a1.flight_num>>a1.staring_station>>a1.terminal>>a1.aircraft_model>>a1.flight_date>>a1.member_num>>a1.remain_ticketnum; p.push_back(a1) ; } } inquire_terminel()//按飞行终点查询函数 { vector<air_information>::iterator it; cout<<"请输入你要查询的飞行终点"; string terminal; cin>>terminal; for(vector<air_information>::iterator it=p.begin();it!=p.end();++it) { int f; for(int i=0;i<p.size();i++) { if(it=terminal) { cout<<"航班信息如下:"<<endl; cout<<flight_num<<' '<<staring_station<<' '<<terminal<<' '<<aircraft_model<<' '<<flight_date<<' '<<member_mum<<' '<<remain_ticketnum<<endl; return f=1; } else if { return f=0; } } if(f==0) { cout<<"没有查询到航班,请重新输入后重试!"; } } } main() { data_read() ; inquire_terminel(); return 0; }
这段代码存在一些问题,我来帮你进行分析和修改。
1.缺少函数返回类型
```
inquire_terminel()//按飞行终点查询函数
```
这个函数的声明没有指定返回类型,应该改为:
```
void inquire_terminel()//按飞行终点查询函数
```
2.变量名错误
```
cout<<flight_num<<' '<<staring_station<<' '<<terminal<<' '<<aircraft_model<<' '<<flight_date<<' '<<member_mum<<' '<<remain_ticketnum<<endl;
```
这里的变量名拼写不正确,应该是:
```
cout<<it->flight_num<<' '<<it->staring_station<<' '<<it->terminal<<' '<<it->aircraft_model<<' '<<it->flight_date<<' '<<it->member_num<<' '<<it->remain_ticketnum<<endl;
```
3.查询条件判断错误
```
if(it=terminal)
```
这里应该是用等于号判断相等,而不是赋值号。另外,应该使用变量it指向的对象的terminal属性和输入的terminal进行比较,应该改为:
```
if(it->terminal==terminal)
```
4.查询结果判断错误
```
else if
{
return f=0;
}
```
这里的else if后面没有条件,应该补充条件。另外,如果没有查到航班,应该在循环结束后输出提示信息。应该改为:
```
else if(it == p.end() - 1 && f == 0)
{
cout<<"没有查询到航班,请重新输入后重试!";
}
```
5.缺少头文件
这段代码中使用了vector、string、fstream和iostream等头文件,但是只包含了iostream头文件,应该在开头添加:
```
#include<vector>
#include<string>
#include<fstream>
```
修改后的代码如下:
uchar UART_inquire(void) { unsigned char index,ID_ASC[8],i; unsigned char CheckSum=0; if(RI == 1) //RI为接收中断标志位,1为串口中断发生 { RI=0; //清接收中断标志位 CardSnTemp[0] = SBUF; //缓冲接收到的收据,暂存第一个数据 for(i=1;i<18;i++) { CardSnTemp[i] = 0; //清缓冲区 } //卡号:0000966658@ 的组成: 6字节(卡号:)+10字节(0000966658)+1字节(@) for (index = 0; index < 17; index++) //循环查询接收TX模块发送的后面11个字节 { //打开并设定定时器2,设定定时时间为1ms,即接收每个数据的等待超时为2ms START_T0(RCAP2_2ms); while (RI == 0 && TF0 == 0); //判断接收到数据或超时 if (RI == 1) //如果是接收到数据而退出 { RI = 0; //清接收中断标志 CardSnTemp[index] = SBUF; //将接收到的数据依次保存到数据缓冲区(字符类型) } else //如果是其中的某个数据超时,直接退出 { bWarn = 1; //错误标志置一,闪烁两次LED3 STOP_T0(); return FALSE; } if(index == 16) { //接收到17个数据 for(i=0;i<12;i++) CardSn[i]=CardSnTemp[i+ 5]; //去掉“卡号:”这六个字节的中文 display2(2,0,"20230519",8); display2(3,0,"ID: ",4); display2(3,5,CardSn,11); //将提取出来的10位十进制卡号 及@,显示在液晶屏上 UartTX_Send_String(CardSn,11);//把卡号通过串口打印出来 bPass=1; } } STOP_T0(); //停止定时器2 return TRUE; } return FALSE; }解释这段代码的含义
这段代码是一个函数,名为UART_inquire,作用是查询通过串口接收到的数据,并提取出其中的卡号信息,最终将卡号显示在液晶屏上并通过串口打印出来。
代码中首先判断RI接收中断标志位是否为1,如果是则表示串口接收到了数据。接着将接收到的第一个数据暂存到一个缓冲区中,清除其他数据缓冲区中的数据。然后通过一个循环查询接收到的后面11个字节数据,每次循环设置定时器2的定时时间为2ms,等待串口接收数据,如果超时则返回FALSE,否则将接收到的数据依次保存到数据缓冲区中。当接收到第17个数据时,即卡号数据全部接收完成,将其中的卡号信息提取出来,显示在液晶屏上,并通过串口打印出来,最终返回TRUE表示数据接收成功。如果在数据接收过程中发生错误,则将错误标志bWarn置为1,闪烁LED3两次,并返回FALSE表示数据接收失败。
阅读全文