C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言实验报告.docx](https://file1.bdocx.com/fileroot1/2022-12/8/99d65013-7b18-44ef-ba15-a2d75f5278ab/99d65013-7b18-44ef-ba15-a2d75f5278ab1.gif)
C语言实验报告
《C语言》实验报告
学院:
土木工程
专业:
岩土
班级:
1班
学号:
1140100114
姓名:
指导教师:
杜丽芳
年月
实验一简单C程序
【实验目的】
1、掌握上机运行一个C程序的全部过程。
2、初步学会VC++集成环境的使用方法。
3、初步学会差错和排错的技能。
4、加深理解程序执行的过程以及程序设计的有关概念。
【实验步骤】
1、启动VC++集成环境。
2、在编辑状态下输入源程序,保存后生成扩展名为cpp的源文件。
3、对源文件进行编译,生成扩展名为obj的目标文件,如果编译通不过,再回到编辑状态修改程序。
4、对目标文件进行连接,生成扩展名为exe的可执行文件。
5、最后运行可执行文件,得到程序运行结果。
注:
具体实验内容为第1,2,3章作业,每题要有题目,源程序,C编译系统下的编译示图,C编译系统下的运行结果示图。
【题目一】编写一个C程序,输入abc三个值,输出其中最大值
【源程序】
#include
intmain()
{
intmax(intx,inty);
inta,b,c,d;
scanf("%d%d%d",&a,&b,&c);
d=max(max(a,b),c);
printf("max=%d\n",d);
return0;
}
intmax(intx,inty)
{
intz;
if(x>y)z=x;
elsez=y;
return(z);
}
【C编译系统下的编译示图】
C编译系统下的运行结果示图
【题目二】请编写程序将“China”译成密码,密码的规律是用原来的字母后面第4个字母代替原来的字母。
例如字母“A”后面第4个字母是“E”代替“A”。
因此“China”译成“Glmre”。
请编写程序,用赋初值的方法使c1.c2.c3.c4.c5这五个变量的值分别为“G”“l”“m”“r”“e”.分别用Putchar函数和Printf函数输出这五个字符。
【源程序】
#include
intmain()
{
charc1='C',c2='h',c3='i',c4='n',c5='a';
putchar(c1+4);
putchar(c2+4);
putchar(c3+4);
putchar(c4+4);
putchar(c5+4);
return0;
}
#include
intmain()
{
charc1='C',c2='h',c3='i',c4='n',c5='a',a,b,c,d,e;
a=c1+4;
b=c2+4;
c=c3+4;
d=c4+4;
e=c5+4;
printf("a=%c",b=%c,c=%c,d=%c,e=%c\n",a,b,c,d,e);
return0;
}
【C编译系统下的编译示图】
【C编译系统下的运行结果示图】
题目2:
设圆的半径为r=1.5,圆柱体h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编写程序。
源程序
#include
#definePI3.14
intmain()
{
inth;
floatr,s1,s2,c,v;
scanf("%d,%f",&h,&r);
v=4.0/3*PI*r*r*r;
c=2*PI*r;
s1=PI*r*r;
s2=4*PI*r*r;
printf("v=%.2f\n",v);
printf("c=%.2f\n",c);
printf("s1=%.2f\n",s1);
printf("s2=%.2f\n",s2);
return0;
}
编译试图
运行结果
实验二选择结构
【实验目的】
1、掌握逻辑运算和逻辑表达式的用法。
2、掌握选择结构的程序设计方法。
3、掌握if语句和switch语句。
4、了解c语言表示逻辑量的方法,以0代表“假”,以非0代表“真”。
注:
具体实验内容为第4章作业,每题要有题目,源程序,C编译系统下的编译示图,C编译系统下的运行结果示图。
【题目一】给个不多于5位的正整数
1,求出他是几位数
2,分别输出每一位数
3,按逆序输出
【源程序】
#include
intmain()
{
inta,b,c,d,e,f,g,h;
scanf("%d",&a);
if(a<10)b=1,c=a%10,h=c;
elseif(a<100)b=2,d=a/10%10,c=a%10,h=c*10+d;
elseif(a<1000)b=3,e=a/100%10,d=a/10%10,c=a%10,h=c*100+d*10+e;
elseif(a<10000)b=4,f=a/1000%10,e=a/100%10,d=a/10%10,c=a%10,h=c*1000+d*100+e*10+f;
elseif(a<100000)
b=5,g=a/10000%10,f=a/1000%10,e=a/100%10,d=a/10%10,c=a%10,h=c*10000+d*1000+e*100+f*10+g;
printf("b=%d,c=%d,d=%d,e=%d,f=%d,g=%d,h=%d/n",b,c,d,e,f,g,h);
return0;
}
【C编译系统下的编译示图】
【C编译系统下的运行结果示图】
实验三循环结构
【实验目的】
1、掌握循环语句的执行过程及用法。
2、初步掌握循环语句设计的基本技巧。
3、掌握用dowhile语句,while语句和for语句实现循环的方法。
4、学会单步跟踪的操作方法。
注:
具体实验内容为第5章作业,每题要有题目,源程序,C编译系统下的编译示图,C编译系统下的运行结果示图。
【题目一】
一个数如果恰好等于它的因子之和,这个数九称为完数编写程序找小虎1000以内所有完数
一这种形式输出
6itsfactorsare1,2,3
【源程序】
#include
intmain()
{
intm,i,j,s;
for(m=6;m<1000;m++)
{s=m-1;
for(i=2;iif(m%i==0)s=s-i;
if(s==0)
{
printf("%5ditsfactorsare1",m);
for(j=2;jif(m%j==0)
printf("%d",j);
printf("\n");}
}
}}
【C编译系统下
的编译示图】
【C编译系统下的运行结果示图】
题目2
140.7题
源程序
#include
intmain()
{
inti,a=0,b=0,c=0,sum;
for(i=1;i<=100;i++)
a+=i;
for(i=1;i<=50;i++)
a+=i*i;
for(i=1;i<=10;i++)
b+=1/i;
sum=a+c+b;
printf("sum=%d",sum);
return0;
}
编译试图
运行结果
1题目
Sn=a+aa+aaa…….(n个a)现在以为输入N,A求SN
源程序
#include
intmain()
{
inti,s,t,n,a;
scanf("%d,%d",&n,&a);
s=a;
t=a;
for(i=2;i<=n;i++)
{
t=10*t+a;
s+=t;
}
printf("%d",s);
return0;
}
2编译试图
3运行结果
实验四数组与函数
【实验目的】
1、掌握一维和二维数组的定义及应用。
2、掌握一维和二维数组的基本编程技巧。
3、掌握使用函数进行程序设计的方法。
注:
具体实验内容为第6,7章作业,每题要有题目,源程序,C编译系统下的编译示图,C编译系统下的运行结果示图。
【题目一】
输出杨辉三角形
【源程序】
#include
intmain()
{
inta[10][10],i,j;
for(i=0;i<10;i++)
for(j=0;j<=i;j++)
{if(i==j||j==0)
a[i][j]=1;
elsea[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
【C编译系统下的编译示图】
【C编译系统下的运行结果示图】
题目2
有一个已经排好的序的数组民谣求输入一个数后,按原来排序的逆序输出,入8,6,5,4,1输出1,4,5,6,8
源程序
#include
intmain()
{
inta[5]={{8},{6},{5},{4},{1}};
intb[5],i;
for(i=0;i<5;i++)
{printf("%5d",a[i]);
b[4-i]=a[i];
}
printf("\n");
for(i=0;i<5;i++)
{printf("%5d",b[i]);
}
printf("\n");
return0;
}
编译试图
运行结果
题目
输出年月日计算改日是改年的多少天
源程序
#include
intmain()
{
intfind(intx,inty,intz);
intyear,month,date,day;
scanf("%d%d%d",&year,&month,&date);
day=find(year,month,date);
printf("thedateis%dthdays\n",day);
return0;
}
intfind(intx,inty,intz)
{inti,s,t,days=0;
if(x%4==0)t=1;
elset=0;
for(i=1;i{if(i==2)s=2-t;
elses=0;
days+=30+i%2-s;
}
days=days+z;
return(days);
}
编译试图
运行结果
题目
输入10个学生的,5门课程的分数,分别用函数实现下列功能
1.计算每个学生的平均成绩
2.计算每门课的平均成绩
3.找出50个分数的中最高分和分数所对应的成绩
源程序
#include
#defineN10
#defineM5
floatscore[N][M];
floata_stu[N],a_cour[M];
intr,c;
intmain()
{inti,j;
floath;
floats_var(void);
floathighest();
voidinput_stu(void);
voidaver_stu(void);
voidaver_cour(void);
input_stu();
aver_stu();
aver_cour();
printf("\nNO.cour1cour2cour3cour4cour5aver\n");
for(i=0;i{printf("\nNO%2d",i+1);
for(j=0;jprintf("%8.2f",score[i][j]);
printf("%8.2f\n",a_stu[i]);
}
printf("\naverage:
");
for(j=0;jprintf("%8.2f",a_cour[j]);
printf("\n");
h=highest();
printf("highest:
%7.2fNO.%2dcourse%2d\n",h,r,c);
printf("variance%8.2f\n",s_var());
return0;
}
voidinput_stu(void)
{inti,j;
for(i=0;i{printf("\ninputscoreofstudent%2d:
\n",i+1);
for(j=0;jscanf("%f",&score[i][j]);
}
}
voidaver_stu(void)
{inti,j;
floats;
for(i=0;i{for(j=0,s=0;js+=score[i][j];
a_stu[i]=s/5.0;
}
}
voidaver_cour(void)
{inti,j;
floats;
for(j=0;j{s=0;
for(i=0;is+=score[i][j];
a_cour[j]=s/(float)N;
}
}
floathighest()
{floathigh;
inti,j;
high=score[0][0];
for(i=0;ifor(j=0;jif(score[i][j]>high)
{high=score[i][j];
r=i+1;
c=j+1;
}
return(high);
}
floats_var(void)
{inti;
floatsumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0;i{sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}
编译试图
运行结果