C语言程序设计第二次作业——顺序结构

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


Welcome


源程序

 #include <stido.h> 
 int mian()
{   
    printf("*************\n");
    printf("  Welcome\n")
    printf("*************\n);

    return 0;
}

错误信息1:
错误原因:将"stdio.h"写成了"stido.h"
改正方法:把"stido.h"改成"stdio.h"
正确语句:#include <stdio.h>
错误信息2:
错误原因:第二个输出末尾没有分号
改正方法:在第二个输出的末尾加上分号
正确语句:printf(" Welcome\n");
错误信息3:
错误原因:第三个输出的"\n"后边没有后双引号
改正方法:在第三个输出的"\n"后加上后双引号
正确语句:printf("*************\n");
错误信息4:
错误原因:错将第二行的"main"写成了"mian"
改正方法: 把第二行的"mian"改成"main"
正确语句:int main()
试运行:
得到预期结果
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"
改正方法:在第一行的"stdio"后加上".h"
正确语句:#include <stdio.h>
错误信息2:
错误原因:第一个输出的后边多写了"/* 输出"
改正方法:把"/* 输出"删掉
正确语句:printf("%d = %d * %d", x);
试运行:
未得到预期结果
错误信息3:
错误原因:第一个输出中"%d"没有和变量一一对应
改正方法:第一个输出中的逗号后加上"x,y,"
正确语句: printf("%d = %d * %d", y,x,x);
错误信息4:
错误原因:第二个输出中误将"%d"写成"d","%d"没有和变量一一对应
改正方法:把第二个输出中"d"改成"%d",逗号后加上"x,x,"
正确语句:printf("%d * %d = %d", x,x,y);
错误信息5:
错误原因:没有输入x
改正方法:在"int x,y;"的下一行加上x的输入语句,即"scanf("%d",&x);"
正确语句:int x,y;
scanf("%d",&x);
错误信息6:
错误原因:第一和二个输出中没有"\n"
改正方法:在第一和二个输出中加上"\n"
正确语句:printf("%d = %d * %d\n", y,x,x);
printf("%d * %d = %d\n", x,x,y);
试运行:
得到预期结果
(二)学习总结
1.不 同的数据类型,在计算机中所占内存大小是不一样的,C语言提供了sizeof运算符,可以获取数据字节数。其基本语法如下:
sizeof(数据类型名称)

sizeof(变量名)
示例:

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

运行结果:
利用sizeof运算符编程求出int、long、float和double类型数据所占的字节大小
(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("doublet:  %d字节\n",sizeof(double));
    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;
}

运行程序,结果为:
(1)修改程序,输出i+1,结果是:
原因:整数的值如果超过它的最大值,将发生溢出,即整数溢出。整数i就像一个汽车里程指示表,当达到最大值时,它将溢出到起始点(即最小值)。
(2)修改程序输出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;
}

运行结果:
原因:%o是以八进制数形式输出整数,%x是以十六进制数形式输出整数
4.对本章其他你认为需要进行总结的内容进行总结。
总结:
(1)关于写编程时的态度。写编程时应该全神贯注、一丝不苟。因为我经常会因为一些小的错误而导致整个编程的错误,比如:忘记在语句后加分号、在输入语句中忘记取地址符”&“、在输出语句中误将变量放在引号里边。
(2)关于编程的基本功。应牢记编程的格式,比如:开始的#include < > 和int main( )以及最后的return 0;等等;也应熟练掌握各种函数及其对应格式,比如:输入函数scanf对应格式为scanf("%d",&x);、输出函数printf("%d",x);。还有最易忽视却十分重要的格式符,比如:%ld是输入输出长整型数据、%o是以8进制无符号形式输入输出整数、%x是以16进制无符号形式输入输出整数。
(3)关于编程的程序的基本结构需要牢记。依次为:声明Declaration、输入Input、计算Compute、输出Output。
(4)关于编程的思路。思路不应该固化,应勇于创新,乐于用更简单、便捷的方法写运算和程序中。
(三)实验总结

(1)题目
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
(2)流程图

(3)源代码
1 求整数均值

 # 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 = Sum/4.0;
    printf("Sum = %d; Average = %.1f",Sum,Average);

return 0;
}

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

(5)实验分析
问题1:
原因:输出语句中,等号两侧和分号后没有空格。导致答案错误
解决办法:等号两侧和分号后进行空格
3 是不是太胖了
(1)题目
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤是公斤的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)
(2)流程图

(3)源代码

# include <stdio.h>
int main()
{
 int H;
 double gongjin,shijin;
 
 scanf("%d",&H);
 gongjin = (H-100.0)*0.9;
 shijin = gongjin*2.0;
 printf("%.1f",shijin);

return 0;
}

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


(5)实验分析
问题:
原因:gongjin和shijin应为double型数据
解决办法:把第五行的int改为double
5 计算物体自由下落的距离
(1)题目
一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒2。
​​(2)流程图

(3)源代码

# include <stdio.h>
int main()
{
double h;

    h = 10*3*3/2;
    printf("height = %.2f",h);

return 0;
}

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

(5)实验分析
问题:

原因:误将输出中的%.2f写成了 %d
解决办法:把输出中的%d改成%.2f
9 逆序的三位数
(1)题目
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
(2)流程图

(3)源代码

# include <stdio.h>
int main()
{
int a,b,c,m;

scanf("%d",&m);
a = m/100;
    b = m/10%10;
    c = m%10;
    if (c == 0)
    {
    	if (b == 0)
    	{
	    	    printf("%d",a);
	}
	else
	{
		printf("%d%d",b,a);
	}
}
    else
    {
	printf("%d%d%d",c,b,a);
}


    return 0;
}

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

(5)实验分析
问题:


原因:没有考虑当三位数的后两位是0的情况
解决办法:加入选择结构
(四)PTA提交列表
顺序结构(1)提交列表


顺序结构(2)提交列表


posted @ 2017-10-21 15:40  曲儿说  阅读(328)  评论(0编辑  收藏  举报