C语言程序设计第二次作业
1改错题
1.输出带框文字:在屏幕上输出以下3行信息
Welcome
源程序
#include <stdio.h>
int mian()
{
printf("*************\n");
printf(" Welcome\n")
printf("*************\n);
return 0;
}
错误信息1:
错误原因:在格式化输出函数printf中\n未能全部用双引号引起来导致错误.
改正方法:在\n左右加上双引号即可,即"*************\n".
错误信息2:
错误原因:错误原因是我们大家开始学习编程是最常见的”面“问题,main函数被写错成了"mian",从而导致错误.
改正方法:把主函数中的"mian"改成"main"即可,即"int main()",
错误信息3:
错误原因:格式化输出函数printf 末尾未加";"导致程序编译出现错误.
改正方法:在printf后加上";"即可,
全部改正后运行正常,未出现错误,如图:
2.计算某个数x的平方赋给y:分别以“y = xx” 和 “xx = y” 的形式输出x和y的值。注意不要删除源程序中的任何注释。
输入输出示例(假设x的值为3)
9 = 3 * 3
3 * 3 = 9
源程序
#include <stdio>
int main()
{
int x,y;
y=x*x;
printf("%d = %d * %d", x); /* 输出
printf("d * %d = %d", y);
return 0;
}
错误信息1:
错误原因:头文件输入错误导致程序无法运行.
改正方法:输入正确的头文件"<stdio.h>"使程序正常运行
错误信息2:
错误原因:多行注释的输入有误导致运行出现错误.
改正方法:将"/* 输出" 改为"/* 输出 */即可,如图:
错误信息3:
错误原因:格式化输出函数printf中"d"未加"%"导致错误.但引号中的内容在运行是计算机不予以检查导致无法检查出错误,需要认真检查保证不出错.
改正方法:在"d"前加上"%"成为"%d"即可,如图:
2学习总结
(1).不 同的数据类型,在计算机中所占内存大小是不一样的,C语言提供了sizeof运算符,可以获取数据字节数。其基本语法如下:
sizeof(数据类型名称)
或
sizeof(变量名)
示例:
#include <stdio.h>
int main()
{
printf("short: %d字节\n",sizeof(short));
return 0;
}
运行结果:short:二字节
利用sizeof运算符编程求出int、long、float和double类型数据所占的字节大小:
1.int:
#include <stdio.h>
int main()
{
printf("int: %d字节\n",sizeof(int));
return 0;
}
运行结果:int:四字节. 如图:
2.long:
#include <stdio.h>
int main()
{
printf("long: %d字节\n",sizeof(long));
return 0;
}
运行结果:long:四字节.如图:
3.fioat:
#include <stdio.h>
int main()
{
printf("float: %d字节\n",sizeof(float));
return 0;
}
运行结果:float:四字节.如图:
4.double:
#include <stdio.h>
int main()
{
printf("double: %d字节\n",sizeof(double));
return 0;
}
运行结果:double:八字节.如图:
(2)在C语言中,在头文件limits.h中,有关于各种基本数据类型的最大以及最小值的宏定义。例如,int型的最大值为INT_MAX,最小值为INT_MIN。运行下列程序,看一下结果是什么?
#include <stdio.h>
#include <limits.h>
int main()
{
int i,j;
i = INT_MAX;
j = INT_MIN;
printf("int类型最大值max = %d\nint类型最小值min = %d\n",i,j);
return 0;
}
结果如图:
修改程序,输出i+1,结果是什么?为什么?修改程序输出j-1,结果是什么?为什么?
输入i+1结果是如图:
输入j-1结果是如图:
原因:整数超出它的最大值再加1或者其他数字就会发生溢出,并且溢出使其成为最小值,同时,还要注意整数溢出时,系统不会进行提示,编程时需要注意并自己处理.
3.运行下面的程序,输入100 144 64,看看运行结果是什么?为什么?
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%o%x",&a,&b,&c);
printf("%d %d %d\n",a,b,c);
return 0;
}
运行结果:如图:
原因:进行初步了解后知道,%x 格式化为16进制的字符串,%o 格式化为8进制的字符串,所以输入144 和 64 会得到100 和 100.
4.对本章其他你认为需要进行总结的内容进行总结。
第一,整形数据和实形数据,整形数据包括int类型,其中有short int ,long int 和long long int,还有unsigned int 类型用于非负场合,取值范围比有符号大一倍。实形数据包括实数或浮点型,其中有单精度浮点型float和双精度浮点型double.第二,如何避免使用幻数的问题:最好把幻数定义为宏常量-用标识符代表常量,格式:
#define
同时要注意宏常量在其作用范围内不能被改变,也不能被赋值.第三,const常量.须在定义时赋初值,如
#include <stdio.h>
int main()
{
int l;
const double Pi = 3.1415926
return 0;
}
第四,浮点数的表示:用%f和%e表示,%f表示小数形式,%e表示指数形式,同时可以指定输出小数位数,用%.af,a表示保留的小数位数,可在"."前加数字表示包括"."在内的小数总共占的列数(宽度),在输出时(printf)float double类型均用%f格式符,在输出函数(scanf)中float用%f表示,而double类型用%lf表示,与long int 类似.小数未指定位数时默认输出六位小数.要注意实型常量默认double类型,想变为float类型须在数字后加"f"
3实验总结
1.厘米换算英尺英寸
(1)流程图:
(2)源代码:
#include<stdio.h>
int main(void)
{
int cm;
int foot, inch;
scanf("%d",&cm);
foot= cm / 30.48;
inch= 12 * (cm / 30.48 - foot);
printf("%d %d\n", foot, inch);
return 0;
}
测试数据和运行结果:
结果与预测结果相同,为验证正确性再进行一组测试如图:
结果正确.
实验分析:问题1.英尺英寸与厘米的换算公式计算出现错误,导致运行时在英尺英寸部分都出现错误.如图:
解决方法:通过两次赋值与正确的英尺英寸与厘米的换算公式使程序正确运行.
问题2.计算英尺英寸时英尺最开始的输入结果不为整数,导致之后英尺的输出出现错误.
解决方法:经过查询得知要去整须在赋值运算中加入 "floor"才可以取整.
问题3.在输出运算时出现的错误如图:
解决方法:通过询问同学和上网查询得知"+"连接之后输出的值,只需要将空格包含在引号中即可,而不需在两边加引号如图:
2.计算A乘以B的值:
(1)流程图:
(2)源代码:
#include<stdio.h>
int main(void)
{
int A,B,C;
scanf("%d%d",&A,&B);
C=A*B;
printf("%d",C);
return 0;
}
数据的测试及运行:输入数据5,8得到40,如图:
继续进行负数测试,输入-5,8得到如图: 与预期猜想一致
问题1:在编写程序时变量C未注意大小写导致出现错误,输出函数的变量c与上边变量C不同.
解决方法:改正大小写问题,保持变量一致.
3.整数的运算(四则运算):
流程图:
2.源代码:
#include<stdio.h>
int main(void)
{
int a,b,c,d,f,g;
scanf("%d%d",&a,&b);
c = a + b;
d = a - b;
f= a * b;
g= a / b;
printf("%d + %d = %d\n",a,b,c);
printf("%d - %d = %d\n",a,b,d);
printf("%d * %d = %d\n",a,b,f);
printf("%d / %d = %d\n",a,b,g);
return 0;
}
测试数据及运行结果:shu'ru
再进行一组测试输入8,6如图: 与预测结果一致.
实验问题:由于四则运算时按照顺序结构进行编程,所以在过程中未出现问题,不过如果为了避免在运行过程中出现错误,可以尝试在定义变量时赋值,也就是初始化,可以尽可能的减少错误,由于个人习惯原因,本人在此未进行初始化,但比较建议大家有初始化的习惯.同时还须注意,本人在raptor中赋值运算时发现e变量无法被赋值,此处需要大家注意.
4.整数152的各位数字:
1.流程图:
2.源代码:
(2)源代码:
#include<stdio.h>
int main(void)
{
int a = 152,b = 0, c = 0,d = 0;
b = a % 10;
c = (a / 10) % 10;
d = a / 100;
printf ("152 = %d + %d*10 + %d*100",b,c,d);
return 0;
}
测试数据及运行结果:
问题1:在流程图制作过程中未再次忘记取整问题,导致求出的"c"是小数导致不符合结果
解决方法:在需要取整的数前加上"floor"使结果正确.
问题2.在输出a,b,c的值时无法输出结果,如图:
解决方法:应该在"a"后再加一个"+"表示输出a的值,与b,c相同.如图:
即可输出正确结果,使程序正常运行.
4 PTA 提交列表:
顺序结构1:
顺序结构2:
本次作业结果如上,希望老师同学给予意见建议,有利于我的改进与进步,谢谢!