C语言概述
简单C程序
#include <stdio.h>
int main()
{
int num;
num = 1;
printf("I am a simlpe C program.\n"); /*使用printf()函数*/
printf("computer \n");
printf("My favorite number is %d ,beause it is first number.\n",num);
return 0;
}
事例解析
快速概要
# incLude <stdio.h>
/*包含另一个文件,stdio.h是C编译器软件包的标准部分提供键盘输入屏幕输出 所有C编译器软件包都提供stdio.h 文件*/
int main(void) /* 函数名 */
int表示main()函数返回的是一个整数,void表示main()函数不带任何参数(可省略不写)。
/* 一个简单C程序 */ <—注释
{ <—函数体开始
} <—函数体结束
int num; <—声明 :num变量为int(整数)类型。
num = 1 <—赋值表达式语句 1赋值给num。
printf(“I am a simple C program.\n”); <— 调用一个函数
printf是标准的C库函数,程序中使用函数叫做调用函数。
printf(“My favorite number is %d ,beause it is first number.\n”,num);
调用printf()函数把num的值(1)内嵌在双引号中的内容一并打印,%d告诉计算机以何种形式输出num值,打印在何处。
return 0; <—return 语句
C 函数 可以给调用方返回一个数,当前可认为该行为结束main()函数的要求。
程序细节
#include 指令和头文件
#include <stdio.h>相当于将stdio.h 文件中的所有内容拷贝到该行。
#include 是C预处理器指令(Preprocessor directive),通常C编译器会在编编译源代码前对其做一些准备工作,即预处理(preprocessing)。
类似stdio.h在C程序顶部的信息集合被称为头文件(header)。
main()函数
C程序一定从main()函数开始执行(目前不考虑例外)
**int main(); **中 int是main()函数的返回类型,将其值返回给操作系统
注释
/* 这是一条C注释 */
/*
比python 简洁
*/
// 单行注释只能写一行
花括号、函数和块
{
…
}
声明
int num; 这行代码叫做声明(declaration),定义变量名,定义变量的数据类型。变量必须先声明才能使用。
变量命名第一个字符必须是字母或下划线("_"),不能是数字。标识符中不能含有标点符号("_"除外)
有效: xih _123 GG2
无效: 222 2g 1*‘
赋值
num = 1; 将右边的值1赋给num
printf() 函数
printf("I am a simlpe C program.\n"); /*使用printf()函数*/
printf("computer \n");
printf("My favorite number is %d ,beause it is first number.\n",num);
printf() ”()“表明printf是一个函数,括号中的内容是从main()函数中传递给printf()函数的信息
实参:传递给函数的特定值
形参:函数中用于储存值的变量
%d:相当于占位符,其作用是指明输出num值的位置,%提醒程序此处要打印一个变量,d表明把变量打印完十进制整数。
return语句
return 0; 有返回值的c函数要有return语句。
简单程序的结构
C程序的基本结构:一个或多个函数组成,必须包含main()函数。
函数组成:函数头+函数体
进一步使用
#include<stdio.h>
int main(){
int feet,fathoms;
fathoms = 2;
feet = 6 * fathoms; //乘法
printf("There are %d feet in %d fathoms\n",feet,fathoms); //打印多值
printf("yes! %d feet",6*fathoms);
return 0;
}
多函数
#include <stdio.h>
void butler(); //ANSI/ISO C函数原型
int main(){
printf("main func execute.\n");
butler(); //函数调用
printf("butler 先执行一步\n");
return 0;
}
void butler(){ //函数定义
printf("前面有人 后面也有 害怕。。。\n");
}
程序调试
//wrong program
#include <stdio.h>
int main(){
int n, int n2, int n3; //变量声明错误 int n,n1,n2;
n = 5;
n2 = n * n;
n3 = n2 * n2; //cubed 为3次方 n3 =n2*n;
printf("n = %d,n square = %d, n cubed = %d",n,n2,n3);
return 0;
}
执行过程
关键字和保留标识符
保留标识符:如printf()。
Overview
1. C语言的基本模块是什么?
函数
2. 什么是语法错误?写出一个英语例子和C语言例子。
printf("1230")
3. 什么是语义错误?写出一个英语例子和C语言例子。
two=3;
4. Indiana Sloth编写了下面的程序,并征求你的意见。请帮助他评定。
include studio.h // <stdio.h>
int main{void} /* 该程序打印一年有多少周 /* // int main()
( int s // { int s;
s := 56; // s =52;
print(There are s weeks in a year.); //printf("There are %d",s);
return 0; //}
5. 假设下面的4个例子都是完整程序中的一部分,它们都输出什么结
果?
a. printf("Baa Baa Black Sheep.");
printf("Have you any wool?\n");
b. printf("Begone!\nO creature of lard!\n"); c.printf("What?\nNo/nfish?\n");
d.int num; num = 2;
printf("%d + %d = %d", num, num, num + num);
编程练习
1. 编写一个程序,调用一次 printf()函数,把你的姓名打印在一行。再调
用一次 printf()函数,把你的姓名分别打印在两行。然后,再调用两次printf() 函数,把你的姓名打印在一行。输出应如下所示(当然要把示例的内容换成 你的姓名):
2. 编写一个程序,打印你的姓名和地址。
3. 编写一个程序把你的年龄转换成天数,并显示这两个值。这里不用考
虑闰年的问题。
4. 编写一个程序,生成以下输出:
For he’s a jolly good fellow!
For he’s a jolly good fellow!
For he’s a jolly good fellow!
Which nobody can deny!
除了 main()函数以外,该程序还要调用两个自定义函数:一个名为jolly(),用于打印前 3 条消息,调用一次打印一条;另一个函数名为 deny(),打印最后一条消息。
5. 编写一个程序,生成以下输出
Brazil, Russia,
India, China
India, China, Brazil, Russia
除了main()以外,该程序还要调用两个自定义函数:一个名为br(),调
用一次打印一次“Brazil, Russia”;另一个名为ic(),调用一次打印一次“India, China”。其他内容在main()函数中完成。
6. 编写一个程序,创建一个整型变量toes,并将toes设置为10。程序中还
要计算toes的两倍和toes的平方。该程序应打印3个值,并分别描述以示区 分。
7. 许多研究表明,微笑益处多多。编写一个程序,生成以下格式的输 出:
Smile!Smile!Smile!
Smile!Smile!
Smile!
该程序要定义一个函数,该函数被调用一次打印一次“Smile!”,根据程
序的需要使用该函数。
**8.**在C语言中,函数可以调用另一个函数。编写一个程序,调用一个名
为one_three()的函数。该函数在一行打印单词“one”,再调用第2个函数 two(),然后在另一行打印单词“three”。two()函数在一行显示单词“two”。 main()函数在调用 one_three()函数前要打印短语“starting now:”,并在调用完毕后显示短语“done!”。因此,该程序的输出应如下所示:
starting now:
one
two
three
done!