搜索
cad2007下载
软件下载
solidworks下载
proe下载
机械标准
机械招聘
机械图纸
机械百科
机械交易网
网站建设
机械设计手册
proe视频教程
cad2013视频教程
solidworks2008视频教程
CAD2004视频教程

[机械杂谈] C说话经典算法67-76

[复制链接]
查看: 293|回复: 1

该用户从未签到

发表于 2017-10-25 01:01:13 | 显示全部楼层 |阅读模式
【法式67
标题:输进数组,最年夜的与第一个元故旧换,最小的与最后一个元故旧换,输出数组。
1.法式剖析:谭浩强的书中谜底有题目。
2.法式源代码:
main()
{
int number[10];
input(number);
max_min(number);
output(number);
}
input(number)
int number[10];
{int i;
for(i=0;i<9;i++)
scanf("%d,",&number<i>);
scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p if(*p>*max) max=p;
else if(*p<*min) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
return;
}
output(array)
int array[10];
{ int *p;
for(p=array;p printf("%d,",*p);
printf("%d\n",array[9]);
}
==============================================================
【法式68
标题:有n个整数,使其前面各数次序向后移m个地位,最后m个数酿成最前面的m个数
1.法式剖析:
2.法式源代码:
main()
{
int number[20],n,m,i;
printf("the total numbers is:");
scanf("%d",&n);
printf("back m:");
scanf("%d",&m);
for(i=0;i scanf("%d,",&number<i>);
scanf("%d",&number[n-1]);
move(number,n,m);
for(i=0;i printf("%d,",number<i>);
printf("%d",number[n-1]);
}
move(array,n,m)
int n,m,array[20];
{
int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0) move(array,n,m);
}
==============================================================
【法式69
标题:有n小我围成一圈,次序排号。从第一小我开端报数(从13报数),凡报到3的人退出
圈子,问最后留下的是本来第几号的那位。信盈达嵌进式企鹅要妖气鼓鼓呜呜吧久零就要
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 *(p+i)=i+1;
i=0;
k=0;
m=0;
while(m {
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 { 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();
}
==============================================================
【法式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 {
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);
}
==============================================================
【法式75
标题:放松一下,算一道简略的标题。
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);
}
}
==============================================================
【法式76
标题:编写一个函数,输进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);
}
==============================================================
回复

使用道具 举报

该用户从未签到

发表于 2017-10-25 01:37:37 | 显示全部楼层
赞!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Copyright © 2012-2035 厦门鑫时器科技有限公司 版权所有
闽ICP备2023009579号-1 技术支持:机械网站建设  Powered by Discuz! X3.4
快速回复 返回顶部 返回列表