① 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;