C语言程序设计第二次作业——顺序结构
(一)改错题
错误信息1:
错误原因:stdio拼写错误。
改正方法:stido改成stido.
错误信息2:
错误原因:在对错误1改正后,进行编译发现第二个printf后没有加分号。
改正方法:在第二个printf后加分号。正确格式:printf(" welcome\n");
错误信息3:
错误原因:在对错误信息2进行改正后,进行编译发现第三个printf括号中只有前引号而没有后引号。
改正方法:在\n后加后引号。正确格式:printf("*************\n");
错误信息4:
错误原因:在对错误3进行改正后,进行编译发现main的拼写错误,错写成mian。
改正方法:把mian改成main。正确格式:int main( ).
进行四次改正后,编译无错误:
错误信息1:
错误原因:stdio后没有加 .h
改正方法:在stdio后加.h 正确格式:#include <stdio.h>
错误信息2:
错误原因:在对信息1进行改正后,进行编译发现注释的格式不正确。
改正方法:在输出后加/ 正确格式 / 输出 */
进行两次改正后,编译无错误
(二)学习总结
1.
(1) 用sizeof运算符编程求出int类型数据所占的字节大小:
#include <stdio.h>
int main()
{
printf("int: %d字节\n",sizeof(int));
return 0;
}
运行结果:
(2)用sizeof运算符编程求出long类型数据所占的字节大小:
#include <stdio.h>
int main()
{
printf("long: %d字节\n",sizeof(long));
return 0;
}
运行结果:
(3)用sizeof运算符编程求出float类型数据所占的字节大小:
#include <stdio.h>
int main()
{
printf("float: %d字节\n",sizeof(float));
return 0;
}
运行结果:
(4)用sizeof运算符编程求出double类型数据所占的字节大小:
#include <stdio.h>
int main()
{
printf("short: %d字节\n",sizeof(short));
return 0;
}
运行结果:
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,结果是什么?为什么?
运行结果:
此结果原因:若int整形变量超出最大值时会导致溢出从最小值开始计起
修改程序输出j-1,结果是什么?为什么?
运行结果:
此结果原因:若int整形变量超出最小值时会导致溢出从最大值开始计起。
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;
}
运行结果:
此结果原因:%d表示十进制整数,输出中a,b,c都是%d,所以是十进制。输入中100 144 64 分别是十进制,八进制,十六进制。所以输出都是100.
4.对本章其他你认为需要进行总结的内容进行总结。
总结:
(1)给变量定义时应该明白给变量定义整数类型,实数类型,字符类型等。
(2)运算符中=表示赋值。==表示等于。运算符有运算优先级。
(3)在一条语句后要加;作为一条语句的结束,main()函数的最后一条语句是 return 0;scanf("%d",&a)中不能忘记加&和“” =前后要空一格。
(4)如果编译一次程序后发现错误,在对错误进行改正后要进行一次编译,每改正一次编译一次。
(三)实验总结
1.厘米换算英尺英寸
(1)题目:如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?
(2)流程图:
(3)源代码:
# include <stdio.h>
int main(void)
{
int cm,foot,inch;
double m,n;
scanf("%d",&cm);
m=cm/100.0;
n=m/0.3048;
foot=n;
inch=(n-foot)*12;
printf("%d %d",foot,inch);
return 0;
}
(4)测试数据及运行结果:((
(5)实验分析:
问题一:输出结果与给出的结果不符合。
原因 :米和厘米单位没有进行换算。
解决办法:m=cm/100.0。
2.A乘以B
(1)题目:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。
(2)流程图:
(3)源代码:
# include <stdio.h>
int main(void)
{
int A,B,C;
scanf("%d %d",&A,&B);
C=A*B;
printf("%d\n",C);
return 0;
}
(4)测试数据及运行结果:
(5)实验分析
此题较简单,没有发现错误问题。
3.整数四则运算
(1)题目:计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。
(2)流程图:
(3)源代码:
# include <stdio.h>
int main(void)
{
int A,B,C,D,E,F;
scanf("%d %d",&A,&B);
C = A + B;
D = A - B;
E = A * B;
F = 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,E);
printf("%d / %d = %d\n",A,B,F);
return 0;
}
(4)测试数据及运行结果
(5)实验分析
此代码要注意格式问题,等号前后要空格不能忘记加分号&
4.逆序的三位数
(1)题目:程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
(2)流程图:
(3)源代码:
# include<stdio.h>
int main(void)
{
int a,b,c,d,e;
scanf("%d",&a);
b = a%10;
c = (a/10)%10;
d = a/100;
e =b*100+c*10+d;
printf("%d\n",e);
return 0;
}
(4)测试数据及运行结果
(5)实验分析
问题:不清楚怎样表达出一个三位数的个位十位百位。
解决办法:经过同学们的指导与自己的查询资料,知道了用floor(向下取整),这样便表达出了十位与百位。
(四)PTA提交列表