① c语言 算法是什么意思
算法就是解决方法,相当于数学,物理题里的解题方法。
一般解数学题不是都有一套解题思路吗,算法就类似这个,算法就是用C语言编程解决实际问题的思路方法。
举个例子,比如求1+2+3+4+5+6+7+8+9之和
算法就是这个
for(i=0,i<10,i++)
i=i+1
用C语言的格式解决实际问题所需要用到的公式套路就是算法
② 请计算机高手回答,为什么《数据结构》和中的C算法原码,不能在C语言中运行呢,应该怎么做才可以呢谢谢
这类教材它们的目的是讲解算法思想,所以代码都是伪代码,也就是说是简写的代码,许多地方都是为了书写方便简写了,比如数组整体拷贝,它可能就用a[1..n]->b[1..n]代替了,但你要写的话,还是必须写上
for(int i=1;i<=n;i++) b[i]=a[i];
③ c语言 排列组合 程序算法
void Show(int n,int len ,char str[], char p[],int *i){/*函数功能说明: 密码穷举法 递归算法参数说明:len 密码可选元素的个数,实际等于 strlen(str); n 密码位数。 STR[]密码表。 *p 密码排列组合的临时存档*/int a;n--;for(a=0; a < len; a++){p[n]=str[a]; if(n==0)printf("%d:%s ",(*i)++,p); if(n0)Show(n,len , str,p,i);}} /*驱动程序 用于测试*/ int main(void){char str[]="abcdef";//密码表 可选元素集合可根据选择修改 int n=4;//密码位数,根据具体应用而定。 int len=strlen(str);//用于密码元素集合计数。 char p[20];//存放排列组合的密码,用于输出。 int num=0;//存放统计个数的整数值, int *i=#//计数器 地址。 p[n]='\0';//这个不用说啦。 printf("\n%d 位密码,每个密码有%d个选择的话,共有:%d个组合。\n",n,len,*i);return 0;}
④ C语言编程程序的算法描述
最后的矩阵会成为这样 输出的是圆圈所在的位置数之和。
及 a[0][1]+a[0][2]+a[1][0]+a[1][3]+a[2][0]+a[2][3]+a[3][1]+a[3][3];
希望可以帮到你
⑤ 求C语言大神讲解一下这个程序算法的意思,就是为什么要这样算我能看懂每句的意思,不懂这个算法的道
首先在你提供的函数中求两个数a和b的最大公约数用的是辗转相除法,这个算法可以从数学分析入手去理解它:
1、如果a除以b的余数为r,商为q,则可以表示成 a = q*b + r,下面证明:(a,b) = (b,r)
如果d为a和b的最大公约数,则由a = q*b + r 知,d能整除等式的左侧,那么也必然能整除等式的右侧,既然d能整除q*b + r且是 b的约数,所以q也能整除r,即d是b和r的约数。同理可以证明出b和r的最大公约数也是b和a的约数。所以:(a,b) = (b,r)
2、举例说明具体利用该算法求解过程:由1知下面的例子成立 (36,24) = (24,12) = (12, 0) = 12
所以当反复的求a除以b的余数,直到余数为0时,它的前一个数就是最大公约数。
你提供的函数就是利用了这个方法来求最大公约数的,如果对于上面的分析还不清楚的话,请追问。
⑥ 写出下面C语言程序的算法描述
#include<stdio.h>
int main()
{
/*S1 定义、初始化变量*/
int i ;/*循环计数变量*/
double sum ;/*计和*/
double average ;/*计平均值*/
/*S2 计算并显示平均值*/
for(i=1; i<=10; i++)
{/*循环计数变量i=1
S2.2 i<=10转向S2.3否则转向S2.7*/
/*S2.3 计算名学生成绩和*/
int j;
sum = 0;
for(j=1; j<=3; j++)
{/*S2.3.1 局部变量初始化计数变量j=1*/
/*S2.3.2 j<=3转向S2.3.3否则转向S2.3.6*/
printf("输入功课编号 %d 的成绩\n", j);
/*S2.3.3 提示输入功课编号*/
double inputResult;
/*S2.3.4 输入功课成绩inputResult*/
scanf("%lf", &inputResult);
sum = sum + inputResult;
/* S2.3.5 求和:s=s+inputResult*/
}
/*S2.3.6 循环结束*/
average = sum / 3;
/*S2.4 计算该学生平均成绩*/
printf("该学生平均成绩 = %.3f\n", average);
/*S2.5 显示该学生平均成绩*/
/*S2.6 i++转向s2.2*/
}
/*S2.7 结束循环*/
return 0;
/*S3 结束*/
}
⑦ C语言基本算法
输入:scanf("%d",&a);
百分号后面可以跟d,c,s,f等,分别代表输入整型,字符,字符串,浮点型
赋值:=号,如a=10;
条件:if(条件){程序}
else{程序}
循环:循环有多个,比较常用的是for,和while
如:for(i=0;i<10;i++){程序}//for(初使化;条件;变化)
while(条件){程序}//while里条件成立执行括号里代码
⑧ 关于C语言中的算法
一定要理解。
算法是程序的核心之一,有个着名的公式说:程序=算法+数据结构。
算法,比如说你要做一个程序是1+2+3……100=N 求N
那么你的算法就是怎么求N的过程,你的算法可以是先声明变量I=K=100,然后
K=K-1(此时K=99),然后I=I+K(I=100+99),再K=K-1(K=98),I=I+K(I=100+99+98)……
你也可以从1开始加,先声明I=K=1,再K=K+1(此时K=2),I=I+K(I=1+2),K=K+1(K=3),I=I+K(I=1+2+3)……
这是两个算法,算法就是你实现程序的那个过程,是程序实现的核心思想。
更具体你可以到:http://ke..com/view/7420.htm上看。
⑨ c语言程序算法分析 急!!!!
这是一个简单的选票计票程序
===================================
do
{
scanf("%d",&temp);
if(0<temp&&temp<4)
{
switch(temp)
{
case
1:num[0]++;break;
case
2:num[1]++;break;
case
3:num[2]++;break;
}
i++;
}
else
{
printf("wu
xiao
tou
piao,qing
chong
xin
shu
ru:\n");
getchar();
for(i=0;i<3;i++)
num[i]=0;
i=0;
}
}
while(i<12);
===================================
上面这个do/whille循环是用来统计每个候选人的得票数的(分别用num数组的0,1,2存放),
当有任何无效输入时(1~3以外的值,进入else分支),就进行全部得票数的清零,并重新投票。
直到12张选票都统计完,并且都有效,该do/whille循环结束。
====================================
if(num[0]>6||num[1]>6||num[2]>6)
{
flag=1;
}
else
{
for(i=0;i<3;i++)
num[i]=0;
i=0;
printf("wu
xiao
tou
piao,qjing
chong
xin
shu
ru:\n");
}
================================================
上面这段代码是配合外面这个do/whille循环使用的,
当内部的do/whille循环执行完毕后,所有的12张选票都统计完,并且都有效,
每个候选人的得票数分别用num数组的0,1,2存放。
如果发现有人的票数超过6票的话,就将flag设为1,并退出这个do/whille循环。
否则,就进行全部得票数的清零,并重新投票。再从上面讲的那个内部的do/whille循环重新做起。
==================================================
while(flag!=1);
printf("1hao
de
piao
shu
wei
%d,2hao
de
piao
shu
wei
%d,3hao
de
piao
shu
wei
%d\n",num[0],num[1],num[2]);
for(i=0;i<3;i++)
if(num[i]>6)
{
printf("%dhao
dang
xuan!\n",i+1);
break;
}
==================================================
这一段就简单了,输出num[0],num[1],num[2]的值,并且找出那个大于6的值,
并将对应的数组下标加一输出
⑩ C语言程序的算法怎么算
一般程序有3种结构,顺序、选择、循环。
顺序嘛就不用说了,选择用于有条件的情况,例如成绩<60,评级为'D',60<成绩<70评级为'C'...
循环就是用于重复做某样计算,就如同你的问题,累加(譬如从1+2...+100)实际上就是循环的典型也是最基本应用。
int
i,sum=0;
for(i=1;i<=100;i++)
sum
=
sum
+i;