㈠ 在使用單片機中,匯編語言和c語言各有什麼優缺點
一、匯編語言:
缺點:匯編語言屬於低級語言,難理解,編程效率低,編程容易出錯。
優點:程序執行效率高,佔用資源少, 方便對最底層的一些東西進行操作。
二、C語言:
缺點:危險性高,開發周期長,可移植性不如JAVA。
優點:語句少但是靈活度高,針對過程的言語相比於非結構化言語條理性很好接近人類的邏輯思維,相比於模塊化言語和面向對象的言語他又比較接近底層的一些東西,而且效率也高(只比匯編低%10~20)移植性也好。
(1)c語言硬幣缺點擴展閱讀:
不難看出機器語言作為一種編程語言, 靈活性較差可閱讀性也很差,為了減輕機器語言帶給軟體工程師的不適應,人們對機器語言進行了升級和改進:用一些容易理解和記憶的字母,單詞來代替一個特定的指令。
通過這種方法,人們很容易去閱讀 已經完成的程序或者理解程序正在執行的功能,對現有程序的bug修復以及運營維護都變得更加簡單方便,這種語言就是我們所說的匯編語言, 即第二代計算機語言。
㈡ C語言程序 稱硬幣問題
以前做過:
#include<iostream>
#include<string>
using namespace std;
string a[3],b[3],judge[3];
class ty
{
public:
int up,down,t;
ty()
{
t=up=down=0;
}
};
ty *ch;
int used[12];
char cc[12];
int check()
{ int s,s1;
for(s=0;s<3;s++)
{
if(judge[s][0]!='e')
{ int a1=0,b1=0;
for(s1=0;s1<a[s].size();s1++)
{
a1+=used[a[s][s1]-'A'];
b1+=used[b[s][s1]-'A'];
}
if(judge[s][0]=='u'&&a1<=b1)
return 0;
if(judge[s][0]=='d'&&a1>=b1)
return 0;
}
}
return 1;
}
int main()
{
int n,i,j,k,l,e,v;
cin>>n;
for(i=1;i<=n;i++)
{ ch=new ty [12];
e=0;
for(j=0;j<3;j++)
{ cin>>a[j]>>b[j]>>judge[j];
memset(used,0,48);
v=0;
if(judge[j][0]=='e')
{ e++;
for(k=0;k<a[j].length();k++)
{
ch[a[j][k]-'A'].t=1;
ch[b[j][k]-'A'].t=1;
}
}
else if(judge[j][0]=='u')
{
for(k=0;k<a[j].length();k++)
{
ch[a[j][k]-'A'].down++;
ch[b[j][k]-'A'].up++;
used[a[j][k]-'A']=used[b[j][k]-'A']=1;
}
v=1;
}
else
{
for(k=0;k<a[j].length();k++)
{
ch[b[j][k]-'A'].down++;
ch[a[j][k]-'A'].up++;
used[a[j][k]-'A']=used[b[j][k]-'A']=1;
}
v=1;
}
if(v)
{
for(e=0;e<12;e++)
if(used[e]==0)
ch[e].t=1;
}
}
for(e=0;e<12;e++)
if(ch[e].up&&ch[e].down)
ch[e].t=1;
int o=0;
for(e=0;e<12;e++)
{
if(ch[e].t==0)
{ ch[o]=ch[e];
cc[o++]='A'+e;
}
}
for(e=0;e<o;e++)
{
memset(used,0,48);
if(ch[e].up)
used[cc[e]-'A']=-1;
else
used[cc[e]-'A']=1;
if(check())
{ printf("%c is the counterfeit coin and it is %s.\n",cc[e],ch[e].up?"light":"heavy");
break;
}
}
delete []ch;
}
return 0;
}
㈢ C語言 拋硬幣的問題 續(小問題)
任何一個大於0的整數對2取模,結果只有2個,要麼是0(可以被2整除)要麼是1(除以2後余數為1) flip()
?
++j
:
++k;flip()
結果是0執行++k,其他時候一律執行++j。
㈣ c語言的優缺點有哪些
C語言的優點有三個:
代碼量小。
運行速度快。
功能強大。
任何語言有優點就有缺點。C語言的缺點可以用下面三點來概括:
危險性高。
開發周期長。
可移植性不如JAVA。
㈤ C語言的弱點是什麼
應該說,C語言的弱點是沒有面向對象,至於其它方面的所謂弱點(例如人們一直說的不檢查邊界,不回收垃圾等)正是C語言具有超越其它語言的靈活性的體現。只要能用好這些特性,就會發現,這根本不是「弱點」,而是其獨有的強項。
㈥ 關於C語言中模擬硬幣投擲
time_t t;
srand((unsigned int)time(&t));
這兩句的作用是定義一個時間,然後將這個時間作為產生隨即數的種子
由於每次運行程序的時間都不同,所以達到了隨即的目的
既然是這樣,種子只要在一開始的時候分配一遍就夠了,要是你放在你的那個函數中
則每次產生隨即數的時候都會要求分配一遍種子,這個動作時十分多餘的
此外由於這個隨機數產生的演算法的原因,如果你把那部分放在函數內,由於每次運行的
時候都要分配種子,所以兩個種子的值是十分接近的,得出的隨機數也會十分接近。從而沒有隨即性可言。。。。。
㈦ C語言問題關於硬幣
這個看你用的是什麼編譯器了和你的平台有關,我用gcc在Linux下運行你的程序沒有問題
因為不同編譯器對於浮點數的處理是不同的
浮點數在計算機裡面不準確
看起來a=1.3時,a=a*100是130.000,但是在計算機裡面130.000有可能是129.99999
所以在你的程序裡面b變成25,而e變成了0(因為編譯器的處理).
這樣在後面計算時會導致誤差。下面是我的修改,增加了變數g
#include<stdio.h>
int main()
{
float a;
int b,c,d,e,sum;
int g;
sum=0;b=0;c=0;d=0;
printf("請輸入價錢 /元\n");
scanf("%f",&a);
a=a*100;
g=a+0.0001;//因為a可能不太精確,所以加上0.0001再取整,不會有很大影響
b=g/5; //改成g
e=g%5;//改成g
c=e/2;
d=e%2;
sum=b+c+d;
printf("硬幣最少數:%d\n 5分硬幣數量:%d\n 2分硬幣數量:%d\n 1分硬幣數量:%d\n",sum,b,c,d);
}
㈧ c語言的語言特點
1、高級語言:它是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。
2、結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
4、代碼級別的跨平台:由於標準的存在,使得幾乎同樣的C代碼可用於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。C語言對編寫需要進行硬體操作的場合,優於其它高級語言。
5、使用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由於這些改進增加語言的復雜度,也為另一部分所詬病。Java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C++/C。一般而言,C,C++,java被視為同一系的語言,它們長期占據著程序使用榜的前三名。 優點1、簡潔緊湊、靈活方便
C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2、運算符豐富
C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
3、數據類型豐富
C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。並引入了指針概念,使程序效率更高。
4、表達方式靈活實用
C語言提供多種運算符和表達式值的方法,對問題的表達可通過多種途徑獲得,其程序設計更主動、靈活。它語法限制不太嚴格,程序設計自由度大,如對整型量與字元型數據及邏輯型數據可以通用等。
5、允許直接訪問物理地址,對硬體進行操作
由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。
6、生成目標代碼質量高,程序執行效率高
C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編程序生成的目標代碼效率低10%~20%。
7、可移植性好
C語言在不同機器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便於移植。在一個環境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環境中運行。
8、表達力強
C語言有豐富的數據結構和運算符。包含了各種數據結構,如整型、數組類型、指針類型和聯合類型等,用來實現各種數據結構的運算。C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現難度極大的運算。
C語言能直接訪問硬體的物理地址,能進行位(bit)操作。兼有高級語言和低級語言的許多優點。
它既可用來編寫系統軟體,又可用來開發應用軟體,已成為一種通用程序設計語言。
另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。
缺點
1、 C語言的缺點主要表現在數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。
2、 C語言的語法限制不太嚴格,對變數的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設計更熟練一些。 1、對齊處理(Alignment)的標准化(包括_Alignas標志符,alignof運算符,aligned_alloc函數以及<stdalign.h>頭文件)。
2、_Noreturn 函數標記,類似於 gcc 的 __attribute__(noreturn)。
3、_Generic關鍵字。
4、多線程(Multithreading)支持,包括:_Thread_local存儲類型標識符,<threads.h>;頭文件,裡麵包含了線程的創建和管理函數。
5、增強的Unicode的支持,基於C Unicode技術報告ISO/IEC TR 19769:2004,增強了對Unicode的支持。包括為UTF-16/UTF-32編碼增加了char16_t和char32_t數據類型,提供了包含unicode字元串轉換函數的頭文件<uchar.h>.
6、刪除了 gets() 函數,使用一個新的更安全的函數gets_s()替代。
7、增加了邊界檢查函數介面,定義了新的安全的函數,例如 fopen_s(),strcat_s()等等。
8、增加了更多浮點處理宏。
9、匿名結構體/聯合體支持,這個在gcc早已存在,C11將其引入標准。
10、靜態斷言(Static assertions),_Static_assert(),在解釋 #if 和 #error 之後被處理。
11、新的 fopen()模式,(「…x」),類似 POSIX 中的 O_CREAT|O_EXCL,在文件鎖中比較常用。
12、新增 quick_exit()函數作為第三種終止程序的方式。當 exit()失敗時可以做最少的清理工作。
13、_Atomic類型修飾符和<stdatomic.h>頭文件。
㈨ C語言硬幣問題
你的是對的,書上錯了。
在書上那演算法中,漏掉了5元錢為奇數個的情況,比如5*1 + 2*47 + 1,或5*3 + 2*42 + 1等,剛好是少了10種情況。
㈩ C語言有什麼優點什麼缺點有什麼特別之處
優點1. 簡潔緊湊、靈活方便C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示。它把高級語言的基本結構和語句與低級語言的實用性結合起來。 C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。2. 運算符豐富C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。3. 數據結構豐富C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。並引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。4. C是結構式語言結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。5. C語法限制不太嚴格,程序設計自由度大雖然C語言也是強類型語言,但它的語法比較靈活,允許程序編寫者有較大的自由度。6. C語言允許直接訪問物理地址,可以直接對硬體進行操作由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。7. 生成目標代碼質量高,程序執行效率高一般只比匯編程序生成的目標代碼效率低10へ20%。8. C語言適用范圍大,可移植性好C語言有一個突出的優點就是適合於多種操作系統,如DOS、UNIX;也適用於多種機型。C語言具有強大的繪圖能力,可移植性好,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫,它也是數值計算的高級語言。
缺點1. C語言的缺點主要表現在數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。2. C語言的語法限制不太嚴格,對變數的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。從應用的角度,C語言比其他高級語言較難掌握。[C語言指針]指針是C語言的一大特色,可以說是C語言優於其它高級語言的一個重要原因。就是因為它有指針,可以直接進行靠近硬體的操作,但是C的指針操作也給它帶來了很多不安全的因素。C++在這方面做了很好的改進,在保留了指針操作的同時又增強了安全性。Java取消了指針操作,提高了安全性,適合初學者使用。
特別的地方:C是貼近硬體的語言,所以很高效,所以是操作系統編寫的不二選擇,很多語言的核心都是C寫的,所以,你可以不學C語言,但是C語言無處不在。