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<iostream>
#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语言程序解答(在线等)?的主要内容,如果未能解决你的问题,请参考以下文章

c语言啊,求大神您解答

c语言问题

C语言程序求纠错!!~在线等!……

C语言链表问题。。【在线等】【急】

C语言程序闪退!求解!在线等!

关于c语言中remove的问题,在线等,急急急