C语言实验报告.docx
- 文档编号:25868604
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:29
- 大小:118.57KB
C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(29页珍藏版)》请在冰豆网上搜索。
C语言实验报告
电子信息工程学院《C语言程序设计》实验报告
姓名:
潘美娟学号:
222013314011016
实验序号:
第3次实验
实验名称:
最简单的C程序设计—顺序程序设计
实验目的:
(1)掌握C语言中使用最多的一种语句—赋值语句的使用方法;
(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符;
(3)进一步掌握编写程序和调试程序的方法。
实验内容:
(1)通过下面的程序掌握各种格式转换符的正确使用方法;
①输入以下程序:
#include
intmain()
{inta,b;
doubled,e;
charc1,c2;
doublef,g;
longm,n;
unsignedintp,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3157.890121;g=0.123456789;
m=50000;n=-40000;
p=32768;q=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,q,m,n,p,q);
}
②运行此程序并分析结果。
③在此基础上,将程序第10~14行改为
c1=a;c2=b;
f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
运行程序,分析结果。
代码:
sizeof(int)=4
sizeof(float)=4;
sizeof(double)=8;
sizeof(char)=1;
char*p;
sizeof(p)=4;
sizeof(long)=4;
sizeof(unsignedint)=4;
运行结果:
②
③
④用sizeof运算符分别检测程序中各类型的数据占多少字节。
例如,int型变量a的字节数为sizeof(a)或sizeof(int),用printf函数语句输出各类型变量的长度(字节数)
代码:
sizeof(int)=4
sizeof(float)=4;
sizeof(double)=8;
sizeof(char)=1;
char*p;
sizeof(p)=4;
sizeof(long)=4;
sizeof(unsignedint)=4;
(2)设圆的半径r=1.5,圆柱高h=3,求圆周长,圆面积,园球表面积,圆球体积、圆柱体积。
编程序,用scanf输入数据,输出计算结果。
输出时要有文字说明,取小数点后两位数字。
代码:
#include
intmain()
{floath,r,l,s,sq,vq,vz;
floatpi=3.141526;
printf("请输入圆半径r,圆柱高h∶");
scanf("%f,%f",&r,&h);//要求输入圆半径r和圆柱高h
l=2*pi*r;//计算圆周长l
s=r*r*pi;//计算圆面积s
sq=4*pi*r*r;//计算圆球表面积sq
vq=3.0/4.0*pi*r*r*r;//计算圆球体积vq
vz=pi*r*r*h;//计算圆柱体积vz
printf("圆周长为:
l=%6.2f\n",l);
printf("圆面积为:
s=%6.2f\n",s);
printf("圆球表面积为:
sq=%6.2f\n",sq);
printf("圆球体积为:
v=%6.2f\n",vq);
printf("圆柱体积为:
vz=%6.2f\n",vz);
return0;
}
(实验运行结果)
结果说明:
任意输入圆半径r和圆柱高h,均可自动得到上述五个值。
(3)题目:
计算存款利息。
有1000元,想存5年,可按以上5种办法存:
①一次存5年期。
②先存2年期,到后期将本息再存3年期。
③先存3年期,到期后将本息再存2年期。
④先存1年期,到期后将本息再存1年期,连续存5次。
存活期存款。
活期利息每一季度结算一次。
银行存款利率:
中国银行2015年最新利率表
(一)活期存款0.35
(二)定期存款
1.整存整取
三个月
2.2.35
六个月
2.55
一年
2.75
两年
3.25
五年
4.00
代码:
#include
#include
intmain()
{floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;
p=1000;
r5=0.040;
r3=0.0375;
r2=0.0325;
r1=0.0275;
r0=0.0035;
p1=p*((1+r5)*5);//一次存5年期
p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);//存活期存款。
活期利息每一季度结算一次
printf("p1=%f\n",p1);//输出按第1方案得到的本息和
printf("p2=%f\n",p2);//输出按第2方案得到的本息和
printf("p3=%f\n",p3);//输出按第3方案得到的本息和
printf("p4=%f\n",p4);//输出按第4方案得到的本息和
printf("p5=%f\n",p5);//输出按第5方案得到的本息和
return0;
}
运算结果:
结果说明:
p1输出按第1方案得到的本息和为5200
p2输出按第2方案得到的本息和为1184.8
p3输出按第3方案得到的本息和为1184.8
p4输出按第4方案得到的本息和为1455.8
p5输出按第5方案得到的本息和为1017.6
(4)题目:
编程序将“china”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。
因此,“china”应译为“glmre”。
请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为‘C’,’h’,‘i’,‘n’,‘a’,经过运算使c1,c2,c3,c4,c5分别变为‘C’,’h’,‘i’,‘n’,‘a’。
分别用putchar函数和printf函数输出这5个字符。
①输入事先已编好的程序,并运行改、该程序。
分析是否符合要求。
②改变c1,c2,c3,c4,c5的初值为‘T’,’O’,’d’,’a’,’y’,对译码规律作如下补充:
‘W’用‘A’代替,‘X’用‘B’代替,‘Y’用‘C’代替,‘Z’用‘D’代替。
修改程序并运行。
③将译码规律修改为:
将一个字母被它前面第4个字母代替,例如‘E’用‘A’代替,’Z‘用’U‘代替,用’D‘代替’Z‘,’C‘用’Y‘代替,’B‘用’X‘代替,’A‘用’V‘代替。
修改程序并运行。
代码:
①#include
intmain()
{charc1='C',c2='h',c3='i',c4='n',c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("passworis%c%c%c%c%c\n",c1,c2,c3,c4,c5);
return0;
}
②#include
intmain()
{charc1='T',c2='o',c3='d',c4='a',c5='y';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("passworis%c%c%c%c%c\n",c1,c2,c3,c4,c5);
return0;
}
③#include
intmain()
{charc1='e',c2='z',c3='d',c4='y',c5='b'c6='a';
c1=c1-4;
c2=c2-4;
c3=c3-4;
c4=c4-4;
c5=c5-4;
c6=c6-4;
printf("passworis%c%c%c%c%c%c\n",c1,c2,c3,c4,c5,c6);
return0;
}
运行结果:
①
结果说明:
程序使得China→Glmre
②
结果说明:
程序使得Today→Xshec
③
结果说明:
程序使得China→Xshec
实验总结:
①第一个程序运行时,一直报错,分析原因有程序本身的单词拼写错误和数据类型不符,经过修改,运行出正确结果;
②程序输入不熟悉,容易输错,经过不断调试,才运行出结果;
③编程序真的很费劲,每个算法需好好斟酌。
实验序号:
第4次实验
实验名称:
选择结构程序设计
实验目的:
(1)了解C语言表示的逻辑量的方法(以0代表“假”,以非0代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if语言的使用(包括if语言的嵌套)。
(4)熟练掌握分支选择语句—switch语句。
(5)结合程序掌握一些简单的算法。
(6)进一步学习调试程序的方法。
实验内容:
第一题:
有一函数:
写程序,输入y相应的值。
用scanf函数输入x的值,求y值。
运行程序,输入x的值(分别为x<1、1<=x<10、x>=10这3种情况),检查输出的y值是否正确。
代码:
#include
intmain()
{intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)/*x<1*/
{y=x;
printf("x=%3d,y=x=%d\n",x,y);
}
elseif(x<10)/*1= {y=2*x-1; printf("x=%d,y=2*x-1=%d\n",x,y); } else/*x>=10*/ {y=3*x-11; printf("x=%d,y=3*x-11=%d\n",x,y); } return0; } 运行结果: ① 结果说明: 输入x=-6,(-6<1),得到y=x=-6; ② 结果说明: 输入x=4,(0≦4<10),得到y=2*x-1=7; ③ 结果说明: 输入x=25,(25≧10),得到y=3*x-11=64; 第二题: 从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。 要求在输入数据后先对其进行检查是否小于1000的正数。 若不是,则要重新输入。 代码: #include #include #defineM1000 intmain() { inti,k; printf("请输入一个小于%d的整数i: ",M); scanf("%d",&i); if(i>M) {printf("输入的数不符合要求,请重新输入一个小于%d的整数i: ",M); scanf("%d",&i); } k=sqrt(i); printf("%d的平方根的整数部分是: %d\n",i,k); return0; } 运行结果: 结果说明: 运行结果显而易见; 第三题: 给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。 90分以上为A,81—89分为B,70-79分为C,60-69分为D,60分以下为E。 ①事先编好程序,要求分别用if语句和switch语句来实现。 运行程序,并检查结果是否正确。 ②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100小于0时,通知用户“输入数据错”,程序结束。 代码: #include intmain() {floatscore; chargrade; printf("请输入学生成绩: "); scanf("%f",&score); while(score>100||score<0) {printf("\n输入有误,请重输"); scanf("%f",&score); } switch((int)(score/10)) {case10: case9: grade='A';break; case8: grade='B';break; case7: grade='C';break; case6: grade='D';break; case5: case4: case3: case2: case1: case0: grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score,grade); return0; } 运行结果: 第四题: 输入4个整数,要求按由小到大顺序输出。 在得到正确结果后,修改程序使之按由大到小顺序输出。 代码: ① #include intmain() {inta,b,c,d,t; printf("请输入四个数: "); scanf("%d,%d,%d,%d",&a,&b,&c,&d); printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(a>d) {t=a;a=d;d=t;} if(b>c) {t=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} printf("排序结果如下: \n"); printf("%d%d%d%d\n",a,b,c,d); return0; } ②修改后的程序: #include intmain() {inta,b,c,d,t; printf("请输入四个数: "); scanf("%d,%d,%d,%d",&a,&b,&c,&d); printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d); if(a {t=a;a=b;b=t;} if(a {t=a;a=c;c=t;} if(a {t=a;a=d;d=t;} if(b {t=b;b=c;c=t;} if(b {t=b;b=d;d=t;} if(c {t=c;c=d;d=t;} printf("排序结果如下: \n"); printf("%d%d%d%d\n",a,b,c,d); return0; } 运行结果: ① 修改后运行的结果 实验总结: 本次实验的问题大都是数学问题,思路比较清楚,但调试程序比较麻烦,对printf语句不是很熟悉。 实验序号: 第5次实验 实验名称: 循环结构程序设计 实验目的: (1)熟练掌握用while语句、do……while语句实现循环的方法。 (2)掌握在程序中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调式程序。 实验内容: 第一题: 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符个数。 代码: ①#include intmain() { charc; intletters=0,space=0,digit=0,other=0; printf("请输入一行字符: \n"); while((c=getchar())! ='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; elseif(c=='') space++; elseif(c>='0'&&c<='9') digit++; else other++; } printf("字母数: %d\n空格数: %d\n数字数: %d\n其它字符数: %d\n",letters,space,digit,other); return0; } ② #include intmain() { charc; intcapital=0,lowercase=0,space=0,digit=0,other=0; printf("请输入一行字符: \n"); while((c=getchar())! ='\n') { if(c>='A'&&c<='Z') capital++; elseif(c>='a'&&c<='z') lowercase++; elseif(c=='') space++; elseif(c>='0'&&c<='9') digit++; else other++; } printf("大写: %d\n小写: %\n空格数: %d\n数字数: %d\n其它字符数: %d\n",capital,lowercase,space,digit,other); return0; } 运行结果: ① 修改后运行的结果 第二题: 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。 例如: 153是一水仙花数,因为153=1^3+5^3+3^3. 代码: #include intmain() { inti,j,k,n; printf("parcissusnumbersare"); for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return0; } 运行结果: 结果说明: 水仙花数是153,370,371,407 第三题: 猴子吃桃问题。 猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第2天早上又将剩下的猴子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想在吃时,见只剩一个桃子了。 求第1天共摘了多少桃子。 代码: ①#include intmain() { intday,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1; day--; } printf("total=%d\n",x1); return0; } ②#include intmain() { intday,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+2)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1; day--; } printf("total=%d\n",x1); return0; } 运行结果: ① 结果说明: 第一天一共摘了1534个桃; ② 结果说明: 第一天一共摘了2556个桃; 实验总结: 程序比较容易想,思路清楚,且老师上课已经给出一些代码,所以比较快完成这个实验。 实验序号: 第6次实验 实验名称: 数组 实验目的: (1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。 (2)掌握字符数组和字符串函数的使用。 (3)掌握与数组有关的算法(特别是排序算法)。 实验内容: 第: 一题: 用选择法对10个整数排序。 10个整数用scanf函数输入。 代码: #include intmain() {inti,j,min,temp,a[11]; printf("enterdata: \n"); for(i=1;i<=10;i++) {printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("Theorginalnumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThesortednumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return0; } 运算结果: 第二题: 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 代码: #include intmain() {inta[11]={1,4,6,9,13,16,19,28,40,100}; inttemp1,temp2,number,end,i,j; printf("arraya: \n"); for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); printf("insertdata: "); scanf("%d",&number); end=a[9]; if(number>end) a[10]=number; else {for(i=0;i<10;i++) {if(a[i]>number) {temp1=a[i]; a[i]=numb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告