导航:首页 > 源码编译 > 编译技术预处理实验报告

编译技术预处理实验报告

发布时间:2022-08-12 13:18:31

① c程序的运行环境和运行一个c程序的方法实验报告书

实验目的 (1)了解所用的计算机系统的基础操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录。如果是在Windows操作系统下使用Turbo C编译器,可以按以下步骤进行操作: ①单击Windows桌面上的“开始”按钮,在菜单中单击“查找(F)”,在其右面的下拉菜单中单击“文件或文件夹(F)”。屏幕上出现“查找”窗口。 ②在“名称”框中输入文件名“tc.exe”,单击“开始查找”按钮,系统即自动在指定的范围内寻找所需要文件,如果找到,就会显示出文件路径(例如:C:\lib\tc或c:\tc)。 ③注意:在“搜索”框中应说明搜索范围,如使“搜索”栏中的内容为“C:\”,表示从根目录开始寻找,即搜索整个C盘。 2.建立用户自己的子目录 ①利用“Windows资源管理器”在磁盘(如D盘)上建立自已的文件夹。 ②利用DOS命令md在磁盘上建立自己的子目录。 3.进入TC工作环境 第一种方法; ①单击桌面上的“开始”按钮,从菜单中选择“程序”,单击它然后在其下拉菜单中选择“MS-DOS”,屏幕上出现MS-DOS窗口。 ②用DOS命令cd,使当前目录改变为tc.exe所在的子目录(例如:C:\lib\tc)。 ③在tc的子目录下输入tc,按回车键进入tc的工作环境。 第二种方法: 用鼠标双击“我的电脑”图标,进入C盘根目录,在C盘根目录下找到tc.exe文件所在的文件夹(如C盘下的lib文件夹下的tc文件夹),在文件夹中找到tc.exe文件,双击鼠标进入TC的工作环境。 4.熟悉Turbo C集成环境 ①了解和熟悉编辑(Edit)窗口和信息(Message)窗口的作用。试一下能否向信息窗口输入程序。按功能键F5,观察它有什么作用,再按一次F5,再观察它有什么作用。按F6,观察它有什么作用;再按一次F6,再观察它有什么作用。(参见第一部分的1.1节) ②按功能键F10,并按回车键,观察“File”菜单,了解它们的作用和方法。用键盘上的“→”键,分别选中Edit、Run、Compile、Project、Options、Debug、Break/watch,观察它们的菜单,大致上了解它们的作用,以后用到时再深入了解。 ③选择File菜单中的New并按回车键,在编辑窗口中随意输入几行字符,观察窗口顶部左端line和col后面数字的变化。 5.编辑并运行一个简单的程序 ①再选择File菜单中的New并按回车键,使编辑窗口变成空白。 ②输入下面的程序 main( ) { printf("* * * * *\n"); printf(" Hello.\n"); printf("* * * * *\n"); } ③按功能键F9进行编译和连接,观察屏幕上显示的编译信息。如果出现“出错信息”,则应找出原因并改正之,再进行编译。 ④如果编译无错误,按Ctrl和F9键使程序运行,按Alt和F5键,切换到用户屏,观察运行结果。 ⑤按任一键回到TC窗口,将程序命令为ex1.c保存在自已的子目录下。(参见第一部分1.2节的内容) 6.编辑并运行另一个C程序 ①再选择File→New,使编辑窗口变成空白。 ②输入以下程序 main( ) { int a,b,sum; a=150;b=200; sum=a+b; printf("sum is %d\n",sum); } ③按F9进行编译,仔细分析编译信息窗口和Message窗口,可能显示有多个错误,逐个修改,直到不出现错误。 ④运行程序,分析运行结果。 ⑤将程序命名为ex2.c,保存到自己所建的子目录下。 7.编辑并运行一个需要在运行时输入数据的程序 ①清空编辑窗口,输入下面的程序。 main( ) { int a,b, max; scanf("%d%d",&a,&b); if(a>b) max=a; else max=b; printf("%d",max); } ②编辑并运行,注意按Ctrl和F9运行后,先从键盘输入整数2和5,然后按回车键,再按Alt和F5键,观察运行结果。 ③将程序中的第3行改为: int a;b;max; 再进行编译,观察其结果。 ④将程序第5、6两行合并为一行,即 if(a>b) max=a ; else max=b ; 进行编译和运行,分析结果。 将程序命名为ex3.c保存在用户自己的子目录下。

