当前位置:首页 » 编程语言 » 每日一个小算法c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

每日一个小算法c语言

发布时间: 2023-01-03 18:14:22

㈠ 帮忙写一个算法,用c语言

数值下标是从0开始的,array[0...5,0...7]
(1)数组A的体积=6(行)×8(列)×6(字节)=288(字节)
(2)数组A的最后一个元素a57的第一个字节的地址:
LOC(5,7)=LOC(0,0)+ ( 5×8+7 )×6 = 1000 (基地址)+ 282 = 1282
(3)按行存储时,元素a14的第一个字节的地址:
LOC( 1,4 ) = LOC( 0,0 ) + ( 1×8+4 )×6 = 1000 + 72 = 1072
(4)按列存储时,元素嗄7的第一个字节的地址:
LOC( 4,7 ) = LOC( 0,0 ) + ( 7×6+4 )×6 = 1000 + 276 = 1276

㈡ 用c语言写一个算法(折半或二分法),实现可以选择1到20的从小到大以

解:用有序列插入法排序,过程如下:

第一步:7 1 (前两个数7,1排成有序列)

第二步:7 3 1 (第3个数3按要求插入到已排好的有序列中)

第三步:12 7 3 1 (第4个数12按要求插入到已排好的有序列中)

第四步:12 8 7 3 1 (第5个数8按要求插入到已排好的有序列中)

第五步:12 8 7 4 3 1 (第6个数4按要求插入到已排好的有序列中)

第六步:12 9 8 7 4 3 1 (第7个数9按要求插入到已排好的有序列中)

第八步:12 10 9 8 7 4 3 1 (第8个数10按要求插入到已排好的有序列中)

这时各数的顺序就是符合要求的最终顺序.

用折半插入排序法,将新数据6插入到上面的有序列中,算法步骤设计如下:

第一步:把新数据6与逗中间位置地的数据8比较,由于6<8,所以应将6放到8的右边的一半有序列中,即应放到有序列7,4,3,1中.

第二步:把6与有序列7,4,3,1逗中间位置地的数据4比较,由于4<6,所以应将6放到4的左边的一半有序列中,即应放到有序列7,4中.

第三步:把6与有序列7,4逗中间位置地的数据7比较,由于7>6,所以应将6放到7的右边的一半有序列中,至此排序完成,得到一新的有序列

12,10,9,8,7,6,4,3,1

㈢ 一个简单的小程序 C语言 BF算法

引用没问题,就是BF函数错了。

#include<stdio.h>
#include<string.h>
#include<iostream>//.h去掉
usingnamespacestd;//命名空间

intBF(charS[],charT[])
{
inti,j,start;
i=0;
j=0;
start=0;
while(S[i]!=''&&T[j]!='')//T[i]改为T[j]
{
if(S[i]==T[j])
{
i++;j++;
}
else{
start++;
i=start;
j=0;
}
}
if(T[j]=='')
returnstart+1;//start+1,因为数组从0开始计数
else
return0;
}

intmain()
{
charS[1000],T[1000];
intstart;
printf("输入主串: ");
scanf("%s",S);
printf("%s ",S);
printf("输入子串: ");
scanf("%s",T);
printf("%s ",T);
start=BF(S,T);
cout<<"主串与子串在主串的第"<<start<<"个字符匹配"<<endl;

}

㈣ 在线求一个c语言算法

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define null 0

typedef struct element {//栈的节点

char data;//数据区域

element* next;//后继结点指针

element* prev;//前驱结点指针

};

typedef struct Stack{//栈

element* head;//头结点

element* tail;//尾节点

int length;//栈的长度

};

element* getElement() {//获取一个栈的节点

element* e = (element*)malloc(sizeof(element));//这里最好用element* e = new element;如果你的编译器支持C++的话建议换成注释里的写法

e->next = null;

e->prev = null;

e->data = null;

return e;

}

Stack* getStack() {//获取一个栈的结构体

Stack* stack = (Stack*)malloc(sizeof(Stack));//这里最好用Stack* stack = new Stack

element* e = getElement();

stack->head = e;

stack->tail = e;

stack->length = 0;

return stack;

}

void push(Stack* stack, char data) {//插入数据

element* e = getElement();

stack->tail->next = e;

e->next = null;

e->data = data;

e->prev = stack->tail;

stack->tail = e;

stack->length++;

}

char pop(Stack* stack) {//取出数据

if (stack->length <= 0) {

printf("没有数据可取,栈空了");

return null;

}

element* e = stack->tail;

char result = e->data;

stack->tail = stack->tail->prev;

stack->tail->next = null;

free(e);

stack->length--;

return result;

}

int main() {

char buffer[256];

Stack* stack = getStack();

printf("请输入字符序列:");

scanf("%s",buffer);

for (int i = 0; i < strlen(buffer); i++) {

push(stack, buffer[i]);//将字符一次推进栈中

}

for (int i = 0; i < strlen(buffer); i++) {

printf("%c",pop(stack));//将字符依次从栈中取出

}

return 0;

}

运行结果截图

㈤ c语言一个小算法,求大神指点

你这明显没完啊,还有1.5+1.5+1+1+1=6,还可以吧上面的一个或者三个1换成0.5+0.5;还可以把1.5换成1+0.5;2.5换成1.5+1,或者1+1+0.5,或者0.5+0.5+0.5+0.5+0.5……
总之这个问题一点意思都没有,这题要想列举出所有的类型,暴力破解的话需要7的12次方次尝试,真实太蛋疼了
看在分的份上 给你写一下吧,这个问题真是太没意思了

㈥ 求一个C语言的算法,最近脑袋不够用了。

比如,仿第3/4周期的正弦曲线来取current_value值:Y=Asin(ωX+φ),其中Y为current_value的取值,X是第X次取值;A、ω、φ都均可通过自己喜好的曲线峰值、斜率、相位等信息确定。该曲线的起点是0xFFFF FFFF,终点是target_value 。

当然,你也可以不用正弦曲线,也可以换成其他的,如:反抛物线的前半段之类的。

㈦ C语言写个算法

#include <stdio.h>
#include<stdlib.h>
#include<time.h>

int InArray(int a[],int N,int data)/*判断data是否在数组a[N]中.是则返回1,否则返回0*/
{
int i;
for(i=0;i<N;i++)
if(data==a[i])
return 1;
return 0;
}

int main(void)
{
int i,j=1,temp,a[8]={0};
srand( (unsigned)time( NULL ) ); /*保证每次生成的随机数不相同*/

a[0]=rand()%8+1; /*数组第一项*/
for(i=1;i<8;i++)
{
temp=rand()%8+1;
if(InArray(a,8,temp))//当产生的随机数已存在
{i--;continue;}
else
a[j++]=temp;
}

for(i=0;i<8;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}