C语言:任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组?
【例】把一个整数按大小顺序插入已排好序的数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。
main()
{
inti,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]){p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf(“%d”,a[i]);
}
printf(“ninputnumber:n”);
scanf(“%d”,&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s–)a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf(“%d”,a[i]);
printf(“n”);
}
本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。后移结束跳出外循环。插入点为i,把n赋予a[i]即可。如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。
程序运行时,输入数47。从结果中可以看出47已插入到54和28之间。
算法控制结构有哪些?
算法的控制结构主要有三种:顺序结构、选择结构和循环结构。
顺序结构:按照代码的顺序,从上到下依次执行。
选择结构:根据条件判断,选择执行不同的代码块。
循环结构:重复执行某段代码,直到满足某个条件为止。
顺序存储结构和链式存储结构都是c语言的知识嘛?
- 有一个作业是要用这两个结构做实现火车进出隧道的过程希望懂计算机的高手们,推荐一下学习这两个结构的教材,如果能给一下做这个课题的思路就更感谢了问题补充: 作业内容是需要大量的计算机语言那种
- 你说的顺序存储和链式存储都是数据结构的知识。其实这是一种思想,不仅可以用C语言实现,也可以用Java等其他语言实现的。如果你要推荐教材,首推清华严蔚敏的《数据结构(C语言版)》,这是国人学习数据结构的入门课程,最适合中国人,0基础也可以学的。如果你想学高深点的。那就看老美的《算法导论》。这个有些难度。建议先看老严的书。
呵呵,问一个C语言顺序、选择、循环结构的问题。
- 我对概念问题感到好掌握,逻辑问题好模糊。书上看了一遍,老师讲了一遍;我感到好模糊希望你可以讲得有自己总结深入浅出的讲讲;加分的感激你。问题一、图一中的解析不懂,请每行讲解一下?问题二、图二红圈圈1、2解析不懂,请每行讲解一下?红圈圈3中画有k=5再有k=6不懂?问题三、图三中有事小括号,又有大括号不懂,得的值也不懂?
- 问题一,其实就是一个格式的问题,如果写成这样应该更便于理解if(ab) 成立{ if(cb) 不成立 ,所以根本没执行内部的代码。所以x的值未被改变 { if(cx) { x=2; } else { x=3; } }}
数据结构,c语言,顺序表,可能是有点简单,求大神
- 再此程序的基础上,为该链表加入插入,删除的代码,高分求,完成后再加分。#include stdio.h#include stdlib.htypedef char datatype;typedef struct linknode *结点类型定义*{ datatype data; *数据域* struct linknode *next; *next为指针域 * }node,*linklist; linklist 为此种结构指针类型node *CREATLISTR1( )*带头结点的尾插法建立单链表*{char ch; int n=0;node *head,*s,*r;head=(node*)malloc(sizeof(node)); *生成头结点*r=head; *尾指针初值指向头结点*printf("start to create linklist,end by x:n");ch=getchar();while(ch!=x) *x为输入结束符*{ s=(node *)malloc(sizeof(node)); *生成新结点* n++; s-data=ch; r-next=s;*新结点插入表尾r=s;尾指针r指向新的表尾* r=s; ch=getchar();*读下一结点*} r-next=NULL; return head;} *CREATLISTR1*void show_ll(linklist L){node *p;p=L-next; while(p!=NULL){ printf("%c ",p-data); p=p-next;}}void main(){ node *ll; clrscr(); ll=CREATLISTR1(); 创建单链表 show_ll(ll); 显示单链表}
- void ll_insert_node(node * insert_place, node * node_to_insert) { if (insert_place && node_to_insert) { node * p = insert_place-next; insert_place-next = node_to_insert; node_to_insert-next = p; } } void release_node(node * p) { * release datatype if neccessory * free(p); } void ll_delete_node(linklist L, node * node_to_delete) { node * p = L; while (p-next) { if (p-next == node_to_delete) { node * tmp = p-next; p-next = p-next-next; release_node(tmp); } p = p-next; } }