C语言程序设计第二次作业

(一)改错题

1.输出带框文字:在屏幕上输出以下3行信息。

源程序

输入编辑器

错误信息1:

错误原因:根据编辑器提示发现第一行stdio被写错
改正:把i和d的位置换一下
错误信息2:

错误原因:printf括号内后面缺少一个英文的双引号
改正:在printf括号内加上英文引号
错误信息3:

错误原因:程序第五行依旧报错,经检查第五行确实正确就想会不会是被别的影响然后发现第四行没加分号
改正:在第四行后面加英文引号
错误信息4:

错误原因:main写错导致程序无法找到方法运行
改正:用main替换mian
答案正确

2.计算某个数x的平方赋给y:分别以“y = xx” 和 “xx = y” 的形式输出x和y的值。注意不要删除源程序中的任何注释。

输入输出示例(假设x的值为3)

源程序

输入编辑器

错误信息1:

错误原因:stdio.h是C语言中的标准输入输出库头文件,题中stdio.h不完整
改正:在stdio后面加.h
错误信息2:

错误原因:根据编辑器提示第七行出错注释/......./这是一个完整的多行注释,单独一个/会连带后面的内容全部注释掉,程序都不完整了何谈运行呢
改正://单行注释,或者在输入后面加
/
错误信息3:

错误原因:格式化输出后面不完整,每个%d依次对应一个变量。
改正:第八行d前面缺少%补全x,y使得每个数据都能正常输出
错误信息4:

错误原因:数值正确但还是不符合题目要求格式
改正:在输出语句后面加换行/n
答案正确

(二)学习总结

1.不 同的数据类型,在计算机中所占内存大小是不一样的,C语言提供了sizeof运算符,可以获取数据字节数。其基本语法如下:

示例:

运行结果:

利用sizeof运算符编程求出int、long、float和double类型数据所占的字节大小

int字节

#include <stdio.h> 
int main()
{   
printf("int:  %d字节\n",sizeof(int));
return 0;
}

运算结果:

long字节

#include <stdio.h> 
int main()
{   
printf("long:  %d字节\n",sizeof(long));
return 0;
}

运算结果:

float字节

#include <stdio.h> 
int main()
{   
printf("float:  %d字节\n",sizeof(float));
return 0;
}

运算结果:

double字节

#include <stdio.h> 
int main()
{   
printf("double:  %d字节\n",sizeof(double));
return 0;
}

运算结果:

2.在C语言中,在头文件limits.h中,有关于各种基本数据类型的最大以及最小值的宏定义。例如,int型的最大值为INT_MAX,最小值为INT_MIN。运行下列程序,看一下结果是什么?

源程序:

运算结果:

修改程序,输出i+1
结果为:

原因:若int整形变量超出最大值时会导致溢出从最小值开始计起

修改程序,输出j-1
结果为:

原因:若int整形变量超出最小值时会导致溢出从最大值开始计起

3.运行下面的程序,输入100 144 64,看看运行结果是什么?为什么?

源程序:

运算结果:

原因:%d 读入十进制整数 %x 读入十六进制整数 %o读入八进制整数,但在输出时统一用了%d都以十进制形式输出

4.对本章其他你认为需要进行总结的内容进行总结。

在编写程序时报错后先找报错的那一行确定那一行正确后找别处的问题,每改一次程序就编译一次因为很多错误有可能都是因为前面一个问题引起的
输入输出数据时一定要考虑数据类型精度低的自动转化为精度高的。在进行scanf的输入时不要忘记取地址符&。

(三)实验总结

1.求整数均值

(1)流程图

(2)源代码

#include<stdio.h>
int main()
{
int a,b,c,d,Sum;
double Average;
scanf("%d %d %d %d",&a,&b,&c,&d);
Sum=a+b+c+d;
Average = (a+b+c+d)/(double)4;
printf("Sum = %d; Average = %.1f",Sum,Average);
}

(3)测试数据及运行结果

(4)实验分析

问题:

原因:求平均值时自动按int类型算的导致Average的值不准确
解决:把4写成4.0或者在4前面加(double)都可以强制转型

3.是不是太胖了

(1)流程图

(2)源代码

#include<stdio.h>
int main()
{
int H;
double s,g;
scanf("%d",&H);
g=(H-100)*0.9;
s=g*2.0;
printf("%.1lf",s);
 } 

(3)测试数据及运行结果

(4)实验分析

问题:

原因:变量没有声明成double类型

解决:在程序开头把s,g声明成double类

5. 计算物体自由下落的距离

(1)流程图

(2)源代码

#include<stdio.h>
int main()
{
int H;
double s,g;
scanf("%d",&H);
g=(H-100)*0.9;
s=g*2.0;
printf("%.1lf",s);
 } 

(3)测试数据及运行结果

(4)实验分析

问题:

原因:1/2在int类下是等于0的导致输出结果出错
解决:把1/2改成0.5

9.逆序的三位数

(1)流程图

(2)源代码

#include<stdio.h>
int main()
{
int a,b,c,d,e,f;
scanf("%d",&a);
b=a%10;
c=a/10;
f=c%10;
d=a/100;
e=b*100+f*10+d;
printf("%d",e);
}

(3)测试数据及运行结果

(4)实验分析

问题:

原因:定义变量太多导致混乱
解决:加上注释便于看清

(四)PTA提交列表

posted @ 2017-10-20 21:58  任佳鹏  阅读(311)  评论(1编辑  收藏  举报