手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

C语言经典100例(二)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

   圈子,问最后留下的是原来第几号的那位。
1. 程式分析:
2.程式源代码:
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i )
 *(p i)=i 1;
 i=0;
 k=0;
 m=0;
 while(m<n-1)
 {
 if(*(p i)!=0) k ;
 if(k==3)
 { *(p i)=0;
 k=0;
 m ;
 }
i ;
if(i==n) i=0;
}
while(*p==0) p ;
printf("%d is left\n",*p);
}
==============================================================
【程式70】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。   
1.程式分析:
2.程式源代码:
main()
{
int len;
char *str[20];
printf("please input a string:\n");
scanf("%s",str);
len=length(str);
printf("the string has %d characters.",len);
}
length(p)
char *p;
{
int n;
n=0;
while(*p!=''\0'')
{
 n ;
 p ;
}
return n;
}

【程式71】
题目:编写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<N;i )
 { printf("\n please input %d of %d\n",i 1,N);
  printf("num: ");
  scanf("%s",stu.num);
  printf("name: ");
  scanf("%s",stu.name);
   for(j=0;j<3;j )
   { printf("score %d.",j 1);
    scanf("%d",&stu.score[j]);
   }
  printf("\n");
 }
}
print(stu)
struct student stu[];
{ int i,j;
printf("\nNo. Name Sco1 Sco2 Sco3\n");
for(i=0;i<N;i )
{ printf("%-6s%-10s",stu.num,stu.name);
 for(j=0;j<3;j )
  printf("%-8d",stu.score[j]);
 printf("\n");
}
}
main()
{
 input();
 print();
}
==============================================================
【程式72】
题目:创建一个链表。
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;
}
}
==============================================================
【程式73】
题目:反向输出一个链表。   
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;
}}
==============================================================
【程式74】
题目:连接两个链表。
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<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);
}
}
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<num;i )
{ tmp2=(link)malloc(sizeof(node));
 tmp2->next=NULL;
 tmp2->data=array;
 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);

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!