麻烦采纳,谢谢!

② C++的程序设计的实验报告

实验(一)实验时间 实验地点403实验内容从键盘输入三个整数,输出三个数中最大值与最小值。实验目的熟悉Visual C++ 6.0的调试环境,掌握C++工程文件的创建、添加C++源程序文件及工程文件编译、调试、运行方法和途径;掌握C++输入流对象“cin”通过提取运算符“>>”实现键盘输入及C++输出流对象“cout”通过插入运算符“<<”实现屏幕输出的思想及基本用法。算法描述:#include "stdafx.h"#include<iostream>using namespace std;double max(double n, double m){ if(n>=m) return n; else return m;}double min(double n, double m){ if(n>=m) return m; else return n;} int main(){ double a,b,c,k,j,h,x; cout<<"请输入三个数值:"; cin>>a>>b>>c; k=max(a,b);h=min(a,b); j=max(a,c);x=min(a,c); cout<<"max="<<max(j,k); cout<<"min="<<min(h,x);}运行结果: 实验(一)实验时间 实验地点403实验内容输出三角形的面积及周长,三角形的边长从键盘键入实验目的熟悉Visual C++ 6.0的调试环境,掌握C++工程文件的创建、添加C++源程序文件及工程文件编译、调试、运行方法和途径;掌握C++输入流对象“cin”通过提取运算符“>>”实现键盘输入及C++输出流对象“cout”通过插入运算符“<<”实现屏幕输出的思想及基本用法算法描述:#include "stdafx.h"#include<iostream>#include "math.h"using namespace std;double compare(double a,double b,double c){ double x,y; x=a+b; if(a>=b) y=a-b; else y=b-a; if((y<c)&&(x>c)) return 1; else return 0;}int main(){ double a,b,c,L,S,U; cout<<"请输入三个数值:"; cin>>a>>b>>c; if(compare(a,b,c)!=1){ cout<<"不能构成三角形"; } else{ L=a+b+c; U=L*(L/2-a)*(L/2-b)*(L/2-c)/2; S=sqrt(U); cout<<"L="<<L<<"S="<<S;}}运行结果: 实验(一)实验时间 实验地点403实验内容用引用型参数编写一函数,将一维数组中的最大值、最小值和平均值返回给主调函数。实验目的认识C++函数对C函数特性的提升,掌握引用型变量做函数的参数、函数参数默认值的设置、函数模板及函数的重载,从而对多态性形成初步的概念。 算法描述:/ C++实验二1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<vector>using namespace std;double average(vector<double> A){ double sum=0; for(int i=0;i<A.size();i++){ sum=A[i]+sum; } return (sum/A.size());}void max_and_min(vector<double> a){ double max; int k=a.size(); for(int i=0;i<k;i++) {for(int j=0;j<i;j++)</p><p> {</p><p> if(a[j]>a[i])</p><p> {</p><p> max=a[j];a[j]=a[i];a[i]=max;</p><p> } } } for(int n=0;n<k;n++)cout<<a[n]<<" ";cout<<"max="<<a[k-1]<<endl;cout<<"min="<<a[0]<<endl;}int main(){ int n; cout <<"输入个数:\n"; //输入数组个数 cin>>n; double *array1=new double [n]; cout <<"输入数组:\n"; for(int x=0;x<n;x++){ cin>>array1[x]; } vector<double> aa(array1,array1+n); max_and_min(aa); cout<<"ave="<<(average(aa))<<endl; for(int i=0;i<sizeof(array1)/sizeof(array1[0]);++i) cout<<" "<<array1[i]<<" "; cout<<"\n";}运行结果:

③ 编译原理实验报告

