㈠ 在使用单片机中,汇编语言和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语言无处不在。