C语言程序设计 - 何钦铭
C语言程序设计 是一门实践性很强的课程,只能练会,学习者必须通过大量的编程训练,在实践中培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。C语言程序设计课程的教学重点应该是培养学生的实践编程能力
所有的C程序都有且只有一个main( )函数,main()函数是程序的主函数,C程序从main()函数处开始运行,当main()函数结束时,程序也就结束了
三种基本的控制结构:顺序、分支、循环
所有的C程序都有且只有一个main()函数
标识符由字母、数字、下划线组成,其中第一个字符必须是字母或下划线
源程序:用程序设计语言编写的未经编译的程序
函数max求两个整数(作为参数)的较大值(作为返回值):
int max(int a, int b) //函数头:函数类型 函数名(函数参数列表)
{
int x;
if (a>b) x = a;
else x = b;
return x; //结束函数调用并返回x
}
C语言的特点:
1.结构化语言
2.易于移植
3.简洁紧凑,使用方便灵活
4.强大的处理能力
5.生成的目标代码质量高,运行效率高
调试最主要的方法是:设置断点并观察变量,单步跟踪
求1~100间所有偶数的和
#include <stdio.h>
int main()
{
int sum = 0;
int i;
for(i=0;i<=100;i=i+2)
sum = sum + i;
printf("%d\n",sum);
return 0;
}
OR:
#include <stdio.h>
int main()
{
int i,sum = 0;
for (i = 1; i<=100; i++)
if(i%2 == 0) sum += i;
printf("%d",sum);
return 0;
}
习题
判断题:
%f
指定输出时保留6位小数,%,2f
则指定输出时保留2位小数
格式控制字符串中:
%d
%f
%lf
调用数学函数,需加入#include<math.h>
r(fahr = lower; fahr <=upper; fahr++)
celsius = (5.0/9.0) * (fahr-32); //语句1
printf("%d %lf\n", fahr, celsius); //语句2
循环体语句只包括语句1,而语句2被当作for
的下一条语句,不参加循环,循环体语句只能是一条语句
实型数据的输出格式控制说明 %m.nf
,指定了输出浮点型数据时保留n位小数,且输出宽度是m(包括符号位和小数点)。若数据的实际位数小于m,左端补空格;若大于m,按实际位数输出
从键盘输入一个正整数n,计算n!
//分析:n! = n*(n-1)*(n-2)*...*2*1
#include <stdio.h>
int main()
{
int n;
int i;
int sum = 1;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
sum = sum * i;
}
printf("n! = %d",sum);
return 0;
}
/* 输入一个正整数n,生成一张2的乘方表,输入2的0次到2的n次的值,可以调用幂函数计算2的乘方 */
#include<math.h> //程序中调用了数学函数,需包含头文件math.h
power = pow(2,i); //调用幂函数pow(2,i)计算2的i次方
//输入一个正整数n,生成一张阶乘表,输出0!到n!的值,要求定义和调用函数fact(n)计算n!,函数类型是double
//定义求n!的函数
double fact(int n) //函数首部
{
int i;
double product; //变量product用于存放结果(阶乘的值)
//计算n!
product = 1;
for(i=1;i<=n;i++)
{
product = product * i;
}
return product; //将结果回送主函数
}
习题
R7-1 日期格式化 (5 分)
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:
03-15-2017
输出样例:
2017-03-15
代码:
#include<stdio.h>
int main()
{
int year,month,day;
scanf("%d-%d-%d",&month,&day,&year);
printf("%04d-%02d-%02d\n",year,month,day);
return 0;
}
/*练习2-12 输出华氏-摄氏温度转换表 (15 分)
输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F?32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。
输出格式:
第一行输出:"fahr celsius"
接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。
若输入的范围不合法,则输出"Invalid."。*/
#include <stdio.h>
int main() {
int lower, upper;
double F;
double C;
scanf("%d %d", &lower, &upper);
if (lower <= upper && upper <= 100 && lower > 0) {
printf("fahr celsius\n");
for (lower; lower <= upper; lower = lower+2) {
F = lower;
C = 5.0*(F-32)/9;
printf("%d%6.1f\n", (int)F, C);
}
} else {
printf("Invalid.");
}
return 0;
}
/*
练习2-13 求N分之一序列前N项和 (15 分)
本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
6
输出样例:
sum = 2.450000
*/
#include <stdio.h>
int main()
{
int N,i;
double S;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
S = S + 1.0/i;
}
printf("sum = %lf",S);
return 0;
}
/*输入你所猜的整数,
%c 表示要读入一个字符,而空格本身也是一个字符,因此空格会被作为输入字符
字符输入函数 getchar()
,调用这个函数可以从键盘输入一个字符
ch = getchar(); //功能是从键盘输入一个字符,并赋值给变量ch
else和 if 的匹配准则:else与最靠近它的、没有与别的 else 匹配过的匹配
分情况使用for
语句和while
语句:
for语句:适用于题目中制定了循环次数的
while语句:其他情况
do-while语句:先执行循环体,后判断循环条件(适合于先循环、后判断循环条件的情况)
do {
? 循环体语句
} while (表达式);
break语句
break语句的作用是强制循环结束,一旦执行了break语句,循环提前结束,break语句应该和if语句配合使用,即条件满足时,才执行break跳出循环
continue语句
continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环
break语句和continue语句的区别在于,break结束循环,而continue知识跳过语句继续循环。break除了可以中止循环外,还用于switch语句,而continue只能用于循环
对嵌套循环初始化时,一定要分清内外层循环
if(循环次数已知)
使用 for 语句
else //循环次数未知
if(循环条件在进入循环时明确)
使用 while 语句
else //循环条件需要在循环体中明确
使用 do-while 语句
函数定义的一般形式为:
函数类型 函数名 (形式参数表) //函数首部,由函数类型、函数名、形式参数表组成
//函数类型一般指函数结果返回的类型,一般与return语句中表达式的类型一致
//形参表中给出函数计算所要用到的相关已知条件,以类似变量定义的形式给出,格式为: 类型1 形参1,类型2 形参2,...
//形参表中各个形参之间用逗号分隔,每个形参前面的类型必须分别写明。函数的形参的数量可以是一个,也可以是多个,或者没有形参
//函数不能嵌套定义
{
函数实现过程
}
函数首部后面不能加分号,它和函数体一起构成完整的函数定义
函数体:函数体体现函数的实现过程,由一对大括号内的若干条语句组成,用以计算,或完成特定的工作,并用return语句返回运算的结果(return语句只能返回一个值),return类型和函数类型一致
return是普通变量,不是形参,它只是函数实现过程中要用到的工作单元,只有必须从主调函数中得到的已知条件,才定义为形参,其他需要的工作单元都定义成普通变量
充分理解函数调用与返回的实现过程,对学好函数程序设计是至关重要的
1.函数的调用过程
? 任何C程序执行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行
2.函数调用的形式
->函数名(实际参数表)
实际参数(简称实参)可以是变量、常量、表达式
对于实现计算功能的函数,函数调用通常出现在两种情况下:
赋值语句
volume = cylinder(radius, height);
输出函数的实参
printf("%f",cylinder(radius, height));
3.参数传递
函数定义时,位于其首部的参数被称为形参,
//计算圆柱体积
#include <stdio.h>
int main(void)
{
double height, radius, volume;
double cylinder(double r, double h);
printf(" Enter radius and height:");
scanf("%lf %lf", &radius, &height);
volume=cylinder (radius, height);
printf("Volume=%.3f\n",volume);
return 0;
}
double cylinder (double r,double h)
{
double result;
result=3.1415926*r*r*h; //计算圆柱体积
return result; //返回结果
}
原文:https://www.cnblogs.com/ztw1002/p/14606819.html