第1章 程序设计入门

原创 2015年11月19日 14:58:02

1.1 算术表达式

浮点数/浮点数 = 浮点数,整数先变成浮点数再进行浮点数运算,整数/整数 = 整数;sqrt函数声明:double sqrt(double);此时应该#include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
	printf("%d\n", 8/5.0);
	printf("%f\n", 8/5.0);
	printf("%.3f\n", 1 + 2 * sqrt(3.0)/(5 - 0.1));
	return 0;
}
上面第一行输出以补码格式输出,故要注意格式。

1.2 变量及其输入

例题1.1 圆柱体的表面积
#include <stdio.h>
#include <math.h>
int main()
{
	const double pi = 2 * asin(1.0);//acos(-1.0)
	double r, h;
	scanf("%lf%lf", &r, &h); //注意以lf格式输入,否则高位不为0,使结果出错
	double s = 2 * pi * r * r + 2 * pi * r * h;
	printf("Area = %.3f\n", s);
	return 0;
}
尽量用const关键字来声明常数,double要以lf格式输入,否则存储单位高位不为0导致结果变大

1.3 顺序结构程序设计

例题1.2 三位数反转
算法一:将各位分离,反序输出
#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d%d%d", n%10, n/10%10, n/100);
	return 0;
}
算法二:将反转后的数存到变量m中,%03d来输出则25表现为025
#include <stdio.h>
int main()
{
	int n, m;
	scanf("%d", &n);
	m = n%10*100 + n/10%10*10 + n/100;
	printf("%03d\n", m);
	return 0;
}
例题1.3 交换变量
算法一:使用中间变量
t = a;
a = b;
b = t;
算法二:不使用中间变量,只适合定义了加减法的数据类型才可以使用它
a = a + b;
b = a - b;
a = a - b;
算法三:输出时交换位置,即黑盒测试
scanf("%d%d", &a, &b);
printf("%d %d\n", b, a);

1.4 分支结构程序设计

例题1.4 鸡兔同笼(已知总头数和总脚数)
算法一:鸡有a只,兔有b只,已知头共n个,脚共m个,则可联立方程组a + b = n;2n + 4b = m;解得a = (4n - m)/2;b = n - a;
#include <stdio.h>
int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	int a, b;
	a = (4*n - m)/2;  //m为偶数时才能保证a和b为整数
	b = n - a;
	if(a < 0 || b < 0 || m % 2 == 1)  //去掉解不成立情况
		printf("No Answer\n");
	else
		printf("%d %d\n", a, b);
	return 0;
}
算法二:用枚举法,循环为i:0-->a,对每个j = n - a,进行if(2i + 4j == m)的判断,判断正确则输出满足条件的解。
#include <stdio.h>
int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	int i, j, k = 0;     //k用来做有无解的标记
	for(i = 0; i < n; i++){
		j = n - i;
		if(2 * i + 4 * j == m){
			k = 1;
			printf("%d %d\n", i, j);
			break;
		}
	}
	if(k == 0)
		printf("No Answer\n");
	return 0;
}
例题1.5 三整数由小到大排序
算法一:3个整数a,b,c,有3 * 2 * 1 = 6种排序情况(abc,acb,bac,bca,cab,cba),输入a,b,c,对这6种排序情况分别进行判断。
#include <stdio.h>
int main()
{
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);
	if(a <= b && b <= c) printf("%d %d %d\n", a, b, c);
	else if(a <= c && c <= b) printf("%d %d %d\n", a, c, b);
	else if(b <= a && a <= c) printf("%d %d %d\n", b, a, c);
	else if(b <= c && c <= a) printf("%d %d %d\n", b, c, a);
	else if(c <= a && a <= b) printf("%d %d %d\n", c, a, b);
	else if(c <= b && b <= a) printf("%d %d %d\n", c, b, a);
	return 0;
}
算法二:输入abc后,我们用a存放最小值,b存放较小值,c存放最大值,故先对a和b,a和c比较,交换变量使a存放最小值;再对b和c比较,交换变量使b存放较小值。
#include <stdio.h>
int main()
{
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);
	int t;
	if(a > b) {t = a; a = b; b = t;}
	if(a > c) {t = a; a = c; c = t;}
	if(b > c) {t = b; b = c; c = t;}
	printf("%d %d %d\n", a, b, c);
	return 0;
}

