c编译表
#include<stdio.h>
#include<string.h>
#defineNULL0
#defineLENsizeof(structstudent)
structstudent{
longnum;
intscore;
structstudent*next;
};
structstudentlistA,listB;
intn,sum=0;
main()
{
structstudent*creat(void); //函数申明
structstudent*insert(structstudent*,structstudent*);//函数申明
voidprint(structstudent*); //函数申明
structstudent*ahead,*bhead,*abh;
printf(" Inputlista: ");
ahead=creat(); //调用creat函数,输入链表a
sum=sum+n;
printf("Inputlistb: ");
bhead=creat(); //调用creat函数,输入链表b
sum=sum+n;
abh=insert(ahead,bhead); //调用insert函数,将两表合并
print(abh); //输出合并后的链表
}
structstudent*creat(void) //建立链表的函数
{
structstudent*p1,*p2,*head;
n=0;
p1=p2=(structstudent*)malloc(LEN);
printf("Inputnumber&scoresofstudent: ");
printf("Ifnumberis0,stopinputing. ");
scanf("%ld,%d",&p1->num,&p1->score);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=(structstudent*)malloc(LEN);
scanf("%ld,%d",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
structstudent*insert(structstudent*ah,structstudent*bh)//定义insert函数,用来合并两个链表
{
structstudent*pa1,*pa2,*pb1,*pb2;
pa2=pa1=ah;
pb2=pb1=bh;
do
{
while((pb1->num>pa1->num)&&(pa1->next!=NULL))
{
pa2=pa1;
pa1=pa1->next;
}
if(pb1->num<=pa1->num)
{
if(ah==pa1)
{
ah=pb1;
}
else
{
pa2->next=pb1;
}
pb1=pb1->next;
pb2->next=pa1;
pa2=pb2;
pb2=pb1;
}
}while((pa1->next!=NULL)||(pa1==NULL&&pb1!=NULL));
if((pb1->num>pa1->num)&&(pa1->next==NULL))
{
pa1->next=pb1;
}
return(ah);
}//这里少一个大括号
voidprint(structstudent*head) //输出函数
{
structstudent*p;
printf(" Thereare%drecords: ",sum);
p=head;
if(p!=NULL)
{
do
{
printf("%ld%d ",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
}
倒数第二个函数最后少个大括号
㈡ C语言程序编译后产生哪些类型的文件这些文件的作用是什么
1、以GCC编译器为例,可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc
-P
abc.c
第二步由源程序生产汇编语言代码。
gcc
-S
abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc
-c
abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc
abc.o
2、目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
㈢ c语言 怎样编译 时间表 时分秒那种能走的
用time(0)取当前时间,用pritnf(%02d:%02d:%02d\b,hours,min,sec)输出时间,\b回行首不换行,输出新时间覆盖原本的,就是时间在走的感觉,输出循环注意设置刷新间隔和退出条件
㈣ c编译程序是什么
c编译程序是将c语言程序编译成目标代码程序的程序,即正确答案应该选择D。
1、c语言是目前世界上最流行、使用最广泛的面向过程的高级程序设计语言。 c语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用c语言明显优于其它高级语言,许多大型应用软件都是用c语言编写的。
2、编译就是利用编译程序从源语言编写的源程序产生目标程序的过程,其中的五个阶段分别是词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
(4)c编译表扩展阅读
c编译程序的语言特点
对于c编译程序来说,其语言的特点如下:
1、c语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护,而且表现能力和处理能力极强。
2、c语言具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。
3、由于c语言实现了对硬件的编程操作,因此集高级语言和低级语言的功能于一体。它既可用于系统软件的开发,也适合于应用软件的开发。
4、此外,c语言还具有效率高、可移植性强等特点。因此它广泛地移植到了各类各型计算机上,从而形成了多种版本。
㈤ C语言编译温度转换表错误
注意:这段代码中你定义了fahr为整形变量,那么循环中的fhar是怎么回事儿?很可能是你马虎了,弄错了,把后来的fhar改为fahr或者是把定义中的fahr改为fhar都行。如下:
㈥ 关于c语言编译的链表问题 之前创了工程,老运行不来,改成这个,没语法错误,但是运行不出结果,
帮你调好了,看注释,你自己修改自己的代码测试一下吧
Node *Get(LinkList L,int i)
{
int j;
Node *p;
if(i<0)
return NULL;
p=L;
j=0;
while((p->next!=NULL)&&(i>j)) //这里应该i>j
{
p=p->next;
j++;
}
if(i==j)
return p;
else return NULL;
}
int main()
{
LinkList L=NULL , tail; //链表头,置初值NULL
char c;
Node *s,*q;
int j=0;
printf("input data:");
while(1)
{
c=getchar();
if(c=='$')
break ;
s=(Node*)malloc(sizeof(Node));
s->data=c;
if ( L == NULL )
L=s ;
else
tail->next=s ;
tail=s;
//s->next=L->next; //这里L还没有分配空间,不能使用
//L->next=s; //这里L还没有分配空间,不能使用
j++;
}
printf("input position(0-%d):",j-1);
scanf("%d",&j);
//q=Get(a,j); //这里a也没有分配过空间,不能使用
q=Get(L,j);
if ( q ) //当找到数据时,才能输出,找不到q会是NULL,不能操作NULL
printf("%c",q->data);
return 0;
}
㈦ C语言编译链表出现错误,求大神
你在前面 加一句话 判空 C1->c=B1->b 它的前面加上 :
if (NULL != B1)
C1->c=B1->b //不判断 链表最后,B1是NULL B1->b 就会出错 访问非法地址
else
C1->c = NULL
你的代码里挺多这样的地方 , 判一下空试试
㈧ 如何编译C文件
编译C文件用GCC。
编译C文件常用方法:
单个文件:
g++
file.cpp
这是最简单形式,缺省输出为a.out,可以用-o命令指定输出文件,比如g++
file.cpp
f.out
多个文件:
g++
-c
1.cpp
-o
1.o
g++
-c
2.cpp
-o
2.o
g++
1.o
2.o
-o
prog.out
链接成可执行文件:
一般用g++
-o
file
file.cpp
多个文件是g++
-o
file
file1.cpp
file2.cpp
...
编译C++不是用GCC而是G++.
如果用GCC能编译但不能链接.
多个文件:
1.编译多个文件,但不连接:
g++
file1.cpp
file2.cpp
会生成两个文件:file1.o,
file2.o
2.连接:
g++
-o
outFileName
file1.o
file2.o
会生成一个可执行文件:outFileName。
如果想,一步就完成编译和连接,那么:
g++
-o
outFileName
file1.cpp
file2.cpp
-o选项控制是否连接。
㈨ C/C++编译器中虚表是如何完成的
编译器会搜集一个类的所有虚函数,并在编译时生成一个虚函数表。然后编译器实际上会在类的构造和析构函数中加一些代码来达到初始化虚表指针和改变虚表指针的目的。
㈩ C 编译器符号表有哪些内容
符号表内部不记变量的值 每个变量都有自己对应的内空间。变量的值就存放在内存空间中! 如int a = 1; //假设a 的地址为0x 00121001 则这个地址的内存中就放有1这个数据