第一篇: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);
②:将” ”,”�”,” “几个概念搞混淆,因而在条件判断时出现混乱,导致错误。
3.在做7.1题(用函数实现学生的信息录入及排序)时,遇到了以下几个问题并卡了比较久的时间:
①:运用了错误的输入方式,导致未能的到完整的输入信息或输入过程中直接中断(如下图);
②:刚开始时为采用指针的思想,导致在设计程序时比较繁琐;但应注意在使用完指针p++后,应重新给指针p赋回初值;
总的来讲,编程就是不断在错误和调试中找到想自己的的想法完整表达出来,这一学期的上机实践使我的编程能力有了进一步提高。
第二篇:大一C语言上机实验报告
C语言程序设计实验报告
姓名: 班级: 学号:
实验内容:
编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用三个空格分开)。例如用户输入了42339,屏幕输出结果为:
【提示】巧妙使用 / 和 % 两种运算符。 源代码: #include void main() {
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
%ld ",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 #include void main() { double area,s,a,b,c;
} 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=%lf ",area); } else printf("输入错误,三角形边长不能为负数或0 "); 运行结果:
实验内容:
输入圆的半径,计算出圆的周长和面积 源代码: #include #include void main() {
double r,z,area,pi=3.14159; scanf("%lf",&r); if(r>0)
{
z=2*pi*r; area=pow(r,2)*pi; printf("圆面积为%lf周长为%lf ",area,z); return 0;
} } else printf("输如错误,圆的半径不能为负数或0 "); 运行结果:
实验内容:
• 体型判断。按“体指数”对肥胖程度进行划分:
体指数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 #include int main() {
float w,h; double t; scanf("%f%f",&h,&w); if(w<=0 || h<=0) {
printf("输入错误,身高体重不能为负数或0 "); } {
t=w/pow(h,2);
if(t<18) { printf("低体重 ");
goto loop;
goto loop;
} if(t>=18 && t<25)
{
} if(t>=25 && t<27) {
printf("超重体重 ");
goto loop; } if(t>=27) { printf("正常体重 "); goto loop;
printf("肥胖 ");
} }
loop:return 0; } 运行结果:
算法2:源代码: #include
#include int main() {
float w,h; double t; scanf("%f%f",&h,&w); if(w<=0 || h<=0) {
printf("输入错误,身高体重不能为负数或0 "); } { t=w/pow(h,2); if(t<25) {
if(t>=18) {
} printf("正常体重 "); goto loop; goto loop;
printf("低体重 "); }
if(t>=25) {
if(t<27) {
} printf("超重体重 "); goto loop;
printf("肥胖 "); } }
loop:return 0; } 运行结果:
算法3:源代码: #include #include int main() {
float w,h; double t; scanf("%f%f",&h,&w); if(w<=0 || h<=0) printf("输入错误,身高体重不能为负数或0 "); else {
} t=w/pow(h,2); if(t<18) printf("低体重 "); else {
} if(t>=18 && t<25) printf("正常体重 "); else {
}
if(t>=25 && t<27)
printf("超重体重 "); else printf("肥胖 "); return 0; } 运行结果:
实验内容:
编写一个程序,计算-32768~+32767之间任意整数(由键盘输入)中各位奇数的平方和。 源代码: #include int main() {
} int a,b=0,c=0,i; scanf("%d",&a); for(i=0;i<5;i++) { if(a%2!=0) {
} a/=10; } printf("%d ",b); return 0; c=a%10; b=b+c*c;
运行结果:
实验内容:
设有一四位数abcd=(ab+cd)2,编写一个程序,求a、b、c、d。 源代码: #include #include int main() { int num,a,b,c,d;
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=%d ",a,b,c,d);
实验内容: 鸡兔问题:鸡兔共30只,脚共有90个。编写一个程序,求鸡、兔各多少只。 源代码: #include int main() {
} 运行结果: 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只 ",x,y);
实验内容:
编写一个程序,求S值(n由键盘输入):
(程序检验参考:
x=6.66,n=8时,s=40.955;x=6.66,n=15时,s=-1.511 源代码: #include
#include int main() {
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("%.3f ",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
21 (程序检验参考:x=6.66,n=8时,s= -16.492; x=6.66,n=15时,s=-28.469) 源代码: #include #include int main() {
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("%f ",s);
} return 0; }
运行结果:
x3x5x7x9x,3!5!7!9!
实验内容:
利用泰勒级数sin(x)≈
计算sin(x) 的值。要求最后一项的绝对值小于10-5,并统计出此时累加了多少项。
(程序检验参考:x=6时,sin(x)= -0.279415,count=13) 源代码: #include #include int main() { double jiecheng(int);
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=%d ",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 main() {
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=%d ",way);
return 0; } 运行结果:
实验内容:编程打印以下图案
****** ****** ****** ******
源代码: #include int main() {
int i,j; for(j=1;j<=4;j++) {
for(i=1;i<=4-j;i++)
} { printf(" "); } printf("****** ");
return 0; } 运行结果:
* *** ***** *******
源代码: #include int main() {
int i,j; for(j=1;j<=4;j++)
{
for(i=1;i<=2*j-1;i++)
} printf("*"); printf(" "); return 0; } 运行结果:
*
* * * * * * * * * * * * * * * * * * * *
* * * * 源代码: #include int main() {
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(" "); } return 0; } 运行结果:
实验内容:
输出下三角形乘法九九表
9 -------- 1 2
4 3
9 4
8 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 int main() { int i,j,k; printf(" 1
8 printf(" -------- "); for(i=1;i<10;i++) {
9 ");
for(j=1;j<=i;j++)
{
printf(" %d ",k=i*j);
}
printf(" "); } return 0; }
运行结果:
第三篇:C语言程序设计上机实验报告
黔南民族师范学院 C语言程序设计上机实验报告
系部:计算机科学系 年级:2013 级 班级:
姓名:
学号:
实验时间:
实验成绩:
2013年月日
实验三顺序结构程序的设计
一 实验名称:顺序结构程序的设计
二.实验环境:windows XP系统,VC++6.0软件
三.实验目的:
四.实验内容:
五.算法描述流程图
六.源程序
七.测试数据及运行结果
八.实验心得
实验成绩评分要求
1、原创性发现抄袭或雷同成绩为0分
2、正确性程序正确60分
3、可读性格式清楚,有注释,变量命名规范20分
4、健壮性对特殊测试数据有考虑有测试10分
5、效率程序运行效率高10分
第四篇:VC6.0上机指导--- C语言实验讲义
实验一
简单的C程序设计和基本数据处理
实验目的:
1. 掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。
2. 通过编程进一步理解和掌握运算符的确切含义和功能。 3. 理解和掌握运算符与运算对象的关系,优先级和结合方向。
1. 通过编程,掌握C语言的几种基本数据类型,int、char、flloat、double,以及由这些基本数据类型构成的常量和变量的使用方法。
2. 掌握基本输入/输出函数的使用方法,包括printf()、scanf()、getchar()、putchar()。 3. 掌握简单的C程序的查错方法。 实验内容:
一、输入程序,观察输出结果,并对语句做必要的注释。 1./* e1.c */ #include void main() {
int x;
x=27
printf("%4d,%o,%X ",x,x,x); }
输出结果:
解释:
2./* e2.c */ #include void main() {
char ch;
int k;
ch=’a’;k=10;
printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k);
printf(“k=%%d ”,k);
} 输出结果:
解释:
3./* e4.c */ #include void main() {
float x=5/2,y=5.0/2;
printf("x=%f,y=%f ",x,y); } 输出结果:
解释:
1
二、编写程序。
1. 编程(c1.c)任意输入3个整型变量x,y,z和一个实型变量avg,计算并输出3个整数的平均值avg,从键盘输入数据并验证结果。观察运行结果。 源程序:
输出结果: 解释:
2. 输入两个个整数给a,b,然后交换它们的值,
源程序:
输出结果:
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
2 实验二
选择结构程序设计与循环结构程序设计
实验目的
1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
2、学会正确使用逻辑运算符和逻辑表达式;理解循环条件和循环体
3、熟练掌握if语句和switch语句;熟练使用while、do-while语句实现循环程序设计
4、熟练掌握switch语句中break语句的作用。 实验内容
1 编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3. 输入输出示例:
输入一个整数:12345 12345有5位数,各位数字之和是15 提示:n表示一个整数,则n%10取个位数,n=n/10去掉个位数,组成一个新数。 思考:如果要把每位数字转换为字符输出,如何编程。
3. 改错,输入2个正整数,分别将其逆向输出。 输入输出示例: 123的逆向是321 321的逆向是123 void main() {
int n,m=0;
scanf(“%d”,n);
while (n>0)
{ m=m+n%10;
m=m*10;
n=n/10; }
printf(“%d的逆向是%d ”,n,m); }
4. 编程,找出200以内的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,如6=1+2+3,其中
1、
2、3为因子,6为因子和。 输入输出示例: 1=1 6=1+2+3 28=1+2+4+7+14 main() { int i,j n; printf();} 实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验三
数组
实验目的
1.熟练掌握数组的定义和初始化 2.熟练掌握使用数组元素的引用 3.继续掌握排序算法 实验内容
2.编程,输入1个正整数n(1
输入输出示例: 输入整数个数:5 输入5个整数:5 2 1 10 9
1 2 5 9 10 提示:注意下标的变化。
思考:如果输入的是实数,要求将绝对值最小的数与第1个数交换,绝对值最大的数与最后1个数交换,然后输出交换后的n个数,如何编程。
3.编程,输入1个正整数n(1
输入输出示例: 输入整数个数:10 输入10个整数:-11 2 8 5 -3 -16 9 7 6 10 排序后:2 -3 5 6 7 8 9 10 -11 -16
5.编程,输入一个n行m列(n<=4,m<=4)的数组,先以n行m列的格式输出该数组,然后找出该数组中值最小的元素,输出该元素及其行下标和列下标。
输入输出示例:
输入数组行和列数n、m:2 3 输入2行3列的数组元素: 12 -7 15 -18 9 11 12.00 -7.00 15.00 -18.00 9.00 11.00 a[1][0]=-18.00 思考:
1)如果不从键盘输入数组元素,而是用初始化的方式给数组赋值,运行结果一样吗? 2)如何修改程序,求绝对值最大的元素?
3)将数组a的每一行均除以该行的主对角元素,然后最大值,试编制程序。
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
第五篇:C语言上机实习报告
一、实验目的
1.能够描述VC++6.0开发平台的使用过程,学会运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
2.能够使用算术表达式和赋值表达式书写正确的语句。 3.能够使用输入/输出函数编写简单的程序。
二、实验环境
(调试程序所使用的软硬件环境) 软件环境:VC++6.0 硬件环境:宏基
Intel 奔4 主频 2.8GHz,内存256MB
三、实验内容、结果及分析
1、题目1)求华氏温度150°F对应的摄氏温度。计算公式如下: 55cf32
99
其中:c表示摄氏温度,f表示华氏温度。 源程序清单:(调试好的源程序代码) // work1.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include using namespace std; int main(int argc, char* argv[]) {
} 主要标识符说明:(源程序中主要标识符含义说明) Double为双精度类型变量名表
实验结果:(程序运行结果) double f,c; cout<<"输入华氏温度,按Enter执行"<>f; c=5*(f-32)/9.0; cout<<"华氏温度为"<
实验中遇到的问题及解决的方法 源代码的粘贴出现乱码
解决:从Cpp文件中粘消除格式。
2、题目
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
源程序清单:(调试好的源程序代码) // work2.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include using namespace std; int main(int argc, char* argv[]) {
double a,b,c,average; cout<<"请按顺序输入数学、英语、计算机三科成绩。"<>a>>b>>c; average=(a+b+c)/3.0; cout<<"数学"<
实验中遇到的问题及解决的方法
3、题目
当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。
源程序清单:(调试好的源程序代码) // work3.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include using namespace std; int main(int argc, char* argv[]) {
int n,digit1,digit2,digit3; cout<<"请输入一个三位数n(100﹏999)"<>n; digit1=n%10;
//求个位数字 digit2=n/10%10;
//求十位数字 digit3=n/100%10;
//求百位数字
cout<<"个位数字(digit1)"<
实验中遇到的问题及解决的方法
四、实验体会(心得、收获)
C语言对我们来说是一个崭新的学科。我想学习C语言就像学习其他学科一样,需要我们用心的去学习。它也是我们交流的一种新的方式。只不过是人机之间的。随着科学的进步,与社会的发展,计算机显得尤为重要。C语言又是学习计算机的基础,所以我们更应该该好好的学习C语言。 通过这节实验课,我们学到了如何运用6.0来编辑代码,运行我自己编写的程序。虽然过程中会有错误,但在这犯错的过程中我学到了我所不知道的。在这纠错的过程中,我来了解到我还有很多的地方不足。如忘记写分号等。其实就错就是个学习的过程。
对于实验上的问题,如粘源代码时,就应先用记事本打开源代码,就可以。而不是在程序中直接粘,这样就不会出现乱码。还有,就是注意小处的错误,如分号和注意换行的使用。