c语言程序解答(在线等)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言程序解答(在线等)?相关的知识,希望对你有一定的参考价值。
建立一个体育项目记录链表,记录包括,项目序号,项目名称,项目类,参赛人数,竞赛时间
根据题意:
1、项目序号应为唯一值,用自增变量填充。
2、时间使用struct tm结构体(考虑如需时间运算,可使用相关函数)。
3、自定义结构类型SIINFO,分别实现插入链表和打印链表两个功能。
4、由于这个演示程序执行完就结束程序了。所以链表我没有写free释放内存,如你后期扩充代码,自己写释放(除程序结束,malloc申请内存不会自动释放)。
下面是演示代码:
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#define MS 4//最大类型个数
#define MN 20//名称最大字符长度
char stypes[MS][10]="速度型","力量型","耐力型","对抗型";//项目类别,自行扩展,对应修改MS常量
typedef struct SportsItemInfo//定义一个体育项目结构类型
int id;//项目序号,从数据结构考虑,该项不能重复,应设为自增从0开始(实际开发,这个值由数据库分配)。
char name[MN+1];//项目名称
int stype;//项目类(对应stypes行下标)
int n;//参赛人数
struct tm sDate;//竞赛时间
struct SportsItemInfo *next;
SIINFO;
SIINFO *insert2List(SIINFO *p_sHead);//插入新数据,首次插入参数传NULL。参数:链表头节点地址(不是首节点)。成功返回头节点,失败返回NULL。
void selectFList(SIINFO *p_sHead);//查询链表
int main()
char c;
SIINFO *p_sHead=NULL,*stemp=NULL;
printf("新增体育项目:\\n");
while(1)
stemp=insert2List(p_sHead);
if(!stemp)
printf("ERROR!\\n");
return 1;
p_sHead=stemp;
printf("是否继续输入(Y/N):");
c=0;
while(c!='Y' && c!='N')scanf("%c",&c);
if(c=='N') break;
selectFList(p_sHead);
return 0;
void selectFList(SIINFO *pht)
int i=0;
if(pht)
printf("\\n输出链表信息:\\n");
while(pht->next)
printf("-----------项目%d---------\\n",++i);
printf("项目序号:%d\\n",pht->next->id);
printf("项目名称:%s\\n",pht->next->name);
printf("项目类别:%s\\n",stypes[pht->next->stype]);
printf("参赛人数:%d\\n",pht->next->n);
printf("参赛时间:%04d-%02d-%02d %02d:%02d:%02d\\n",pht->next->sDate.tm_year+1900,pht->next->sDate.tm_mon+1,pht->next->sDate.tm_mday,pht->next->sDate.tm_hour,pht->next->sDate.tm_min,pht->next->sDate.tm_sec);
printf("--------------------------\\n");
pht=pht->next;
SIINFO *insert2List(SIINFO *p_sHead)
static int x=0;
static SIINFO *p_sTail=NULL;
int i;
SIINFO *p_new=NULL;
if(!p_sHead)
p_sHead=(SIINFO*)malloc(sizeof(SIINFO));
if(!p_sHead)
return NULL;
p_sHead->next=NULL;
p_sTail=NULL;
p_new=(SIINFO*)malloc(sizeof(SIINFO));
if(!p_new)
return NULL;
p_new->next=NULL;
p_new->id=x++;
printf("--------------------------\\n");
printf("项目名称:"),scanf("%s",p_new->name);
for(i=0,printf("项目类(");i<MS-1;printf("%d、%s,",i,stypes[i]),i++);
printf("%d、%s):",i,stypes[i]);
p_new->stype=-1;
while(p_new->stype<0 || p_new->stype>MS-1)scanf("%d",&p_new->stype);
printf("参赛人数:"),scanf("%d",&p_new->n);
printf("参赛时间(输入格式:年-月-日 时:分:秒):");
scanf("%d-%d-%d %d:%d:%d",&p_new->sDate.tm_year,&p_new->sDate.tm_mon,&p_new->sDate.tm_mday,&p_new->sDate.tm_hour,&p_new->sDate.tm_min,&p_new->sDate.tm_sec);
p_new->sDate.tm_mon--;//tm结构的月份是从0开始对应1月
p_new->sDate.tm_year=p_new->sDate.tm_year-1900;//tm结构的年份是实际年份-1900
if(!p_sHead->next)
p_sHead->next=p_new;
else
p_sTail->next=p_new;
p_sTail=p_new;
printf("--------------------------\\n");
return p_sHead;
参考技术A 回答您好,请问您遇到什么问题了呢?
提问这个j为啥是27
把具体步骤写一下
回答题目详情可以发我吗?
提问文字发我可以吗?
提问电脑不在我身边
回答额
第一步:int i=3 //i的值为3第二步:j=i+i+i //j=9第三部:j=(i++)+(i++)+(i++);里面的 i 自增 //i=4第四部:k=(++i)+(++i)+(++i);里面的 i 自增 //i=5第五步:k=i+i+i //k=5所以输出:9 9 25一个分号代表一个语句(i++)意味着先取i的值进行运算,该语句结束时i自增1;(++i)意味着先令i自增1,再进行该语句的运算;
各位大神速度帮我解答下好么,谢谢了,在线等,C++
定义一个分数类rational,其中有两个私有的整型成员变量,分子numerator和分母denominator,分母不为0。重载运算符+和+=实现分数加法运算,要求运算结果为最简分数。(class rational
private:
int numerator; //分子
int denominator; //分母
public:
rational(int a=0,int b=1);
void optimization();//实现分数的有理化,即分子分母的最简化
void print(); //分数的输出
rational & operator+=( const rational & num);//成员函数重载运算符+=
friend rational operator+(const rational & num1,const rational & num2);
//友元函数重载运算符+
;
#include<cmath>
using namespace std;
class point
friend istream&operator>>(istream&is,point&p);
friend ostream&operator<<(ostream&os,point&p);
public:
point(double x0=0,double y0=0)x=x0;y=y0;
point(point &);
point operator+(const point & pt);
double operator^(const point & pt);
private:
double x,y;
;
point::point(point &p)
x=p.x;
y=p.y;
;
istream&operator>>(istream&is,point&p)
return is>>p.x>>p.y;
;
ostream&operator<<(ostream&os,point&p)
return os<<"("<<p.x<<","<<p.y<<")";
;
point point::operator +(const point &pt)
return point(x+pt.x,y+pt.y);
;
double point::operator ^(const point &pt)
return sqrt((x-pt.x)*(x-pt.x)+(y-pt.y)*(y-pt.y));
int main()
point p1,p2,p3;
double c;
cin>>p1;
cin>>p2;
p3=p1+p2;
c=p1^p2;
cout<<p3<<endl;
cout<<c;
return 0;
参考技术A
我百度里面搜来的。。我的空间就是这首歌,应该还能用的。
以上是关于c语言程序解答(在线等)?的主要内容,如果未能解决你的问题,请参考以下文章