C语言实验报告
更新时间:2023-12-16 07:28:01 阅读量: 教育文库 文档下载
电子信息工程学院《C语言程序设计》实验报告
姓名: 潘美娟 学号:222013314011016
实验序号: 第 3 次实验
实验名称:最简单的C程序设计—顺序程序设计 实验目的:
(1)掌握C语言中使用最多的一种语句—赋值语句的使用方法;
(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符; (3)进一步掌握编写程序和调试程序的方法。
实验内容:
(1)通过下面的程序掌握各种格式转换符的正确使用方法;
①输入以下程序:
# include
unsigned int p,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(\ printf(\}
②运行此程序并分析结果。
③在此基础上,将程序第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( unsigned int) = 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( unsigned int) = 4;
(2)设圆的半径r=1.5,圆柱高h=3,求圆周长,圆面积,园球表面积,圆球体积、圆柱体积。编程序,用scanf 输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。 代码:
#include
{float h,r,l,s,sq,vq,vz; float pi=3.141526;
printf(\请输入圆半径r,圆柱高h∶\
scanf(\ //要求输入圆半径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\ printf(\圆面积为: s=%6.2f\\n\ printf(\圆球表面积为: sq=%6.2f\\n\ printf(\圆球体积为: v=%6.2f\\n\ printf(\圆柱体积为: vz=%6.2f\\n\ return 0; }
(实验运行结果)
结果说明:任意输入圆半径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
{float r5,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(\ // 输出按第1方案得到的本息和 printf(\ // 输出按第2方案得到的本息和 printf(\ // 输出按第3方案得到的本息和 printf(\ // 输出按第4方案得到的本息和 printf(\ // 输出按第5方案得到的本息和 return 0; }
运算结果:
结果说明:
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
{char c1='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(\ return 0; }
②#include
{char c1='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(\ return 0; }
③#include
{char c1='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(\ return 0; }
运行结果:①
结果说明:程序使得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
printf(\输入x:\ scanf(\
if(x<1) /* x<1 */ { y=x;
printf(\ y=x=%d\\n\ }
else if(x<10) /* 1=
运行结果:①
结果说明:输入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
int i,k; printf(\请输入一个小于%d的整数i:\ scanf(\ if (i>M)
{printf(\输入的数不符合要求,请重新输入一个小于%d的整数i:\ scanf(\ }
k=sqrt(i);
printf(\的平方根的整数部分是:%d\\n\ return 0; }
运行结果:
结果说明:运行结果显而易见; 第三题:
给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,81—89分为B,70-79分为C,60-69分为D,60分以下为E。
①事先编好程序,要求分别用if语句和switch语句来实现。运行程序,并检查结果是否正确。
②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100小于0时,通知用户“输入数据错”,程序结束。 代码:
#include
{ float score; char grade;
printf(\请输入学生成绩:\ scanf(\
while (score>100||score<0) {printf(\输入有误,请重输\ scanf(\ }
switch((int)(score/10)) {case 10:
case 9: grade='A';break; case 8: grade='B';break; case 7: grade='C';break; case 6: grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0: grade='E'; }
printf(\成绩是 %5.1f,相应的等级是%c\\n \ return 0; }
运行结果:
第四题:
输入4个整数,要求按由小到大顺序输出。
在得到正确结果后,修改程序使之按由大到小顺序输出。 代码:
①
#include
printf(\请输入四个数:\
scanf(\ printf(\ 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 \\n\ return 0; }
②修改后的程序:
#include
printf(\请输入四个数:\
scanf(\ printf(\ 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 \\n\ return 0; } 运行结果:① 修改后运行的结果 实验总结:本次实验的问题大都是数学问题,思路比较清楚,但调试程序比较 麻烦,对printf语句不是很熟悉。 实验序号: 第 5 次实验 实验名称:循环结构程序设计 实验目的: (1)熟练掌握用while语句、do??while语句实现循环的方法。 (2)掌握在程序中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调式程序。 实验内容: 第一题: 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符个数。 代码: ①#include char c; int letters=0,space=0,digit=0,other=0; printf(\请输入一行字符:\\n\ while((c=getchar())!='\\n') { if (c>='a' && c<='z' || c>='A' && c<='Z') letters++; else if (c==' ') space++; else if (c>='0' && c<='9') digit++; else other++; } printf(\字母数:%d\\n空格数:%d\\n数字数:%d\\n其它字符数:%d\\n\ return 0; } ② #include char c; int capital=0,lowercase=0,space=0,digit=0,other=0; printf(\请输入一行字符:\\n\ while((c=getchar())!='\\n') { if (c>='A' && c<='Z') capital++; else if(c>='a' && c<='z') lowercase++; else if (c==' ') space++; else if (c>='0' && c<='9') digit++; else other++; } printf(\大写:%d\\n小写:%\\n空格数:%d\\n数:%d\\n\ return 0; } 数字数:%d\\n其它字符 运行结果:① 修改后运行的结果 第二题: 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=1^3+5^3+3^3. 代码: #include int main() { int i,j,k,n; printf(\ for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n; if (n==i*i*i + j*j*j + k*k*k) printf(\ } printf(\ return 0; } 运行结果: 结果说明:水仙花数是153,370,371,407 第三题: 猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的猴子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想在吃时,见只剩一个桃子了。求第1天共摘了多少桃子。 代码: ①#include int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1; day--; } printf(\ return 0; } ②#include int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+2)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1; day--; } printf(\ return 0; } 运行结果:① 结果说明:第一天一共摘了1534个桃; ② 结果说明:第一天一共摘了2556个桃; 实验总结:程序比较容易想,思路清楚,且老师上课已经给出一些代码,所以 比较快完成这个实验。 实验序号: 第 6次实验 实验名称:数组 实验目的: (1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。 (2)掌握字符数组和字符串函数的使用。 (3)掌握与数组有关的算法(特别是排序算法)。 实验内容: 第:一题: 用选择法对10个整数排序。10个整数用scanf函数输入。 代码: #include {int i,j,min,temp,a[11]; printf(\ for (i=1;i<=10;i++) {printf(\ scanf(\ } printf(\ printf(\ for (i=1;i<=10;i++) printf(\ printf(\ 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(\ for (i=1;i<=10;i++) printf(\ printf(\ return 0; } ?? 运算结果: 第二题: 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 代码: #include { int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; printf(\ for (i=0;i<10;i++) printf(\ printf(\ printf(\ scanf(\ 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]=number; for (j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } printf(\ for (i=0;i<11;i++) printf(\ printf(\ return 0; } 运算结果: 第三题: 有一篇文章,共有3行文字文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。 代码: #include {int i,j,upp,low,dig,spa,oth; char text[3][80]; upp=low=dig=spa=oth=0; for (i=0;i<3;i++) { printf(\ gets(text[i]); for (j=0;j<80 && text[i][j]!='\\0';j++) {if (text[i][j]>='A'&& text[i][j]<='Z') upp++; else if (text[i][j]>='a' && text[i][j]<='z') low++; else if (text[i][j]>='0' && text[i][j]<='9') dig++; else if (text[i][j]==' ') spa++; else oth++; } } printf(\ printf(\ printf(\ : %d\\n\ printf(\ : %d\\n\ printf(\ : %d\\n\ return 0; } 运行结果: 第四题: 找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。 应当至少准备两组测试数据: 1.二维数组有鞍点,例如: 99021080?60?32054096110189 二维数组没有鞍点,例如: 9902104580?60?35420540961101891567 用scanf函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论上来说,应当准备许多种不同行数和列数的数组,但这样的工作量太大,一般来说不需要这样做,只需准备典型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。请读者修改程序以实现之。 代码: #include #define M 3 /* 数组为3行3列 */ int main() { int i,j,k,a[N][M],max,maxj,flag; printf(\ for (i=0;i {max=a[i][0]; /* 开始时假设a[i][0]最大 */ maxj=0; /* 将列号0赋给maxj保存 */ for (j=0;j flag=1; /* 先假设是鞍点,以flag为1代表 */ for (k=0;k if(flag) /* 如果flag1为1表示是鞍点 */ {printf(\ /* 输出鞍点的值和所在行列号 */ break; } } if(!flag) /* 如果flag为0表示鞍点不存在 */ printf(\ return 0; } 运行结果:① ② 实验总结:本实验(3)与实验五中(1)个有些类似,故在此基础上,对程序 进行部分修改,即可运行出结果,其他程序运行过程中总是报错,调试了好多次才弄好。不得不说,c语言很强大,自己需要掌握的还有很多。
正在阅读:
C语言实验报告12-16
炎热的天气作文300字07-05
乳品工艺学试题+答案02-03
幼儿园组织与管理离线作业(1) 答案08-18
cad实训报告2篇01-09
含参不等式恒成立问题求解策略06-04
冲压模具公差及间隙标准04-26
Chapter2-课外作业12-04
煤矿洗煤厂化验室化验员考试试题及答案12-05
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 语言
- 实验
- 报告