(一)改错题
1.输出带框文字,源程序如图所示:
错误信息1:
错误原因:第1行stido拼写错误。
改正方法:将stido改为stdio。
错误信息2:
错误原因:第6行括号里少写了一个后引号。
改正方法:在第6行的最后一个括号前加一个后引号。
错误信息3:
错误原因:第5行最后没有分号。
改正方法:在第5行最后加上分号。
错误信息4:
错误原因:第2行main拼写错误。
改正方法:将mian改成main。
改正编译无错后,运行结果为:
2.计算某个数x的平方赋给y:分别以“y = xx” 和 “xx = y” 的形式输出x和y的值。注意不要删除源程序中的任何注释。
源程序如图所示:
错误信息1:
错误原因:第1行stdio后丢了“.h”。
改正方法:在stdio后加上“.h”。
错误信息2:
错误原因:第7行%d没有对应的x或y,注释符号丢落。
改正方法:在x前加上“y,x,”,在输出后加上“ */”。
错误信息3:
错误原因:第8行%d无对应的x或y,并且没有换行。
改正方法:在y前加“x,x,”,在后引号前加“\n”。
改正编译后,运行结果为
(二)学习总结
1.不同的数据类型,在计算机中所占内存大小是不一样的,C语言提供了sizeof运算符,可以获取数据字节数。
(1)int:
#include <stdio.h>
int main()
{
printf("int: %d字节\n",sizeof(int));
return 0;
}
运行结果如图:
(2)long:
#include <stdio.h>
int main()
{
printf("long: %d字节\n",sizeof(long));
return 0;
}
运行结果如图:
(3)float:
#include <stdio.h>
int main()
{
printf("float: %d字节\n",sizeof(float));
return 0;
}
运行结果如图:
(4)double:
#include <stdio.h>
int main()
{
printf("double: %d字节\n",sizeof(dounle));
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,结果是什么?为什么?
运行结果如图:
修改程序输出j-1,结果是什么?为什么?
运行结果如图:
原因:整数的值如果超过它的最大值,将发生溢出,即整数溢出。整数i就像一个汽车里程指示表,当达到最大值时,它将溢出到起始点(即最小值)。理解整数的溢出,注意当整数溢出时,系统不会进行提示,编程时需自己处理这个问题。
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.总结:
(1)格式化输入函数scanf时要注意加地址符。
(2)注意整型数据和实型数据的输入输出。
(3)注意stdio和main的拼写,及注意\n与引号与分号不要丢落。
(三)实验总结
1.厘米换算英尺英寸
(1)题目
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
(2)流程图
(3)源代码
#include <stdio.h>
int main (void)
{
int c,foot,inch;
double m,f;
scanf("%d",&c);
m=c/100.0;
f=m/0.3048;
foot=f;
inch=(f-foot)*12;
printf("%d %d\n",foot,inch);
return 0;
}
(4)测试数据及运行结果
(5)实验分析
问题1:foot与inch输出都为小数。
原因:foot与inch都用double声明。
解决办法:用int声明。
问题2:流程图输出结果与源代码的运行结果不同。
原因:没有用floor标明取整。
解决办法:标明floor取整。
2.A乘以B
(1)题目
看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过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",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)实验分析
问题:格式错误
原因:输出的内容没有分行
解决办法:在输出语句里加/n
4.整数152的各位数字
(1)题目
本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。
(2)流程图
(3)源代码
#include <stdio.h>
int main (void)
{
int n=152,a,b,c;
a=n/100;
b=n/10%10;
c=n%10;
printf("152 = %d + %d*10 + %d*100",c,b,a);
return 0;
}
(4)测试数据及运行结果
(5)实验分析
问题:得数错误
原因:除号与求余符号弄混
解决办法:区分除号与求余符号
(四)PTA提交列表
PTA中完成顺序结构(1)和顺序结构(2)习题集的提交列表截图。
顺序结构(1)提交列表
顺序结构(2)提交列表