C程序开发经典实例之7

  • 来源: C++研究网 作者: sevenleaf   2010-04-28/11:05
  • 【程序71】

          题目:编写input()和output()函数输入,输出5个学生的数据记录。

          1.程序分析:

          2.程序源代码:

    #defineN5

    structstudent

    {

    charnum[6];

    charname[8];

    intscore[4];

    }stu[N];

    input(stu)

    structstudentstu[];

    {

    inti,j;

    for(i=0;i<N;i++)

    {

    printf("\npleaseinput%dof%d\n",i+1,N);

    printf("num:");

    scanf("%s",stu[i].num);

    printf("name:");

    scanf("%s",stu[i].name);

    for(j=0;j<3;j++)

    {

    printf("score%d.",j+1);

    scanf("%d",&stu[i].score[j]);

    }

    printf("\n");

    }

    }

    print(stu)

    structstudentstu[];

    {

    inti,j;

    printf("\nNo.NameSco1Sco2Sco3\n");

    for(i=0;i<N;i++)

    {

    printf("%-6s%-10s",stu[i].num,stu[i].name);

    for(j=0;j<3;j++)

    printf("%-8d",stu[i].score[j]);

    printf("\n");

    }

    }

    main()

    {

    input();

    print();

    }

    【程序72】

          题目:创建一个链表。

          1.程序分析:

          2.程序源代码:

    /*creatalist*/

    #include"stdlib.h"

    #include"stdio.h"

    structlist

    {

    intdata;

    structlist*next;

    };

    /*欢迎访问C++Builder研究-www.ccrun.com*/

    typedefstructlistnode;

    typedefnode*link;

    voidmain()

    {

    linkptr,head;

    intnum,i;

    ptr=(link)malloc(sizeof(node));

    ptr=head;

    printf("pleaseinput5numbers==>\n");

    for(i=0;i<=4;i++)

    {

    scanf("%d",&num);

    ptr->data=num;

    ptr->next=(link)malloc(sizeof(node));

    if(i==4)ptr->next=NULL;

    elseptr=ptr->next;

    }

    ptr=head;

    while(ptr!=NULL)

    {

    printf("Thevalueis==>%d\n",ptr->data);

    tr=ptr->next;

    }

    }

    【程序73】

          题目:反向输出一个链表。

          1.程序分析:

          2.程序源代码:

    /*reverseoutputalist*/

    #include"stdlib.h"

    #include"stdio.h"

    structlist

    {

    intdata;

    structlist*next;

    };

    typedefstructlistnode;

    typedefnode*link;

    voidmain()

    {

    linkptr,head,tail;

    intnum,i;

    tail=(link)malloc(sizeof(node));

    tail->next=NULL;

    ptr=tail;

    printf("\npleaseinput5data==>\n");

    for(i=0;i<=4;i++)

    {

    scanf("%d",&num);

    ptr->data=num;

    head=(link)malloc(sizeof(node));

    head->next=ptr;

    ptr=head;

    }

    ptr=ptr->next;

    while(ptr!=NULL)

    {

    printf("Thevalueis==>%d\n",ptr->data);

    ptr=ptr->next;

    }

    }

    【程序74】

          题目:连接两个链表。

          1.程序分析:

          2.程序源代码:

    #include"stdlib.h"

    #include"stdio.h"

    structlist

    {

    intdata;

    structlist*next;

    };

    typedefstructlistnode;

    typedefnode*link;

    linkdelete_node(linkpointer,linktmp)

    {

    if(tmp==NULL)/*deletefirstnode*/

    returnpointer->next;

    else

    {

    if(tmp->next->next==NULL)/*deletelastnode*/

    tmp->next=NULL;

    else/*deletetheothernode*/

    tmp->next=tmp->next->next;

    returnpointer;

    }

    }

    voidselection_sort(linkpointer,intnum)

    {

    linktmp,btmp;

    inti,min;

    for(i=0;i<num;i++)

    {

    tmp=pointer;

    min=tmp->data;

    btmp=NULL;

    while(tmp->next)

    {

    if(min>tmp->next->data)

    {

    min=tmp->next->data;

    btmp=tmp;

    }

    tmp=tmp->next;

    }

    printf("\40:%d\n",min);

    pointer=delete_node(pointer,btmp);

    }

    }

    linkcreate_list(intarray[],intnum)

    {

    linktmp1,tmp2,pointer;

    inti;

    pointer=(link)malloc(sizeof(node));

    pointer->data=array[0];

    tmp1=pointer;

    for(i=1;i<num;i++)

    {

    tmp2=(link)malloc(sizeof(node));

    tmp2->next=NULL;

    tmp2->data=array[i];

    tmp1->next=tmp2;

    tmp1=tmp1->next;

    }

    returnpointer;

    }

    linkconcatenate(linkpointer1,linkpointer2)

    {

    linktmp;

    tmp=pointer1;

    while(tmp->next)

    tmp=tmp->next;

    tmp->next=pointer2;

    returnpointer1;

    }

    voidmain(void)

    {

    intarr1[]={3,12,8,9,11};

    linkptr;

    ptr=create_list(arr1,5);

    selection_sort(ptr,5);

    }

    【程序75】

          题目:放松一下,算一道简单的题目。

          1.程序分析:

          2.程序源代码:

    /*636372756E2E636F6D*/

    main()

    {

    inti,n;

    for(i=1;i<5;i++)

    {

    n=0;

    if(i!=1)

    n=n+1;

    if(i==3)

    n=n+1;

    if(i==4)

    n=n+1;

    if(i!=4)

    n=n+1;

    if(n==3)

    printf("zhuhaoshideshi:%c",64+i);

    }

    }

    【程序76】

          题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)

          1.程序分析:

          2.程序源代码:

    main()

    #include"stdio.h"

    main()

    {

    floatpeven(),podd(),dcall();

    floatsum;

    intn;

    while(1)

    {

    scanf("%d",&n);

    if(n>1)

    break;

    }

    if(n%2==0)

    {

    printf("Even=");

    sum=dcall(peven,n);

    }

    else

    {

    printf("Odd=");

    sum=dcall(podd,n);

    }

    printf("%f",sum);

    }

    floatpeven(intn)

    {

    floats;

    inti;

    s=1;

    for(i=2;i<=n;i+=2)

    s+=1/(float)i;

    return(s);

    }

    floatpodd(n)

    intn;

    {

    floats;

    inti;

    s=0;

    for(i=1;i<=n;i+=2)

    s+=1/(float)i;

    return(s);

    }

    floatdcall(fp,n)

    float(*fp)();

    intn;

    {

    floats;

    s=(*fp)(n);

    return(s);

    }

    【程序77】

          题目:填空练习(指向指针的指针)

          1.程序分析:

          2.程序源代码:

    main()

    {

    char*s[]={"man","woman","girl","boy","sister"};

    char**q;

    intk;

    for(k=0;k<5;k++)

    {

    ;/*这里填写什么语句*/

    printf("%s\n",*q);

    }

    }

    【程序78】

          题目:找到年龄最大的人,并输出。请找出程序中有什么问题。

          1.程序分析:

          2.程序源代码:

    #defineN4

    #include"stdio.h"

    staticstructman

    {

    charname[20];

    intage;

    }person[N]={"li",18,"wang",19,"zhang",20,"sun",22};

    /*欢迎访问C++Builder研究-www.ccrun.com*/

    main()

    {

    structman*q,*p;

    inti,m=0;

    p=person;

    for(i=0;i<N;i++)

    {

    if(mage)

    q=p++;

    m=q->age;

    }

    printf("%s,%d",(*q).name,(*q).age);

    }

    【程序79】

          题目:字符串排序。

          1.程序分析:

          2.程序源代码:

    main()

    {

    char*str1[20],*str2[20],*str3[20];

    charswap();

    printf("pleaseinputthreestrings\n");

    scanf("%s",str1);

    scanf("%s",str2);

    scanf("%s",str3);

    if(strcmp(str1,str2)>0)swap(str1,str2);

    if(strcmp(str1,str3)>0)swap(str1,str3);

    if(strcmp(str2,str3)>0)swap(str2,str3);

    printf("afterbeingsorted\n");

    printf("%s\n%s\n%s\n",str1,str2,str3);

    }

    charswap(p1,p2)

    char*p1,*p2;

    {

    char*p[20];

    strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

    }

    【程序80】

          题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

          1.程序分析:

          2.程序源代码:

    main()

    {

    inti,m,j,k,count;

    for(i=4;i<10000;i+=4)

    {

    count=0;

    m=i;

    for(k=0;k<5;k++)

    {

    j=i/4*5+1;

    i=j;

    if(j%4==0)

    count++;

    else

    break;

    }

    i=m;

    if(count==4)

    {

    printf("%d\n",count);

    break;

    }

    }

    }


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多