
你需要理清一个根本概念,语言本身是为了人与机器交互而产生的,所有语言最终生成的都是让硬件工作的“机器码”。从这个角度来说,你的每一条C语句本身就已经是在给“硬件编程序”了。
硬件并不关心,也不知道你的编程语言到底是什么。之所以在单片机、DSP等硬件设计领域C语言的使用率最高,一方面是因为C语言是它那个年代所出现的最优秀的面向结构语言,因此被习惯性地采用,各大厂商开发出了众多的面向具体芯片的C编译器(把C语言转换成相应芯片的机器码),一直延续到了今天;二是因为芯片面向的是底层应用,具体化程度高,抽象性低,采用面向对象语言的总体意义不大,所以目前还没有被面向对象语言代替的趋势(但是并非没有这方面的发展,比如谷歌的Go语言)。不过我相信随着IoT的迅速发展,嵌入式系统的语言和相应的编译器会很快发生巨大的变化。
如果延伸开来的话,除了具有处理器的这一类硬件以外(如51单片机、Arm,DSP等),还有一类硬件没有直接执行机器码的能力,如CPLD、FPGA,这类硬件的逻辑要由开发者设计,这种情形下,C语言就难以胜任了,因为硬件电路的逻辑与“冯诺伊曼”式计算机的根本原理是不同的。为了能够表达复杂的数字逻辑,产生了像Verilog、VHDL这样的硬件描述语言。所以如果你所指的“给硬件编程”是指这一类硬件的话,那么上述的两种语言之一,是必然要学习一下的。
希望能对你有所帮助。
#include <iostreamh>
#include <stringh>
class Trunk
{
float edge; //正方形箱子底边长
float high; //箱子高
char color; //颜色(允许的取值:'G'、'P'、'Y')
int quantity; //数量
char use; //用途(如:纸箱、行李箱、计算机箱)
public:
Trunk (float e=1, float h=1,char c='Y',int a=1, char u=NULL);
Trunk (Trunk &b); //拷贝构造函数
~ Trunk (); //析构函数,释放分配的内存
float cubage ( ); //计算一个箱子的容积(底面积乘高)
void setuse(char s) ; //用s值修改箱子用途
void display(); //输出箱子信息(各数据成员的值)
bool operator ==( Trunk &); //判断2个箱子是否相同(底边长、箱子高和颜色相同则返回true,否则返回false)
};
Trunk::Trunk(Trunk &b):edge(bedge),high(bhigh),color(bcolor),quantity(bquantity)
{
this->use=new char[strlen(buse)+1];
if(this->use==NULL)
return;
strcpy(this->use,buse);
}
Trunk::Trunk(float e, float h,char c,int a, char u):edge(e),high(h),color(c),quantity(a)
{
if(u==NULL)
{
this->use=new char;
strcpy(this->use,"");
}
else
{
this->use=new char[strlen(u)+1];
if(this->use==NULL)
return;
strcpy(this->use,u);
}
}
Trunk::~Trunk()
{
if(this->use!=NULL)
delete this->use;
}
float Trunk::cubage()
{
return edgeedgehigh;
}
void Trunk::setuse(char s)
{
if(this->use!=NULL)
delete this->use;
this->use=new char[strlen(s)+1];
if(this->use==NULL)
return;
strcpy(this->use,s);
}
void Trunk::display()
{
cout<<edge<<'\t'<<high<<'\t'<<color<<'\t'<<quantity<<'\t'<<use<<endl<<endl;
}
bool Trunk::operator ==(Trunk &b)
{
if(this->edge!=bedge)
return false;
if(this->high!=bhigh)
return false;
if(this->color!=bcolor)
return false;
if(this->quantity!=bquantity)
return false;
if(strcmp(this->use,buse)!=0)
return false;
return true;
}
void main()
{
Trunk A(62, 75, 'R', 30, "纸箱"),B(25, 46, 'W', 50, "行李箱"),C(A),D;
cout<<"底边长"<<'\t'<<"箱子高"<<'\t'<<"颜色"<<'\t'<<"数量"<<'\t'<<"用途"<<endl<<endl;
Adisplay();
Bdisplay();
Cdisplay();
Ddisplay();
cout<<"A箱子子的容积:"<<Acubage()<<endl;
if(A==C)
cout<<"A箱子与C箱子相同。"<<endl;
else
cout<<"A箱子与C箱子不同。"<<endl;
cout<<"\n修改C箱子的用途。"<<endl;
Csetuse("计算机箱");
Cdisplay();
cout<<"\n修改D箱子的用途。"<<endl;
Dsetuse("行李箱");
Ddisplay();
}
代码如下:
#include <stdioh>
int main(void)
{
printf("Hello, world!");
return 0;
}
一、首先,打开我们的Visual C++ 60软件,我使用的为中文版,软件主界面如下图所示:
1、然后点击上图工具栏中的文件,里面有个新建菜单,然后我们可以设置一下我们的工作空间,如下图所示:
2、然后在一步步默认点击确定,完成即可,此时工作空间就建立起来了。
二、接下来,再点击工具栏下的文件,里面有个新建菜单,点击它,出现下图的对话框:
1、点击确定即可,创建出一个helloworldc的小程序,然后我们就可以编写我们的Hello World小程序了。此时就需要我们的VC++ 60来编译此程序,编译无错误才运行此程序,编译按钮和运行按钮如下图的红色箭头处:
2、或者可以点击组建工具栏下的编译菜单项,然后再点击执行菜单项,也有快捷键,按Ctrl+F7编译此程序,按Ctrl+F5运行此程序。编译无错误的话,点击运行按钮后如下图所示:
扩展资料:
C语言的基本构成:
1、数据类型。C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
2、常量与变量。常量其值不可改变,符号常量名通常用大写。变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
3、数组。如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
4、指针。
(1)、如果一个变量声明时在前面使用 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 (此处特指单目运算符 ,下同。C语言中另有 双目运算符 ) 则是取内容 *** 作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一
(2)、指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。
(3)指针是一把双刃剑,许多 *** 作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。
5、字符串。C语言的字符串其实就是以'\0'字符结尾的char型数组,使用字符型并不需要引用库,但是使用字符串就需要C标准库里面的一些用于对字符串进行 *** 作的函数。它们不同于字符数组。使用这些函数需要引用头文件<stringh>。
6、文件输入/输出在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI C中,这些函数被定义在头文件<stdioh>;中。
参考资料:
可以
可是要看题目输入的方式了
如果完全按照自然语言输入目前是不可以的
如果能够设计一套题目识别语言 就可以自动编写程序了
比如做网页的很多软件 你输入的实际上是你的需求 后台程序 软件自动给你生成了
以上就是关于学了c语言,再学什么可以给硬件编出程序全部的内容,包括:学了c语言,再学什么可以给硬件编出程序、c++急求 只要编出程序就可以!、怎么编写C语言程序,如:Helloworld的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)