算法C代码
同学你好,通过找规律可以得到,当n为偶数时,结果为0,n为奇数时,结果为-1;
所以直接用if条件语句判断一下就好啦!
望采纳,谢谢!
B. 写个算法(c语言)
/* 单链表就地逆置算法 */
void converse(NODEPTR L)
{
NODEPTR p,q;
p=L->next; q=p->next;
L->next=NULL;
while(p) /* 对于当前结点p,用头插法将结点p插入到头结点之后 */
{
p->next=L->next;
L->next=p;
p=q;
q=q->next;
}
}
买一送一吧:
-------------------------------
-------------------------------
/* 单链表就地逆置的C语言程序 */
#define NULL 0
/*定义单链表的数据类型 */
typedef struct node{
int data;
struct node * next;
}NODE,*NODEPTR;
/*创建单链表 */
NODEPTR createlink()
{
NODEPTR L,p,q;
int i,n,e;
L=(NODEPTR)malloc(sizeof(NODE));
L->next=NULL;
q=L;
printf("please input the length of the link list\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(NODEPTR)malloc(sizeof(NODE));
printf("please enter the value of the list element\n");
scanf("%d",&e);
p->data=e;
q->next=p;
q=p;
}
q->next=NULL;
return L;
}
/* 逐个输出单链表数据元素的值 */
void travlist(NODEPTR L)
{ NODEPTR p;
p=L->next;
printf("the value of the linklist:\n");
while(p)
{
printf("%d%s",p->data,"-->");
p=p->next;
}
printf("\n");
}
/* 单链表就地逆置 */
void converse(NODEPTR L)
{
NODEPTR p,q;
p=L->next; q=p->next;
L->next=NULL;
while(p) /* 对于当前结点p,用头插法将结点p插入到头结点之后 */
{
p->next=L->next;
L->next=p;
p=q;
q=q->next;
}
}
main()
{
NODEPTR L;
L=createlink();
travlist(L);
converse(L);
travlist(L);
}
C. 求c语言 算法 求大神的代码
说白了这道题是数学题,首先要知道位数越多,值越大,那么也就是说在两个加号之间的位数越小,值就越小。
假设串的长度为size
那么1:如果M+1被串的长度整除,这个最简单,直接把这个串平分分成M+1分,在中间加入+号,也就是在size/(M+1)+(size/(M+1)+1)*i, i=0,1,2...处插入加号
但是不是所有的M+1都能被size整除,在不能被整除的情况下,先算出size/(M+1)的值,假设等于m1,再算出size%M的值,假设等于m2.这时候这个算式得到一个值,这种情况初始就是把加号加在m1+(m1+1)*i处,
for(j=0,j<m2,++j)
{
找出最小的一个数,将该数右边的加号依次右移一位}
大致逻辑应该是这样的吧
D. 求几个算法的c程序代码~~~~~~!
主要是太难了,年纪大了,懒得想复杂的事了.
最速下降法,
http://www..com/s?wd=%D7%EE%CB%D9%CF%C2%BD%B5%B7%A8&cl=3
网上有很多这样的资料,如果你想看书,可以查看算法方面的书,一般的算法书还没有呢.你是大学生吗?可以上图书馆查查。
E. c语言算法
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int fac(int n)
{
int ret=1;
while(n)
{
ret*=n%10;
n/=10;
}
return ret;
}
int sum(int n)
{
int ret=0;
while(n)
{
ret+=n%10;
n/=10;
}
return ret;
}
void main()
{
int i;
int cnt=0;
for(i=0;i<=50;i++)
{
if(fac(i)<sum(i))
{
printf("%d ",i);
cnt++;
}
}
puts("");
printf("总共有%d个\n",cnt);
}
F. C语言 算法
#include<stdio.h>
void main()
{
void f(int a);
f(15);
}
void f(int a)
{
int i = 0,b,u,s=1;
if(a==1)
printf("0\n");
else if(a==0)
printf("0");
else
{
b=a;
while(a>1)
{
a = a/2;
i++;
}
printf("%d\n",i);
for(u=0;u<i;u++)
s*=2;
f(b-s);
}
}
你的程序经过修改的,由于第一次递归是 f(a-s);中a已经变成了1,所以总是输出1
G. C语言算法
呵呵,先说说我吧,我买的书给你一个版本的!而且买书时间差不多不超过一个月,现在是高二学生(马上要高三了),学起C语言并没感觉到吃力!而我的一个同学就不同了,我们一起看的我都成了他老师了!当我看他看的时候才发现原因,他的速度是我看的3倍。这可能就是问题的所在了!建议楼主从书的目录开始看,一字一句一个都不少,你会发现结果截然不同!就你所说的所运用的数学知识大多都是逻辑,如果有条件的话希望楼主恶补一下高中数学!但还是那句话,逻辑是程序的灵魂,成绩并不能说明着什么!
如果可以的话希望楼主能买“数据结构”之类的书,对提高逻辑以及C语言有很大的帮助!
这本书的编辑是“谭浩强”教授,是中国响当当的人物,开始我也认为排序不好,但最后发现前面的每一个字都具有非凡的意义!~
你说的那个程序数太大了,我给改为1*2*3*....*10结果:如图
楼主还是要认真的读读那本书,我也不知道更好的办法了!
H. c语言的算法符号
如果参与运算的两个量都是整型值(即int\long int等类型),那么/运算的结果只保留整数部分,比如:
5/2的值不是2.5,而是2
当参与运算的量中有一个不是整型值时,/运行的结果就是准确的,比如:
5.0/2的值就是2.5
%是求余数的操作符,只用于整型值,比如:
5%2的值就是1