1.5注解与习题

编译器是将源代码变成机器可以直接执行的指令。C99中double的输出必须用%f,而C89和C++可用%lf。
	printf("%%d\\n");      //输出%d\n
习题1.6 三角形(判断是否为直角三角形,是则输出yes,否则输出no,如果根本无法构成三角形,输出not a triangle)
<span style="font-size:10px;">#include <stdio.h>
int main()
{
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);
	if(a < b + c && b < a + c && c < a + b){
		if(a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
			printf("yes\n");
		else printf("no\n");
	}
	else printf("not a triangle\n");
	return 0;
}
习题1.7 判断是否为闰年(是输出yes,否输出no)
<span style="font-size:10px;">#include <stdio.h>
int main()
{
	int year;
	scanf("%d", &year);
	if(year % 4 == 0 && year %100 != 0 || year % 400 == 0)
		printf("yes\n");
	else printf("no\n");
	return 0;
}





版权声明:本文为博主原创文章,未经博主允许不得转载。

第1章 对象入门——Thinking-in-Java

第1章 对象入门“为什么面向对象的编程会在软件开发领域造成如此震憾的影响?”面向对象编程(OOP)具有多方面的吸引力。对管理人员,它实现了更快和更廉价的开发与维护过程。对分析与设计人员,建模处理变得更...
  • oftoo
  • oftoo
  • 2016年03月24日 11:31
  • 1094

lua程序设计第二版 读书笔记(5-8章)

书本下载地址                       http://download.csdn.net/detail/myy2012/5349646 本部分下载地址               ...
  • myy2012
  • myy2012
  • 2013年05月09日 17:04
  • 1205

Ext JS 6学习文档-第3章-基础组件

基础组件 在本章中,你将学习到一些 Ext JS 基础组件的使用。同时我们会结合所学创建一个小项目。这一章我们将学习以下知识点: 熟悉基本的组件 – 按钮,文本框,日期选择器等等 表...
  • jiangbo110119
  • jiangbo110119
  • 2017年03月19日 10:57
  • 1061

Unity Shader入门精要 学习笔记一

Unity Shader入门精要 学习笔记一前几章预计都是理论知识。涉及代码的也应该是很小一部分,在我想来。先把理论搞搞清楚。再去理解shader会好很多。所以祝福诸君程运昌荣!好了。开始记录学习笔记...
  • qq_19518429
  • qq_19518429
  • 2017年05月18日 11:27
  • 157

第1章 程序设计入门

在算法竞赛中应当只做3件事:读入数据,计算结果,打印输出。输入前不要打印提示信息,输出完毕后立即终止程序。一般情况下,程序不能直接读取键盘和控制屏幕:不要在算法竞赛中使用getch(),getc(),...
  • sjc214
  • sjc214
  • 2015年08月05日 10:59
  • 135

《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计

《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计 2.1 For循环 知识点1:For循环语法结构  for(int i = 1; i        printf("%d\n",i)...
  • yzzxliuchao
  • yzzxliuchao
  • 2015年03月23日 10:24
  • 296

【算法竞赛入门经典】【第一章】课后习题

今天心血来潮,决定将《算法竞赛入门经典》里面的课后题,进行详解,先来第一发。持续更新中。。。...
  • luomingjun12315
  • luomingjun12315
  • 2015年04月08日 12:48
  • 1291

《数据结构与算法分析C++》 维斯 第一章 笔记

指数,对数,级数,模运算,证明方法。 递归的简单介绍:递归并不是循环逻辑。因为他是从f(5)到f(4),一直下去,而非,从f(5)还在f(5). 所以,递归并不是循环。 当编写递归历程的时候,关...
  • weiliangdemo
  • weiliangdemo
  • 2015年07月01日 19:39
  • 845

第1章 程序设计入门 习题

习题1-1 平均数(average)
  • u010399331
  • u010399331
  • 2014年07月27日 16:48
  • 568

Ext JS 6学习文档–第1章–ExtJS入门指南

Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少。google 搜索资料时找到了一本国外牛人写...
  • jiangbo110119
  • jiangbo110119
  • 2017年03月10日 21:54
  • 313
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第1章 程序设计入门
举报原因:
原因补充:

(最多只允许输入30个字)