搜档网
当前位置:搜档网 › 经典C语言程序100例(七)

经典C语言程序100例(七)

经典C语言程序100例(七)
经典C语言程序100例(七)

经典C语言程序100例(七)

前面给大家介绍了视频教程'>c语言入门必做的习题,相信对大家C语言的学习起到了一定的帮助,这次再给大家介绍几道C语言程序例题,希望对大家有所帮助,让大家能更简单的学习C语言

【程序1】

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

1.程序分析:

2.程序源代码:

#define N 5

struct student

{ char num[6];

char name[8];

int score[4];

} stu[N];

input(stu)

struct student stu[];

{ int i,j;

for(i=0;i

{ printf("\n please input %d of %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)

struct student stu[];

{ int i,j;

printf("\nNo. Name Sco1 Sco2 Sco3\n");

for(i=0;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();

}

【程序2】

题目:创建一个链表。

1.程序分析:

2.程序源代码:

/*creat a list*/

#include "stdlib.h"

#include "stdio.h"

struct list

{ int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

void main()

{ link ptr,head;

int num,i;

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

ptr=head;

printf("please input 5 numbers==>\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;

else ptr=ptr->next;

}

ptr=head;

while(ptr!=NULL)

{ printf("The value is ==>%d\n",ptr->data); ptr=ptr->next;

}

}

【程序3】

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

1.程序分析:

2.程序源代码:

/*reverse output a list*/

#include "stdlib.h"

#include "stdio.h"

struct list

{ int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

void main()

{ link ptr,head,tail;

int num,i;

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

tail->next=NULL;

ptr=tail;

printf("\nplease input 5 data==>\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("The value is ==>%d\n",ptr->data); ptr=ptr->next;

}}

【程序4】

题目:连接两个链表。

1.程序分析:

2.程序源代码:

#include "stdlib.h"

#include "stdio.h"

struct list

{ int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

link delete_node(link pointer,link tmp)

{if (tmp==NULL) /*delete first node*/ return pointer->next;

else

{ if(tmp->next->next==NULL)/*delete last node*/ tmp->next=NULL;

else /*delete the other node*/

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

return pointer;

}

}

void selection_sort(link pointer,int num)

{ link tmp,btmp;

int i,min;

for(i=0;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);

}

}

link create_list(int array[],int num)

{ link tmp1,tmp2,pointer;

int i;

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

pointer->data=array[0];

tmp1=pointer;

for(i=1;i

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

tmp2->next=NULL;

tmp2->data=array[i];

tmp1->next=tmp2;

tmp1=tmp1->next;

}

return pointer;

}

link concatenate(link pointer1,link pointer2)

{ link tmp;

tmp=pointer1;

while(tmp->next)

tmp=tmp->next;

tmp->next=pointer2;

return pointer1;

}

void main(void)

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

link ptr;

ptr=create_list(arr1,5);

selection_sort(ptr,5);

}

【程序5】

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

1.程序分析:

2.程序源代码:

main()

{

int i,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("zhu hao shi de shi:%c",64+i);

}

}

【程序6】

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

1/1+1/3+...+1/n(利用指针函数)

1.程序分析:

2.程序源代码:

main()

#include "stdio.h"

main()

float peven(),podd(),dcall(); float sum;

int n;

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);

}

float peven(int n)

{

float s;

int i;

s=1;

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

s+=1/(float)i;

return(s);

}

float podd(n)

int n;

{

float s;

int i;

s=0;

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

s+=1/(float)i;

return(s);

}

float dcall(fp,n)

float (*fp)();

int n;

float s;

s=(*fp)(n);

return(s);

}

【程序7】

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

1.程序分析:

2.程序源代码:

main()

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

char **q;

int k;

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

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

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

}

}

【程序8】

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

1.程序分析:

2.程序源代码:

#define N 4

#include "stdio.h"

static struct man

{ char name[20];

int age;

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

main()

{struct man *q,*p;

int i,m=0;

p=person;

for (i=0;i

{if(mage)

q=p++;

m=q->age;}

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

}

【程序9】

题目:字符串排序。

1.程序分析:

2.程序源代码:

main()

{

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

char swap();

printf("please input three strings\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("after being sorted\n");

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

}

char swap(p1,p2)

char *p1,*p2;

{

char *p[20];

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

}

【程序10】

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只

猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了

一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,

问海滩上原来最少有多少个桃子?

1.程序分析:

2.程序源代码:

main()

{int i,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;}

}

}

相关主题