#include<stdio.h>
void main()
{

int m=0,n=0,n1=0,n2=0,n3=0,zg,fzg,flag;
int bz[7]=;/*状态改变控制,1 表示可以改变状态zt值,0 表示不可以*/
int zt[7]=;/*状态值,2表示未定状态,1表示 是,0表示 否*/

char temp[100]="\0";/*用于求first集*/
char z[7];/*非总结符*/
char z1[7];/*总结符*/
char z2[7]="\0";/*gs[]文法中出现的标记个数的辅助字符 01234*/
char gs[100]="\0";/*文法,按顺序排成字符串*/

printf("请依次输入非终结符(不超过7个):");
gets(z);
while(z[m]!='\0')

fzg=m;//zg是非终结符个数

while(n<m)
//生成01234辅助字符
printf("您输入了:");
puts(z);
fflush(stdin);

printf("请依次输入终结符(不超过7个):");
gets(z1);
while(z1[n1]!='\0')

zg=n1;
printf("您输入了:");
puts(z1);
fflush(stdin);

printf("按照正确格式输入所有文法(总长度不超过100格式如下):");
printf("如果文法为(字符'k'表示空):\n");
printf("S-->AB S-->bC A-->k A-->b\n");
printf("输入:0SAB0SbC1Ak1Ab\n");
printf(" (注:数字01234表示第一二三四个非终结符)\n");

gets(gs);
fflush(stdin);
printf("您输入了:");
puts(gs);
m=0;
//对于输入文法字符串的转换,将每个文法式左部去除
while(gs[m]!='\0')
{
n=m;
if(gs[m]>='0'&&gs[m]<='9')
{
m++;
while(gs[m]!='\0')
{
gs[m]=gs[m+1];
m++;
}
//gs[m-1]='\0';
}
m=++n;
}

m=0;

//puts(gs);

/*情况一,直接判定是 形如: (A-->k) */
while(gs[m]!='\0')
{
if(gs[m]=='k')
{
zt[gs[m-1]-48]=1;
bz[gs[m-1]-48]=0;
}
m++;
}

/*情况二,直接判定--否 形如: (D-->aS ,D-->c) */
for(n=0;n<fzg;n++)
{
if(bz[n]==1)
{
m=0;
n2=0;
while(gs[m]!='\0')
{
if(z2[n]==gs[m])
{
if(gs[m+1]>=z1[0]&&gs[m+1]<=z1[n1-1])
zt[n]=0;
else //gs[m+1] 是非终结符n2做标记
}
//跳出循环,无法解决该情况,推到下面情况三
m++;
}
if(n2!=99) //完成所有扫描,未出现非终结符,得出结论zt[n]=0.bz[n]=0不允许再改变zt[n]
}
}

/*情况三,最终判定*/
do
{
flag=0;
for(n=0;n<fzg;n++)
{
if(bz[n]==1) //未得到判定
{ m=0;
while(gs[m]!='\0')
{
if(gs[m]==z2[n]) //判定gs[m]是辅助字符0123
{
m++;
while(gs[m]>='A'&&gs[m]<='Z')
{

n1=0;
for(n2=0;n2<fzg;n2++) //循环查找是gs[m]哪个非终结符
{
if(gs[m]==z[n2])
{
if(zt[n2]==1) //这个非终结符能推出空
zt[n]=1;
else if(bz[n2]==1) //这个非终结符 现在 不能推出空,但它的状态可改即它最终结果还未判定

else
//设 m1 做标记供下一if参考
break; //找到gs[m]是哪个非终结符,for循环完成任务,可以结束
}

}
if(n1==99) break;
m++;
}
}
m++;
}
if(zt[n]==1) bz[n]=0;
if(bz[n]==0) flag=1;//对应for下的第一个if(zt[n]==2)
}

}
}while(flag);

printf("结果是:\n");

for(m=0;m<5;m++)
{
switch(zt[m])
{
case 0:printf("%c---否\n",z[m]);break;
case 1:printf("%c---是\n",z[m]);break;
case 2:printf("%c---未定\n",z[m]);break;
}

}
/*
puts(gs);
puts(zt);
puts(z);
puts(z1);
puts(z2);
printf("%d,,,%d",fzg,zg);
*/

//下面求first集
//下面求first集

for(n=0;n<fzg;n++)

m=0;n=0;n1=0;n2=0;
while(gs[n]>='0'&&gs[n]<='9')
{
for(;m<fzg;m++)
{
if(n2!=m)
n1=0; //m=n2用于第二次以后的for循环中还原上次m的值

if(gs[n]==z2[m])
{
while(gs[n+1]>'9')
{
if(n1==0)
//如果是第一个直接保存

//不是第一个,先与字符数组中其它字符比较,没相同的才保存
else if(gs[n]>='a'&&gs[n]<='z'&&gs[n+1]>='A'&&gs[n+1]<='Z') //gs[n]是终结符 且 gs[n+1]是非终结符
;//什么也不做,程序继续n++,扫描下一个gs[n]

else
{
for(n3=0;n3<=n1;n3++)
{
if(temp[m*13+n3]==gs[n+1])
break;
}

if(n3>n1) //for循环结束是因为n3而不是break

}
n++;
}
break; //break位于if(gs[n]==z2[m]),对于gs[n]已找到z2[m]完成任务跳出for循环
}
}
n2=m; //存放该for循环中m的值
n++;
}
//进一步处理集除去非终结符
m=0;n=0;n1=0;n2=0;
for(m=0;m<fzg;m++)
{
if(flag!=m)
n1=0; //m=flag用于第二次以后的for循环中还原上次m的值

while(temp[m*13+n1]!='\0')
{
while(temp[m*13+n1]>='A'&&temp[m*13+n1]<='Z') //搜索非终结符
{
for(n=0;n<fzg;n++) //确定是哪个非终结符
{if(temp[m*13+n1]==z[n])
break;
}
while(temp[m*13+n1]!='\0') //从temp[n*13+n1]开始每个字符依次往前移动一

n1--;
while(temp[n*13+n2]!='\0') //把z[n]对应的first加入temp[m*13+n1]这个first中,每个字符依次加在最后
{
for(n3=0;n3<n1;n3++) //循环判定是否有相同的字符
{
if(temp[m*13+n3]==temp[n*13+n2])
break;
}
if(temp[n*13+n2]=='k'&&zt[m]==0) //那些不能推出 空,但是因为要加入 其他非终结符的first集 而可能含有 空
n2++;
else if(n3>=n1) //for循环结束是因为n3而不是break ,即无相同字符

else n2++;
}

n1=0;
n2=0;
}

n1++;
}
flag=m; //存放该for循环中m的值
}

//非终结符的first集输出
m=0;n1=0;
for(m=0;m<fzg;m++)
{
n1=0;
printf("非终结符 %c 的first集是: ",z[m]);
while(temp[m*13+n1]!='\0')
{
printf("%c",temp[m*13+n1]);
n1++;
}
printf("\n");
}

}

