第一篇:c语言上机实验报告
C语言上机实验报告
2160500146 计算机66马俊松
在本学期,共进行了大约五次上机,完成了数十道编程题,现将在完成作业过程中所遇到的问题以及解决过程进行如下几点总结,并提出几点建议。
1.在刚开始那几次做编程作业时,经常因为只是输出时的格式不符合moodle上的要求而的零分,因而不断修改,浪费大量时间,希望今后moodle网站能在这一点上做出改进(如果过程正确而只是输出格式错误,可以不必给零分)。比如下面几个题:
2.在做6.1题(找出一句话中最长的子字符串)的过程中,因为字符数组的知识未掌握牢固,在以下几个方面卡了比较久:
①:字符串在输入时,若用scanf(”%s”,a),则只会得到第一个单词;若用for(i=1;i<=n;i++)scanf(“%c”,a[i]),则循环会一直持续知道输入n个字符;若希望将整句话输入,应用gets(a);
②:将”n”,””,” “几个概念搞混淆,因而在条件判断时出现混乱,导致错误。
3.在做7.1题(用函数实现学生的信息录入及排序)时,遇到了以下几个问题并卡了比较久的时间:
①:运用了错误的输入方式,导致未能的到完整的输入信息或输入过程中直接中断(如下图);
②:刚开始时为采用指针的思想,导致在设计程序时比较繁琐;但应注意在使用完指针p++后,应重新给指针p赋回初值;
总的来讲,编程就是不断在错误和调试中找到想自己的的想法完整表达出来,这一学期的上机实践使我的编程能力有了进一步提高。
第二篇:大一C语言上机实验报告
C语言程序设计实验报告
姓名: 班级: 学号:
实验内容:
编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用三个空格分开)。例如用户输入了42339,屏幕输出结果为:
【提示】巧妙使用 / 和 % 两种运算符。源代码: #include
long int num,a,b,c,d,e;
scanf(“%ld”,&num);a=num/10000;b=num%10000/1000;c=num%1000/100;d=num%100/10;e=num%10;printf(“%ld
%ld
%ld
%ld
%ldn”,a,b,c,d,e);}
运行结果:
实验内容:
已知三角形三边a,b,c,计算三角形的面积。
注:三角形面积公式为area=[s(s-a)(s-b)(s-c)]的1/2次幂
S=1/2*(a+b+c)源代码: #include
} scanf(“%lf%lf%lf”,&a,&b,&c);s=(a+b+c)/2;if(a>0 && b>0 && c>0){ area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%lfn”,area);} else printf(“输入错误,三角形边长不能为负数或0n”);运行结果:
实验内容:
输入圆的半径,计算出圆的周长和面积 源代码: #include
double r,z,area,pi=3.14159;scanf(“%lf”,&r);if(r>0)
{
z=2*pi*r;area=pow(r,2)*pi;printf(“圆面积为%lf周长为%lfn”,area,z);return 0;
} } else printf(“输如错误,圆的半径不能为负数或0n”);运行结果:
实验内容:
• 体型判断。按“体指数”对肥胖程度进行划分:
体指数t = 体重w /(身高h)2
(w 单位为公斤,h单位为米)
– 当t < 18时,为低体重;
– 当t介于18和25之间时,为正常体重; – 当t介于25和27之间时,为超重体重; – 当t >= 27时,为肥胖。
• 编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。• 用3种方法编程:
– 算法1:用不带else子句的if语句编程
– 算法2:用在if子句中嵌入if 语句的形式编程
– 算法3:用在else子句中嵌入if 语句的形式编程
算法1:源代码: #include
float w,h;double t;scanf(“%f%f”,&h,&w);if(w<=0 || h<=0){
printf(“输入错误,身高体重不能为负数或0n”);} {
t=w/pow(h,2);
if(t<18){ printf(“低体重n”);
goto loop;
goto loop;
} if(t>=18 && t<25)
{
} if(t>=25 && t<27){
printf(“超重体重n”);
goto loop;} if(t>=27){ printf(“正常体重n”);goto loop;
printf(“肥胖n”);
} }
loop:return 0;} 运行结果:
算法2:源代码: #include
#include
float w,h;double t;scanf(“%f%f”,&h,&w);if(w<=0 || h<=0){
printf(“输入错误,身高体重不能为负数或0n”);} { t=w/pow(h,2);if(t<25){
if(t>=18){
} printf(“正常体重n”);goto loop;goto loop;
printf(“低体重n”);}
if(t>=25){
if(t<27){
} printf(“超重体重n”);goto loop;
printf(“肥胖n”);} }
loop:return 0;} 运行结果:
算法3:源代码: #include
float w,h;double t;scanf(“%f%f”,&h,&w);if(w<=0 || h<=0)printf(“输入错误,身高体重不能为负数或0n”);else {
} t=w/pow(h,2);if(t<18)printf(“低体重n”);else {
} if(t>=18 && t<25)printf(“正常体重n”);else {
}
if(t>=25 && t<27)
printf(“超重体重n”);else printf(“肥胖n”);return 0;} 运行结果:
实验内容:
编写一个程序,计算-32768~+32767之间任意整数(由键盘输入)中各位奇数的平方和。源代码: #include
} int a,b=0,c=0,i;scanf(“%d”,&a);for(i=0;i<5;i++){ if(a%2!=0){
} a/=10;} printf(“%dn”,b);return 0;c=a%10;b=b+c*c;
运行结果:
实验内容:
设有一四位数abcd=(ab+cd)2,编写一个程序,求a、b、c、d。源代码: #include
for(num=1000;num<=9999;num++){
a=num/1000;
} 运行结果:
} return 0;b=num%1000/100;c=num%100/10;d=num%10;if(num==pow((10*a+b+10*c+d),2))printf(“a=%db=%dc=%dd=%dn”,a,b,c,d);
实验内容: 鸡兔问题:鸡兔共30只,脚共有90个。编写一个程序,求鸡、兔各多少只。源代码: #include
} 运行结果: int x,y;for(x=0;x<=45;x++){
} return 0;for(y=0;y<=22;y++)if(x+y==30 && 2*x+4*y==90)printf(“鸡有%d只,兔有%d只n”,x,y);
实验内容:
编写一个程序,求S值(n由键盘输入):
(程序检验参考:
x=6.66,n=8时,s=40.955;x=6.66,n=15时,s=-1.511 源代码: #include
#include
double jiecheng(int);
double s=0,x=6.66;
} double jiecheng(int x){
} double f;if(x==0||x==1)f=1;int n,i;scanf(“%d”,&n);for(i=1;i<=n;i++){ } printf(“%.3fn”,s);return 0;s=s+pow(-1,i)*pow(x,i)/jiecheng(i);else f=jiecheng(x-1)*x;return f;
运行结果:
实验内容:
编写一个程序,求前 n 项之和S值,其中 n≥1,x ≠ 0。(n由键盘输入):
2x
5x
13x
S = ── ── +
──-── +...2x
5x
13x(程序检验参考:x=6.66,n=8时,s=-16.492;x=6.66,n=15时,s=-28.469)源代码: #include
int a=1,b=2,n,i,t=0;
double s=0,x;
scanf(“%lf%d”,&x,&n);
if(n>=1)
{
for(i=1;i<=n;i++)
{ if(i%2)
{
s+=pow(-1,i+1)*a/(b*x);
t=a;
a=b;
b=t+b;
}
else
{
s+=pow(-1,i+1)*a*x/b;
t=a;
a=b;
b=t+b;
}
}
printf(“%fn”,s);
} return 0;}
运行结果:
x3x5x7x9x,3!5!7!9!
实验内容:
利用泰勒级数sin(x)≈
计算sin(x)的值。要求最后一项的绝对值小于10-5,并统计出此时累加了多少项。
(程序检验参考:x=6时,sin(x)=-0.279415,count=13)源代码: #include
double s=0,x;
int i,count=0;scanf(“%lf”,&x);for(i=1;;i+=2){
} s+=pow(-1,count)*pow(x,i)/jiecheng(i);count+=1;if(fabs((pow(x,i)/jiecheng(i)))
} printf(“sin(x)=%f count=%dn”,s,count);return 0;double jiecheng(int i){
} 运行结果: double f;if(i==0||i==1)f=1;else f=jiecheng(i-1)*i;return f;
实验内容:
三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配? 源代码: #include
int i,j,k,way=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
for(k=0;k<=6;k++)
{
if(i+j+k==8)
way=way+1;
}
}
}
printf(“way=%dn”,way);
return 0;} 运行结果:
实验内容:编程打印以下图案
****** ****** ****** ******
源代码: #include
int i,j;for(j=1;j<=4;j++){
for(i=1;i<=4-j;i++)
} { printf(“ ”);} printf(“******n”);
return 0;} 运行结果:
* *** ***** *******
源代码: #include
int i,j;for(j=1;j<=4;j++)
{
for(i=1;i<=2*j-1;i++)
} printf(“*”);printf(“n”);return 0;} 运行结果:
*
* * * * * * * * * * * * * * * * * * * *
* * * * 源代码: #include
int i,j,m,n;for(j=1;j<=7;j++){
if(i<5)
{ } else { m=j-4;n=(15-2*j);m=4-j;n=2*j-1;
}
for(i=1;i<=m;i++)
printf(“ ”);
for(i=1;i<=n;i++)printf(“*”);
printf(“n”);} return 0;} 运行结果:
实验内容:
输出下三角形乘法九九表--------1 2 3 4 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 源代码: #include
9n”);
for(j=1;j<=i;j++)
{
printf(“ %d ”,k=i*j);
}
printf(“n”);} return 0;}
运行结果:
第三篇:C语言上机实验报告_书写格式
实验报告
课程名称 _____C语言程序设计____ 实验项目 _实验一 顺序结构程序设计___ 实验仪器 ______ ___________
系别_____光电学院_______ 专业______电信__________ 班级/学号 学生姓名 ______***_________实验日期 ____2011年10月17日___ 成绩 _______________________指导教师
一、实验目的1、掌握C语言中,基本的输入输出函数的使用方法。
2、掌握printf中转义字符’t’,’n’的用法。
3、掌握赋值语句的用法。
4、掌握算术表达式、赋值表达式的计算。
5、掌握数学函数的使用。
二、实验内容
1、输入圆的半径 r,计算圆的周长和面积。其中 π =3.1416程序代码:
……
执行结果:
[输入] ……
[输出] ……
2、3、……
三、实验体会
……(实验中遇到的问题及解决办法以及一些心得都可以写)
第四篇:上机实验报告格式
请各位同学按照下列格式写:否则按照0分记
上机实验报告格式
Matlab学习第?次上机实验报告(第?次)
姓名:???班级:???上机时间:??????
1.上机内容
2.建模及算法分析
3.程序
4.小结
5.参考文献
将文档发到我的邮箱里面
learn_matlab@163.com
第五篇:上机实验报告
一. 题目1. 建立一个学生档案,内容包括学号,姓名,年龄,性别,数学,物理和英语3门功课成绩。要求实现以下功能:1)数据输入;2)查询某个学生的成绩;3)按平均排列输出;4)统计某门课各分数段人数;5)删除某个学生记录;2. 编程实现对二位数进行加,减,乘运算,每运行一次程序做10道题,完成后给出成绩(每题10分)。二. 设计思想和模块划分1.1.先定义所需要的条件,例如,姓名,学号,性别,三门功课的成绩,平均分等。2.输入姓名,学号,性别,年龄,三门功课的成绩后,就输出相应的姓名,学号,性别,年龄,三门功课的成绩。3.打印表头;4.在求出平均分,并打印出平均分。5.在查找学生,并打印出学生的相关资料;并按照平均分的高低排列;6.在统计学生各科成绩是否》=60分,如果是就是通过,否就是没通过,最后打印出最后的结果。7.删除学生,选中删除的学生,如果确定要,那么该学生的一切记录就变为0;2.1.随机调用函数,产生两个其值为10到99的随机整数分别放在c,d中用作运算时的运算数。2.随机调用函数,产生一个值为1到3 的随机整数放入b中,用来选择不同的运算。根据b的值选择不同的运算。当b=1时,去进行c+d的运算练习;当b=2 时,去进行c-d的运算练习;当b=3时,去进行c×d的运算练习。每完成一个算题就给出是否正确的信息。3.根据答案正确与否统计。正确时,显示’right’;错误时,显示’wrong’。4.步骤1.2.3.4.重复10次。5.输出学生成绩。三. 运行结果1.Input the 1 student :num:03name:wfage:18sex:fmath:98phy:75eng:65Input the 2 student :num:06name:scage:17sex:fmath:78phy:45eng:65Input the 3 student :num:09name:ytage:17sex:mmath:69phy:75eng:501.readin 2.finds 3.del 4.tj 5.exit1-----------------------------table----num name age sex math phy eng ave------3 wf 18 f 98.0 75.0 65.0 79.3------9 yt 17 m 69.0 75.0 50.0 64.7-------6 sc 17 f 78.0 45.0 65.0 62.7-------1.readin 2.finds 3.del 4.tj 5.exit2Into number:3---num name age sex math phy eng ave---3 wf 18 f 98.0 75.0 65.0 79.3----1.readin 2.finds 3.del 4.tj 5.exit3Into number:6---num name age sex math phy eng ave---6 sc 17 f 78.0 45.0 65.0 62.6---true? Y/Ny1----------------table------------------num name age sex math phy eng ave----3 wf 18 f 98.0 75.0 65.0 79.3-----9 yt 17 m 69.0 75.0 50.0 64.7-----0 0 0 f 0.0 0.0 0.0 0.0-----1.readin 2.finds 3.del 4.tj 5.exit4 1.input the math 2.input the phy 3.input the eng 1math: pass num is :3 no pass num is :02.32+82=114right!97*15=1455right!99-58=41right!76-66=10right!58+13=71right!37+49=86right!99+52=151right!49*69=5462wrong!73-38=31wrong!86+34=120right!mark is 80四. 主要错误改正方法1.在本题的编写过程中常出现begin 和end 不配对,只要始它们的个数相同就可以了,就可以了。在程序中常出现的’unknown identifier’没有定义的错误,只要在程序前加上定义,就可以了。还有就是type mismatch’的类型不匹配,只要根据前后内容,重新定义,就可以了。2.在本题编写中,题目要求是两个两位数运算,如果写成c:=random(100)在运行过程中,就会出现一位数运算,只要把它写成c:=random(90)+10,就可以了。五. 实习小结1.第一题的程序编写比较复杂,需要较多的定义,因而在后面的程序部分,就常出现标识符重复,而导致的类型不匹配。还有就是每个部分编好后,上下不能连接,而无法调用。2.第二题较第一题简单,和书上的例题类似,所以,比较简单,但从中也出现一些不问题。以上两大题中出现的问题,要在同学的帮助下,才能完成。总的来说两题程序比较困难六. 程序清单1.program twins;const m=3;n=3;typestudent=recordnum:integer;name:string[3];age:integer;sex:char;s:array[1..n] of real;math,eng,phy:real;ave:real;end;sarr=array[1..m] of student;ta=array [1..m] of student;f=string[6];varstu:sarr;ct:ta;k,d:integer;procedure readin(var stu:sarr);const wrong='0<=data<=100 ,again!';var j,i:integer;a:student;beginwriteln;writeln('Input ',m,' num name sex math phy eng',' of student.');for j:=1 to m dobeginwriteln;writeln('Input the ',j,' student :');with a dobeginwrite('num:');readln(num);write('name:');readln(name);write('age:');readln(age);write('sex:');readln(sex);while(sex<>'m')and(sex<>'f')dobeginwrite('sex:');readln(sex)end;for i:=1 to n do begincase i of1:begin write('math:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('math:');readln(s[i]);end;end;2:begin write('phy:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('phy:');readln(s[i]);end;end;3:begin write('eng:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('eng:');readln(s[i]);end;end;end;end;stu[j]:=a;end;writeln;end;end;procedure ave(var stu:sarr);var j,i:integer;k:real;beginfor j:=1 to m dobegink:=0;with stu[j] dobeginfor i:=1 to n do k:=k+s[i];ave:=k/nend;end;end;procedure px(var stu:sarr);var tm:ta;j,i,p:integer;beginfor j:=1 to m dobeginp:=j;for i:=j+1 to m doif stu[i].ave>stu[p].ave then p:=i;tm[1]:=stu[p];stu[p]:=stu[j];stu[j]:=tm[1];end;end;procedure head(ct:ta);var i:integer;beginwrite(' ');for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' ');for i:=1 to 72 do write('-');writeln;with ct[1] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7,' ');write(ave:10,' ');writeln;end;write(' ');for i:=1 to 72 do write('-');writeln;end;procedure find(var stu:sarr);var n,i:integer;u:boolean;beginu:=true;while u dobeginwrite('Into number:');readln(n);for i:=1 to m dobeginif stu[i].num=n then beginct[1]:=stu[i];u:=false;d:=iend;end;end;end;procedure del(var stu:sarr);var i:integer;b:char;beginhead(ct);write('true? Y/N');readln(b);if b='y' then begin write('1');with stu[d] dobeginnum:=0;name:='0';age:=0;sex:='f';for i:=1 to n do s[i]:=0;ave:=0end;endelseend;procedure tj(var stu:sarr);var w1,q1,q2,num,j:integer;h1,h2,h3:boolean;beginh1:=false;h2:=false;h3:=false;q1:=0;q2:=0;writeln(' ':30,'1.input the math 2.input the phy 3.input the eng ');readln(w1);case w1 of1:h1:=true;2:h2:=true;3:h3:=true;end;if h1 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].math>=60 thenq1:=q1+1elseq2:=q2+1;writeln('math:');end;if h2 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].phy>=60 thenq1:=q1+1elseq2:=q2+1;writeln('phy:');end;if h3 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].eng>=60 thenq1:=q1+1elseq2:=q2+1;writeln('eng:');end;end;end;end;writeln(' ':5,'pass num is :',q1);writeln(' ':5,'no pass num is :',q2);end;procedure head1(var stu:sarr);var j,i:integer;beginwriteln('----------------table--------------':60);writeln;write(' ');for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' ');for i:=1 to 72 do write('-');writeln;for j:=1 to m do beginwith stu[j] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7:1,' ');write(ave:10:1,' ');writeln;end;write(' ');for i:=1 to 72 do write('-');writeln;end;end;beginreadin(stu);ave(stu);k:=0;while k<>5 dobeginwriteln('1.readin 2.finds 3.del 4.tj 5.exit');read(k);readln;while(k<>1)and(k<>2)and(k<>3)and(k<>4)and(k<>5)dobeginwriteln(' mistake,please again');read(k)end;case k of1: begin px(stu);head1(stu)end;2: begin find(stu);head(ct)end;3: begin find(stu);del(stu);px(stu);head1(stu)end;4: begin tj(stu);end;5: writeln('exit!');end;end;end..2.program shadow;var a,b,c,d,e:integer;right:boolean;procedure s1;beginwriteln('right!');right:=trueend;procedure s2;beginwriteln('wrong!');right:=falseend;procedure s3(x,y:integer);var h:integer;beginwrite(x,'+',y,'=');readln(h);if h=x+y then s1else s2 end;procedure s4(x,y:integer);var h,w:integer;beginif x