《C程序设计》教材例题练习精讲精练1——第一章

题目1:要求在屏幕上输出一行信息: This is a C program.

【解题思路】

        在主函数中用 printf 函数原样输出以上文字。

【解决代码】

#include <stdio.h>                           // 这是编译预处理命令
int main()                                  // 定义主函数 
{                                         // 函数开始的标志 
	printf("This is a C program.\n");            // 输出所指定的一行信息 
	return 0;                               // 函数执行完毕时返回函数值0
}										  // 函数结束的标志

题目2:求两个整数之和。

【解题思路】

        设置3个变量,a和b用来存放两个整数,sum用来存放和数。用赋值运算符“ = ”把相加的结果传给sum。

【解决代码】

#include <stdio.h>				// 这是编译预处理命令 
int main()                    // 定义主函数
{                           // 函数开始 
	int a = 0;					// 本行是程序的声明部分,定义整型变量a,并初始化值为0
	int b = 0;					// 本行是程序的声明部分,定义整型变量b,并初始化值为0
	int sum = 0;				// 本行是程序的声明部分,定义整型变量sum,并初始化值为0
	a = 123;                   // 对变量a赋值    
	b = 456;                   // 对变量b赋值 
	sum = a + b;                // 进行a+b 的运算,并把结果存放在变量sum中
	printf("sum is %d\n", sum);    // 输出结果 
	return 0;                   // 使函数返回值为0
}                             // 函数结束 

【代码点评】

        这段代码和教材上面不同的地方在于对于三个整型变量初始化不同,原教材代码直接定义了三个变量,并没有进行初始化,这虽然对本段代码运行结果没有影响,但并不利于程序员代码习惯的养成,比较推荐写成如上示例。


题目3:求两个整数中的较大者。

【解题思路】

        用一个函数来实现求两个整数中的较大者。在主函数中调用此函数并输出结果。

【解决代码1】

#include <stdio.h>
int main()                       // 定义主函数
{                              // 主函数体开始
	int max(int x, int y);           // 对被调用函数max的声明 
	int a, b, c;                   // 定义变量a,b,c
	scanf("%d%d", &a, &b);      // 输入变量a和b的值
	c = max(a, b);               // 调用max函数,将得到的值赋给c 
	printf("max=%d\n", c);       // 输出c的值
	return 0;                   // 返回函数值为0
}
int max(int x, int y)             //定义max函数,函数值为整型, 形式参数x和y为整型 
{
	int z;                     // max函数中的声明部分,定义本函数中用到的变量z为整型 
	if (x > y) z = x;
	else z = y;
	return(z);                  //将z的值返回,通过max带回到调用函数的位置
}

【代码点评】

        这段代码就是教材上的代码原文,这段代码用到了实际参数、形式参数等一系列非初学者所能接受的知识,当然实现这个功能还可以使用其他代码,下面我保留教材的“使用自定义函数”的代码风格,将内容进行精进简化,形成【解决代码2】,也是可以实现这个功能的,并且更适合初学者可以看懂。

【解决代码2】

#include <stdio.h>
void max(int x, int y)
{
	if (x > y)
		printf("max = %d",x);
	else
		printf("max = %d",y);
}
int main()
{                                    
	int a = 0;
	int b = 0; // 定义变量a,b,c
	scanf("%d%d", &a, &b);               
	max(a, b);
	return 0;                          
}

题目4:编写一个程序,运行时输出

**************************

Hello  World!

**************************

这个程序是一些常见的国外C教材中作为第一个程序例子介绍的,一般称为Hello程序。

【解决代码】

#include <stdio.h>
int main()
{
	printf("**************************\n");
	printf("      Hello World!\n");
	printf("**************************\n");
	return 0;
}

题目5:编写一个C程序,运行时输出以下图形:

*****

  *****

    *****

      *****

【解决代码1】

#include <stdio.h>
int main()
{
	printf("*****\n");
	printf("  *****\n");
	printf("    *****\n");
	printf("      *****\n");
	return 0;
}

【代码点评】

        这道题是教材第一章课后习题的第5题,上述代码就是最标准最简单的办法。但是教材还是给出了另外两个解决思路,分别是循环语句和自定义函数,我在下面也分别给出了这两种解决思路所对应的代码,打印的结果是一样的。

【解决代码2】

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 4; ++i)
	{
		printf("*****\n");
		printf("  ");
		if(i >= 2)
			printf("  ");
		if (i >= 3)
			printf("  ");
	} 
	return 0;
}

【解决代码3】

#include <stdio.h>
void print()
{
	printf("*****\n");
}
int main()
{
	print();
	printf("  ");
	print();
	printf("    ");
	print();
	printf("      ");
	print();
	return 0;
}

【错误修改】

        在《C程序设计(第五版)学习辅导》中P5的题目中,第二行“  ****”应该是“    *****”,这个是题目打印时出现的问题,在《C程序设计(第五版)》中的题目是正确的。


题目6:编写一个C程序,输入a,b,c三个值,输出其中最大者。

【解决代码1】

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	printf("请输入三个整数:");
	scanf("%d%d%d", &a, &b, &c);
	if (a > b && a > c)
		printf("这三个数最大者为%d", a);
	else if (b > a && b > c)
		printf("这三个数最大者为%d", b);
	else
		printf("这三个数最大者为%d", c);
	return 0;
}

【代码点评】

        这道题是教材第一章课后习题的第6题,上述代码并不是教材给出的标准答案,但是是编者认为最容易理解并且比较好想到的解决办法,下面也给出教材上的标答,其思路为先假定第一个输入的值为最大者,如果输入的第二个值大于第一个值,就将第二个值赋值为最大者,再将输入的第三个值与其比较,如果大于第二个值,就再次更新最大者为第三个值,最后输出最大者。

【解决代码2】

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int max = 0;
	printf("请输入三个整数:");
	scanf("%d%d%d", &a, &b, &c);
	max = a;
	if (max < b)
		max = b;
	if (max < c)
		max = c;
	printf("这三个数的最大者为:%d", max);
	return 0;
}

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值