④ 编译程序 显示所以水仙花数的实验报告。

#include<iostream>
using namespace std;
void main()
{
int a,b,c;
for(int x=100;x<1000;x++)
{
a=x/100;
b=(x%100)/10;
c=x%10;
if(a*a*a+b*b*b+c*c*c==x)
cout<<x<<endl;
else
continue;
}
}

⑤ 求助c语言上机实验报告怎么写

实验目的:1.初识vc
6.0上机环境,学会建立工程、建立单文件和多文件程序,正确进行编译、链接并运行程序,查找并修改简单的语法错误;
2.通过编程熟悉c语言源程序的编程风格,正确进行源代码的单行注释。
3.掌握用const定义符号常量以及定义内联函数,比较与普通宏定义的区别。
实验内容:看看你自己要做什么实验,根据实验,把题目写上去就行了。
实验操作:把程序写上去。
实验仪器:vc
6.0
pc机
实验结论:运行出结果,写上去就行了。

⑥ C语言程序设计实验报告怎么写啊

通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用

⑦ c语言程序设计实验报告

五、 课程设计小结心得体会
1设计思想
1)、设定一个一维数组,可先按员工序号设定每位员工的工资
2)、利用While语句和Prinft语句完成用户菜单的设计
功能为:第1项 设为员工编号和工资数据
第2项 设为修改员工工资数据
第3项 设为查询员工工资数据
第4项 设为结束系统
3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employe number”
4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中
5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍
6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资
以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(4)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。一般不采取这样的做法,力求“简单、明了、清晰”。

阅读全文

与编译技术预处理实验报告相关的资料

热点内容
2b2t服务器怎么获得权限 浏览:815
c语言javaphp 浏览:804
程序员技术不分高低吗 浏览:619
dos不是内部或外部命令 浏览:708
PC机与单片机通讯 浏览:675
二级加密图 浏览:113
压缩机异音影响制冷吗 浏览:711
德斯兰压缩机 浏览:490
程序员太极拳视频 浏览:531
网上购买加密锁 浏览:825
安卓为什么软件要隐私 浏览:83
虚拟主机管理源码 浏览:811
java图形图像 浏览:230
单片机输出口电平 浏览:486
java配置数据库连接 浏览:479
java多态的体现 浏览:554
java的split分隔符 浏览:128
跪着敲代码的程序员 浏览:239
web和php有什么区别 浏览:120
加密的电梯卡怎么复制苹果手机 浏览:219