C程序开发经典实例之7

资讯 驱动中国 sevenleaf 1,155 次阅读 0 条评论
分享 Q

【程序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;

}

}

}

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友