C语言程序第二次作业

(一)改错题
1.输出带框文字:在屏幕上输出以下3行信息。


Welcome


源程序

include <stido.h>

int mian()
{
printf("\n");
printf(" Welcome\n")
printf("
\n);

return 0;

}
错误信息1:

错误原因1:stdio错写为stido,main错写为mian
改正方法1:将stdio和main拼对就可以了
错误信息2:

错误原因2:没有在句尾加分号
改正方法2:在句尾加分号

2.计算某个数x的平方赋给y:分别以“y = xx” 和 “xx = y” 的形式输出x和y的值。注意不要删除源程序中的任何注释。
输入输出示例(假设x的值为3)
9 = 3 * 3
3 * 3 = 9
源程序

include

int main()
{
int x,y;

y=x*x;
printf("%d = %d * %d", x);  /* 输出
printf("d * %d = %d", y); 

return 0; 

}
错误信息1:
错误原因1:没有在stdio后面加上.h
改正原因1:在stdio后面加上.h
错误信息2:
错误原因2:数字没有与X或Y对应,并且分号后面没有那些输出,下一行中没有%
改正原因2:删掉那些输出,将X与Y对应数字,在下一行加上%
错误信息3:
错误原因3:因为加入/输出后下面都是蓝色,所以是/输出有问题
改正原因3:在/后面再加一个/
(二)学习总结
1.不 同的数据类型,在计算机中所占内存大小是不一样的,C语言提供了sizeof运算符,可以获取数据字节数。
(1)int字节


(2)long字节


(3)float字节


(4)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,结果是什么?为什么?
输出i+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是十六进制转换,%0是八进制转换,所有144和64都会转换为100

4.对本章其他你认为需要进行总结的内容进行总结。
(1)在写程序前要先有大概的流程图,注意拼写,stdio不要错拼写为stido,main不要错拼写为mian
(2)要在每一行最后面加上分号,不然编译时会出现错误
(3)要注意数学公式要写在大括号里面,不然会出错
(4)注意int是表示整型,而float和double则是表示浮点型,float要比double表示的范围小,int要用%d来表示,float和double要用%f来表示
(三)实验总结(我的学号是单数,总结1,3,5,9题)
1.求整数均值
(1)题目
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
(2)流程图
(3)源代码

include <stdio.h>

int main (void)
{
int a,b,c,d,sum;
double average;
scanf(" %d %d %d %d",&a,&b,&c,&d);
sum = a+b+c+d;
average = (double)(a+b+c+d)/4;
printf("sum=%d average=%.1f",sum,average);

return 0;

}
(4)测试数据及运行结果
(5)实验分析
问题1:第一次测试平均值不是小数点后两位
原因1:没有在平均值前加double
解决方法1:在平均值前加double
2.是不是太胖了
(1)题目
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤是公斤的两倍。现给定某人身高,请你计算其标准体重应该是多少?
(2)流程图
(3)源代码

include <stdio.h>

int main (void)
{
int H;
double k,s;
scanf(" %d",&H);
k = (double)(H-100)0.9;
s = 2
k;
printf(" %.1f",s);

return 0;

}
(4)测试数据及运行结果
(5)实验分析
问题1:测试结果不是小数点后一位
原因1:没有用%.1f
解决方法1:将%d改为%.1f
3.计算物体自由下落的距离
(1)题目
一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒​2​​。
(2)流程图
(3)源代码

include <stdio.h>

int main (void)
{
double height;
height = 1/2.0(103*3);
printf("height=%.2f",height);

return 0;

}
(4)测试数据及运行结果
(5)实验分析
本题没有问题
4.逆序的三位数
(1)题目
程序每次读入一个正3位数,然后输出按位逆序的数字
(2)流程图
(3)源代码

include <stdio.h>

int main (void)
{
int a = 0,b = 0,c = 0,d = 0,e = 0;
scanf("%d=%d+%d10+%d100",&a,&b,&c,&d);
b = a%10;
c = (a/10)%10;
d = a/100;
e = d+c10+b100;
printf("%d",e);

return 0;

}
(4)测试数据及运行结果

(5)实验分析
问题1:结果与示例不符
原因1:求余和除法不知道哪个在前哪个在后
解决原因:求助了别的同学,现在明白了
(四)PTA提交列表
第一次提交结果:
第二次提交结果:

posted @ 2017-10-20 23:18  王映丹  阅读(419)  评论(0编辑  收藏  举报