C语言基础知识实例讲解

合集下载

C语言从入门到精通(吐血分享)

C语言从入门到精通(吐血分享)

六大表达式一、算术表达式(数学表达式)(1)运算符:数学:{} [] () + - * / + -C:()、+/-、* / %、+/-正负(2)单目、双目运算符单目:一个操作数 +5 -9双目:两个操作数 5+6 7*8(3)%:<1>双目运算符<2>操作数:两个数都是整型资料1%2<3>奇数: x%2!=0偶数: x%2==0整除: %(4)在算术运算中,如果运算符两端的类型都是整型数据,那么结果是整型资料1/2 0 5/3 1 8/9 0 9/8 1在算术运算中,如果运算符两端的类型不一致,向空间大的一方转化. 1/2.0 1.0/2.0 0.5 1.0/5 1.0/5.0 0.22 4(5)优先级:(6)结合性:(7)使用多层括号,一律使用小括号(8)强制性类型转化格式:(类型名)表达式注:1)类型名括号不能省2)不存在四舍五入2.赋值表达式(1)格式变量名=表达式(2)变数的实质:存储单元(3) =:赋值号==:等号优先级:只比逗号高结合性:自右向左(4)表达式:常量、变数、六大表达式(5)在赋值表达式中,赋值号的左端只能为变量名5+8=a b=a(6) int x=2,y=3;x=y:将变量y所代表的单元中的值取出来赋值给变量x所代表的单元中x=x+1:将变量x所代表的单元中的值取出来+1赋值给变量x代表的单元中x=x:左x: 代表x所标识的单元右x:将变量x所代表的单元中的值取出来单元=值(7)变量中的值在不断进行更新x=2x=3x=99(8)复合赋值表达式(算术和赋值) 1)运算符:*= /= %= += -=2)优先级:与”=“同级3)结合性:自右向左4)复合赋值有隐含小括号功能3.关系表达式(1)逻辑值平时 C 5678 -2真非0 1假 0 0(2)运算符> >= < <= == != (3)优先级> >= < <= == != (4)结合性自左向右(5)结果:逻辑值5<6 7>94.逻辑表达式(1)运算符!:(非补集)&&:(与交集)||:(或者并集)(2)!:单目运算&& ||:双目(3)优先级高到低:! && ||(4)结合性!:自右向左&& ||:自左向右(5)使用!0 1 !非0 0非0&&非0 1 1||1 1非0&&0 0 1||0 10&&非0 0 0||1 10&&0 0 0||0 0(6)结果:逻辑值(1,0)(7)数学表示方式|x|<=9 -9<=x<=9 x>=-9&&x<=9|x|>=9 x>=9或x<=-9 x>=9||x<=-9(8)断路问题<1> 在逻辑&&运算中,如果表达式1已经为逻辑假,表达式2不用执行,该表达式值为逻辑假<2>在逻辑||运算中,如果表达式1已经为逻辑真,表达式2不用执行,该表达式值为逻辑真5.条件表达式格式:表达式1?表达式2:表达式3(1)三目运算(2)运算过程:表达式1为真,执行表达式2表达式1为假,执行表达式36.逗号表达式(1)格式:表达式1,表达式2,表达式3,表达式4,……,表达式n (2)优先级:所有运算符中优先级最低(3)结合性:自左向右int a=8;a+=3,a=5,a+3; ?a 表达式的值?附:<1>++ 、--1>功能++:+1 自动赋值--: -1 自动赋值2>单目运算3>操作数可以放在运算符的右边也可以放在运算符的左边 i++ ++i i-- --i4>操作数可以为整型、实型的变量 2++ 2=2+1 错i++ i=i+1 ++i i=i+1i-- i=i-1 --i i=i-15>表达式值和变数值int i;表达式值变数值i=5 i++ 5 6i=5 ++i 6 6i=5 i-- 5 4i=5 --i 4 4只要给出式子的整体(i++,--i)则使用的是表达式的值;如果给出变量名,使用的是变量值int i=5;j=40/i++; j=40/6 66>-i++:-(i++) j=-i++; j=-5 i=6<2>所有运算符的优先级(六个表达式)高=》低() ++/-- !算术表达式关系表达式逻辑表达式条件表达式赋值表达式逗号表达式。

c语言数组小案例

c语言数组小案例

c语言数组小案例C语言是一种广泛应用的编程语言,数组是C语言中常用的数据结构之一。

它可以存储多个相同类型的数据,并通过索引访问和操作这些数据。

下面列举了10个关于C语言数组的小案例,以帮助读者更好地理解和掌握数组的使用。

1. 计算数组元素的总和编写一个程序,从用户输入一组整数,并计算它们的总和。

使用数组来存储输入的整数,并通过循环遍历数组来计算总和。

2. 查找数组中的最大值和最小值编写一个程序,从用户输入一组整数,并找到其中的最大值和最小值。

使用数组来存储输入的整数,并通过循环遍历数组来找到最大值和最小值。

3. 数组的逆序排列编写一个程序,从用户输入一组整数,并将它们按逆序排列。

使用数组来存储输入的整数,并通过循环遍历数组来实现逆序排列。

4. 数组的去重编写一个程序,从用户输入一组整数,并去除其中的重复元素。

使用数组来存储输入的整数,并通过循环遍历数组来去除重复元素。

5. 数组的排序编写一个程序,从用户输入一组整数,并将它们按升序或降序排序。

使用数组来存储输入的整数,并通过循环遍历数组来实现排序。

6. 数组的拷贝编写一个程序,从用户输入一组整数,并将它们拷贝到另一个数组中。

使用两个数组分别存储输入的整数,并通过循环遍历数组来实现拷贝。

7. 数组的搜索编写一个程序,从用户输入一组整数,并在数组中搜索指定的值。

使用数组来存储输入的整数,并通过循环遍历数组来搜索指定的值。

8. 数组的合并编写一个程序,从用户输入两组整数,并将它们合并为一个数组。

使用两个数组分别存储输入的整数,并通过循环遍历数组来实现合并。

9. 数组的平均值和方差编写一个程序,从用户输入一组整数,并计算它们的平均值和方差。

使用数组来存储输入的整数,并通过循环遍历数组来计算平均值和方差。

10. 数组的矩阵操作编写一个程序,从用户输入一个矩阵,并实现矩阵的转置、矩阵的相加和矩阵的乘法等操作。

使用二维数组来存储输入的矩阵,并通过循环遍历数组来实现矩阵操作。

C语言入门基础代码(20条案例)

C语言入门基础代码(20条案例)

C语言入门基础代码(20条案例)下面是20条基础案例:1. 输出Hello, World!#include <stdio.h> // 使用标准输入输出库int main() {printf("Hello, World!\n"); // 输出字符串return 0; // 返回程序执行成功}2. 判断一个数是否为偶数#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数if(num % 2 == 0) { // 如果余数为0说明是偶数printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num);}return 0;}3. 计算两个数的和#include <stdio.h> // 使用标准输入输出库int main() {int a, b; // 定义变量int sum; // 定义变量printf("请输入两个整数:");scanf("%d%d", &a, &b); // 从控制台输入两个整数sum = a + b; // 求和printf("%d + %d = %d\n", a, b, sum); // 输出结果return 0;}4. 求一个数的平方#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量int square; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数square = num * num; // 求平方printf("%d 的平方是%d\n", num, square); // 输出结果return 0;}5. 判断一个字符是否为数字#include <stdio.h> // 使用标准输入输出库#include <ctype.h> // 使用字符函数库int main() {char ch; // 定义变量printf("请输入一个字符:");scanf("%c", &ch); // 从控制台输入一个字符if(isdigit(ch)) { // 判断是否为数字printf("%c 是数字\n", ch);} else {printf("%c 不是数字\n", ch);}return 0;}6. 计算数组元素的平均值#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int sum = 0; // 定义变量int avg; // 定义变量for(int i = 0; i < len; i++) { // 遍历数组sum += arr[i]; // 累加求和}avg = sum / len; // 求平均值printf("数组的平均值是%d\n", avg); // 输出结果return 0;}7. 按照下标访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, arr[i]); // 输出每个元素}return 0;}8. 使用指针访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int *p = arr; // 把数组首地址赋给指针变量for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, *(p + i)); // 输出每个元素}return 0;}9. 求Fibonacci 数列的第n 项#include <stdio.h> // 使用标准输入输出库int main() {int n; // 定义变量int a = 0, b = 1, c; // 定义变量printf("请输入一个正整数:");scanf("%d", &n); // 从控制台输入一个整数for(int i = 1; i <= n; i++) { // 求Fibonacci 数列的第n 项c = a + b;a = b;b = c;}printf("Fibonacci 数列的第%d 项是%d\n", n, a); // 输出结果return 0;}10. 使用递归计算阶乘#include <stdio.h> // 使用标准输入输出库int factorial(int n) { // 定义递归函数if(n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n; // 定义变量printf("请输入一个非负整数:");scanf("%d", &n); // 从控制台输入一个整数int result = factorial(n); // 调用递归函数计算阶乘printf("%d 的阶乘是%d\n", n, result); // 输出结果return 0;}11. 判断一个数是否是质数#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if(num <= 1) {return false; // 小于等于1的数都不是质数}for(int i = 2; i * i <= num; i++) { // 只要从2到根号num遍历就可以了if(num % i == 0) {return false; // 如果存在因子,则不是质数}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPrime(num); // 调用isPrime函数if(result) {printf("%d 是质数\n", num);} else {printf("%d 不是质数\n", num);}return 0;}12. 计算圆的面积和周长#include <stdio.h>const double PI = 3.1415926;int main() {double r, area, perimeter;printf("请输入圆的半径:");scanf("%lf", &r);area = PI * r * r; // 计算面积perimeter = 2 * PI * r; // 计算周长printf("圆的面积是%.2f,周长是%.2f\n", area, perimeter);return 0;}13. 计算斐波那契数列的前n 项#include <stdio.h>int main() {int n;printf("请输入要输出的斐波那契数列项数:");scanf("%d", &n);int a = 0, b = 1, c; // 定义三个变量for(int i = 1; i <= n; i++) { // 输出前n项斐波那契数列printf("%d ", a);c = a + b;a = b;b = c;}printf("\n"); // 换行return 0;}14. 嵌套循环输出九九乘法表#include <stdio.h>int main() {for(int i = 1; i <= 9; i++) { // 控制行数for(int j = 1; j <= i; j++) { // 控制列数printf("%d*%d=%-2d ", j, i, i * j); // 左对齐输出}printf("\n"); // 换行}return 0;}15. 获得数组的最大值和最小值#include <stdio.h>int main() {int arr[] = {3, 5, 8, 1, 4, 9, 6, 2, 7};int len = sizeof(arr) / sizeof(int);int max = arr[0], min = arr[0]; // 假设第一个元素既是最大值也是最小值for(int i = 1; i < len; i++) {if(arr[i] > max) { // 更新最大值max = arr[i];}if(arr[i] < min) { // 更新最小值min = arr[i];}}printf("数组的最大值是%d,最小值是%d\n", max, min);return 0;}16. 判断一个数是否为回文数```c#include <stdio.h>#include <stdbool.h>bool isPalindrome(int num) {if(num < 0) { // 负数不是回文数return false;}int temp = num, reversed = 0; // 定义需要用到的变量while(temp != 0) { // 反转整数reversed = reversed * 10 + temp % 10;temp /= 10;}return (num == reversed); // 如果反转后等于原来的数,则为回文数}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPalindrome(num);if(result) {printf("%d 是回文数\n", num);} else {printf("%d 不是回文数\n", num);}return 0;}17. 将字符串反转输出#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = len - 1; i >= 0; i--) { // 倒序输出printf("%c", str[i]);}printf("\n"); // 换行return 0;}18. 将一个二维数组按列排序#include <stdio.h>void sortCols(int arr[][3], int rows) {for(int j = 0; j < 3; j++) { // 按列排序for(int i = 0; i < rows - 1; i++) {for(int k = i + 1; k < rows; k++) {if(arr[i][j] > arr[k][j]) { // 比较大小并交换int temp = arr[i][j];arr[i][j] = arr[k][j];arr[k][j] = temp;}}}}}int main() {int arr[][3] = {{2, 5, 9}, {7, 6, 1}, {4, 3, 8}};int rows = sizeof(arr) / sizeof(arr[0]); // 计算数组的行数sortCols(arr, rows); // 调用函数排序for(int i = 0; i < rows; i++) { // 输出排序后的数组for(int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n"); // 换行}return 0;}19. 判断一个字符串是否为回文串#include <stdio.h>#include <string.h>#include <stdbool.h>bool isPalindrome(char str[]) {int len = strlen(str);for(int i = 0; i < len / 2; i++) { // 判断左右字符是否一样if(str[i] != str[len - i - 1]) {return false;}}return true;}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);bool result = isPalindrome(str); // 调用函数判断是否为回文串if(result) {printf("%s 是回文串\n", str);} else {printf("%s 不是回文串\n", str);}return 0;}20. 将一个整数转换成二进制数并输出#include <stdio.h>void decToBin(int num) {if(num > 1) { // 递归调用decToBin(num / 2);}printf("%d", num % 2); // 每次输出余数}int main() {int num;printf("请输入一个十进制数:");scanf("%d", &num);printf("%d 的二进制数为", num);decToBin(num); // 调用函数输出二进制数printf("\n"); // 换行return 0;}。

19个C语言经典案例

19个C语言经典案例
{ k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;}
if(leap)
{printf("%-4d",m);h++;
if(h==0)
k=strlen(c);
for (i=0,j=k-1;i<k/2;i++,j--)
{ c1=c[i];c[i]=c[j];c[j]=c1; }
printf("%s\n",c);
}
指针法:
void invert(char *s)
{int i,j,k;
#include<stdio.h>
replace(char *s,char c1,char c2)
{ while(*s!='\0')
{ if (*s==c1)
*s=c2;
s++;
}
}
main()
{ FILE *fp;
char str[100],a,b;
#include<stdio.h>
void sort(int *x,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{
t=x[i];
printf("\n");

c编程实例

c编程实例

c编程实例C语言是一门非常基础的编程语言,在许多计算机科学课程和项目中都会使用。

学习C语言可以让我们掌握编程的基本概念和技巧,从而更好地进行编程工作。

在本文中,我们将探讨一些C编程实例,让我们一步步了解C编程的基础知识和编程技巧。

1. Hello World程序Hello World程序是每个编程语言学习者的必修课程。

在C语言中,我们可以使用下面的代码来打印“Hello World”到控制台:#include<stdio.h>int main(){printf("Hello World!");return 0;}这个程序很简单,但它展示了C语言的基本语法。

首先我们用#include语句包含了“stdio.h”头文件,这是一个流输入输出库。

接下来我们定义了一个名为main的函数,这是C语言中程序的入口点。

函数的返回类型是int,意味着该函数将返回一个整数。

在函数内部,我们使用printf函数打印“Hello World”到控制台。

注意,在字符串后面加上感叹号,否则程序将只打印“Hello World”。

最后我们使用return语句表示程序将以0值退出。

这是规定编程实践中的惯例。

2. 计算平均值下面我们来编写一个程序,它可以计算任意一组数字的平均值。

#include<stdio.h>int main(){int n,i;float sum=0,num;printf("Enter the total number of elements: ");scanf("%d",&n);printf("Enter %d elements: ",n);for(i=0;i<n;i++){scanf("%f",&num);sum+=num;}printf("Average = %.2f",sum/n);return 0;}在程序的开始,我们定义了3个变量:n,i和sum。

C语言编程数组应用实例讲解

C语言编程数组应用实例讲解

C语言编程数组应用实例讲解在C语言编程中,数组是一种非常重要的数据结构,它能够存储一系列相同数据类型的元素,并按照一定的顺序进行访问。

本文将通过几个实例来讲解C语言中数组的应用。

1. 实例一:计算数组元素的和与平均值假设我们需要计算一个包含5个整数的数组的元素和与平均值,可以使用以下代码实现:```C#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int sum = 0;float avg;for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {sum += arr[i];}avg = (float)sum / (sizeof(arr)/sizeof(int));printf("数组元素的和为:%d\n", sum);printf("数组元素的平均值为:%.2f\n", avg);return 0;}```2. 实例二:查找数组中的最大值和最小值假设我们有一个包含10个整数的数组,需要找出其中的最大值和最小值。

我们可以使用以下代码实现:```C#include <stdio.h>int main() {int arr[] = {12, 45, 78, 23, 56, 89, 34, 67, 90, 1};int min = arr[0];int max = arr[0];for (int i = 1; i < sizeof(arr)/sizeof(int); i++) {if (arr[i] < min) {min = arr[i];}if (arr[i] > max) {max = arr[i];}}printf("数组中的最小值为:%d\n", min);printf("数组中的最大值为:%d\n", max);return 0;}```3. 实例三:对数组进行排序假设我们有一个包含6个整数的数组,需要对其进行升序排序。

对C语言数组的总结以及实例讲解

对C语言数组的总结以及实例讲解

对C语言数组的总结以及实例讲解对C语言数组的总结以及实例讲解数组(Array)是一系列相同类型的数据的集合,可以是一维的、二维的、多维的;最常用的是一维数组和二维数组,多维数组较少用到。

一、对数组的总结1) 数组的定义格式为:type arrayName[length]type 为数据类型,arrayName 为数组名,length 为数组长度。

需要注意的是:数组长度 length 最好是整数或者常量表达式,例如 10、20*4 等,这样在所有编译器下都能运行通过;如果 length 中包含了变量,例如 n、4*m 等,在某些编译器下就会报错。

数组在内存中占用一段连续的空间,数组名表示的是这段内存空间的`首地址。

2) 访问数组中某个元素的格式为:arrayName[index]index 为数组下标。

注意index 的值必须大于等于零,并且小于数组长度,否则会发生数组越界,出现意想不到的错误。

3) 可以对数组中的单个元素赋值,也可以整体赋值,例如:// 对单个元素赋值int a[3];a[0] = 3;a[1] = 100;a[2] = 34;// 整体赋值(不指明数组长度)float b[] = { 23.3, 100.00, 10, 0.34 };// 整体赋值(指明数组长度)int m[10] = { 100, 30, 234 };// 字符数组赋值char str1[] = "";// 将数组所有元素都初始化为0int arr[10] = {0};char str2[20] = {0};二、数组应用举例【示例1】求一个整型数组中的最大值和最小值。

#includeint main(){int a[10] = {0}, max, min, i;//从控制台获取用户输入并赋值给数组元素for(i=0; i<10; i++){scanf("%d", &a[i]);}//假设a[0]是最大值也是最小值max = a[0], min = a[0];for(i=1; i<10; i++){if(a[i] > max){max = a[i];}if(a[i] < min){min = a[i];}}printf("The max is %d, The min is %d\n", max, min); return 0;}运行结果:2 123 45 100 575 240 799 710 10 90↙The max is 799, The min is 2这段代码有两点需要说明:1) 从控制台获取数组元素时,我们一次性输入10个整数才按下回车键,而不是每输入一个整数就按一次回车键,这正是利用了标准输入缓冲区。

c语言案例教程(赵睿)d01

c语言案例教程(赵睿)d01
C语言案例教程 计算机应用教研室 计算机应用教研室 赵睿 赵睿10 10
兰州石化职业技术学院
1.3 简单的C语言程序介绍 This is a C program. #include <stdio.h> /*文件包含*/ void main( ) /*主函数 */ { /*函数体开始*/ printf ("This is a C program.\n"); /*输出语句*/ } /*函数体结束*/
C语言案例教程
计算机应用教研室 计算机应用教研室 赵睿
赵睿16 16
兰州石化职业技术学院
C语言精品课程
1.4 运行C程序的步骤和方法
1.4.1 运行C程序的步骤 •上机输入与编辑源程序 •对源程序进行编译 •与库函数连接 •运行目标程序
C语言案例教程
计算机应用教研室 计算机应用教研室 赵睿
赵睿17 17
C语言案例教程 计算机应用教研室 计算机应用教研室 赵睿 赵睿12 12
程序运行情况如下: 例1.3 求3个数中较大者。 8,5 ↙(输入8和5赋给a和b) #include <stdio.h> max=8 (输出c的值) void main( ) /* 主函数*/ { int max(int x,int y); / 对被调用函数max的声明 */ int a, b, c; /*定义变量a、b、c */ scanf(″%d,%d″,&a,&b); /*输入变量a和b的值*/ max(a,b); /*调用max函数,将得到的值赋给 c=max(a,b); c */ x,int int max(int x, inty); y) printf(″max=%d\\n″,c); { /*输出c的值*/ } int z; 说明: 本程序包括main和被调用 if (x>y) z=x; 函数max两个函数。max函数的作 else z=y; 用是将x和y中较大者的值赋给变 return (z); 量z。return语句将z的值返回给 } 主调函数main 。 C语言案例教程 计算机应用教研室 赵睿13 13 计算机应用教研室 赵睿
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言基础知识:实例讲解这篇文章旨在让各位对C 有个总体的认识,有看不懂的地方请不必太在意,只要记住就可以了,继续往下学下去就会明白的。

首先请看下面这个简单的C 程序,猜猜它会做些什么。

猜不出来也没关系,后面会有详细的解说。

#include <stdio.h>int main( void ) /* 一个简单的程序*/{int num; /* 声明一个名叫num 的变量*/num = 1; /* 将1 赋值给num */printf( "This is a simple C program. " ); /* 调用printf 函数*/printf( "My favorite number is %d because it is first. ", num );return 0;}在对这个程序进行详细说明之前,我想先请您用编译器把它编译成可执行文件,并且运行,看看运行结果和您的猜想是否一致。

如果不懂如何进行编译,请参考以下文章:下面,我将分两步对这个程序进行详细的讲解。

第一步是概要说明,也就是对程序中每一行代码的含义作简单讲解,以帮助您对这个程序有一个大致的理解。

第二步是详细说明,也就是程序中的每一行代码进行详细的讲解,以加深您的理解。

一、概要说明#include <stdio.h> <-把另外一个文件包含进来这行代码命令编译器把头文件(.h 文件)stdio.h 中的内容包含到我们的程序中。

stdio.h是C语言的标准头文件之一,提供对键盘输入和显示输出等的支持。

要使用printf 函数,就应该包含这个头文件。

顺带一提,stdio 代表standard input/output,也就是标准输入输出的意思。

int main(void) <-函数头C 程序由一个或多个函数组成。

我们的这个程序只有一个函数:main 函数。

圆括号() 表明main 是一个函数;int 表明main 函数返回一个整数;void 表明main 函数不接受任何参数。

在此,请您紧记,int main(void) 是ISO/ANSI C标准中定义的main 函数定义方法之一。

/* a simple program */ <-注释/* 和*/ 用于对程序进行注释说明,帮助读者更快更好地理解程序。

编译器会忽略/* 和*/ 之间的内容(包括/* 和*/),不会对它们进行编译。

{ <-函数体的开端这个开大括弧{ 标志着函数体开始。

函数体以闭大括弧} 结束。

在{ 和}之间的语句都属于这个函数。

int num; <-声明变量num这个语句表明我们声明了一个名叫num 的变量。

int 表明这个变量为整型变量。

num = 1; <-赋值语句这个语句将1 赋值给变量num 。

执行这个语句后,num 的值等于1 。

printf( "This is a simple C program. " ); <-函数调用语句printf 函数是C 语言标准函数库里的函数。

这个语句调用printf 函数在屏幕上显示“This is a simple C program.”,并且换行。

是换行符,它提示printf 开始新的一行,也就是将光标移动到下一行的开端。

如果上面的语句中没有,那就不会换行,而且光标会紧跟在“This is a simple program.”后面。

printf( "My favorite number is %d because it is first. ", num );%d 告诉printf 用num的值替换掉%d ,并且以整数形式显示num的值。

因为num 的值为1 ,所以这个语句在屏幕上显示“My favorite number is 1because it is first.”,并且换行。

return 0; <-返回语句C 程序应该返回一个数值给它的调用者。

0 代表程序无误退出;而其它数字的含义则由系统决定。

通常,非零(如-1)代表程序运行中遇到某种错误而退出。

} <-函数体结束函数体以闭大括弧} 结束。

二、详细说明现在,让我们进一步来了解每一行代码的含义。

下面的内容很基础,也很重要,必须认真弄懂,牢牢掌握。

1. #include 预处理指令和头文件在编译器对我们写的源程序进行编译之前,预处理器会对我们的写的源代码进行必要的处理,称为预处理。

#include 就是一个预处理指令,它命令预处理器进行的预处理是:把特定的头文件包含到我们的源代码里。

#include <stdio.h>的作用是将头文件stdio.h 里的内容包含进我们的程序,产生的结果是将stdio.h 里的内容一字不漏地插入#include <stdio.h>出现的地方,并且删除#include <stdio.h>。

换句话说,就是用stdio.h 里的内容替换#include <stdio.h>。

这个过程是在预处理阶段完成的。

C 语言的这种包含文件的机制为多个程序共享相同信息提供了极大的方便。

stdio.h 是C 语言标准中定义了的头文件,它包含着输入输出函数的信息。

所有C 编译器都应该有这个头文件,这是ANSI/ISO C 标准中规定的。

当然,ANSI/ISO C 规定的编译器必须提供的头文件可不止这么一个。

标准还规定了许多别的头文件,那些我们会在以后慢慢学到。

有些程序需要包含stdio.h ,而有些不需要。

如果上面这个例子中没有使用printf 函数,那就不需要包含stdio.h 。

头文件中包含着编译器进行编译时所需的信息。

头文件中可能指明了函数名和函数调用方法,但是这些函数的实现代码并不在头文件中,而是在预先编译好了的库文件里。

链接器负责在库文件中寻找我们的程序所需的代码,并且把那些代码和我们写的程序进行链接,从而将我的写的程序链接成可执行文件。

一句话,头文件用于指导编译器正确地将我们写的源程序编译成可执行文件。

2. main 函数在C 语言中,main 函数是主函数。

每个C 程序都必须有且只能有一个main 函数(主函数)!C 程序从main 函数开始执行,并且在main 函数中结束。

int是main 函数的返回值类型,它表明main 函数应该返回一个整数给程序的调用者(如操作系统)。

如果您想了解更多关于main 函数的东西,请点击下面的链接:C/C++ 误区一:void main3. 注释/* a simple program *//* */ 之间的内容都是注释。

对程序进行适当的注释可以帮助读者(包括您自己)更快更好地理解您写的代码。

注释可以在源程序中的任何地方书写。

/* 和*/ 之间的任何内容(包括/* 和*/)都会被编译器忽略掉。

注意:/ 和* 必须紧挨在一起,它们之间不能有空格。

/* 我是注释*//*我是跨行注释*//*我也是注释*/以上的注释都是合法的;但下面的注释是非法的,因为没写注释结束标记*/。

/* 非法,没有注释结束标记下面这个注释可能会出乎你的意料:/* 我是注释开始标记/* 哦哦,我不是注释开始标记我是注释结束标记,我和第一个/* 匹配,而不是和第二个/* 匹配。

*/上面这个注释中,注释结束标记*/ 和第一个/* 匹配,它们之间的内容都被视为注释。

C99 中增加了另外一种注释方式,这种注释方式使用// 作为注释符,和//处于同一行,并且在// 右边的内容都被当作注释。

/ 和/ 之间不能有空格。

// 我是注释int rigue; //注释放在这里也是合法的上面的注释在C99 中是合法的,但是在C89 中是非法的。

也就是说,老旧的编译器可能不支持// 注释符。

VC6 支持//,TC2 不支持。

4. 大括号与函数体C 语言中,所有函数都以大括弧({ })作为界定符。

函数体从开大括弧{开始,以闭大括弧} 结束。

在后续教程中,我会对函数进行更详细的讲解。

5. int num;这个语句声明了变量num 。

这一行末尾的分号(;)表明这一行是一个语句。

; 是语句的一部分,单独一个; 也是一个合法的C 语句。

int 是C 语言中的一个关键字,它代表C 语言里的一种基本数据类型:整型。

关键字是语言的保留字,不能用作其它用途。

例如:我们不能关键字来做变量名或者函数名。

标识符是指我们为变量或函数等取的名字。

在这个语句中,num 就是标识符。

C 语言中,所有变量在使用前都必须声明。

C89 中,变量的声明必须位于函数体或者程序块的开端。

例如:int main( void ) /* C89 */{ /* 函数体开始*/int doors;int dogs;doors = 5;dogs = 3;{ /* 程序块开始*/int dig;int dug;dig = 6;dug = 8;} /* 程序块结束*/return 0;} /* 函数体结束*/而在C99 中,声明可以位于函数体或者程序块的任何地方。

但是,变量仍然需要在声明之后才可使用。

例如:int main( void ) /* C99 */{ /* 函数体开始*/int doors;doors = 5;{ /* 程序块开始*/int dig;dig = 6;int dug;dug = 8;} /* 程序块结束*/int dogs;dogs = 3;return 0;} /* 函数体结束*/上面的程序在C99 中是合法的,但是在C89 中却是非法的。

当前支持C99 的编译器不多,所以上面的代码您的编译器很有可能编译不了。

故而,为了使我们的代码具有良好的可移植性,我们应该尽可能少用,甚至不用C99 中的新特性。

6. 赋值num = 1;赋值是C 语言中的一种基本操作。

上面的语句是一个赋值语句,它的含义是:将1 赋值给变量num 。

赋值操作完成后,num 的值等于1 。

7. printf 函数printf( "This is a simple C program. " );printf( "My favorite number is %d because it is first. ", num );这两行代码都调用了printf 函数。

printf 是一个标准C 函数,也就是说,它是C 语言标准函数库里定义了的函数。

圆括号() 表明printf 是一个函数,圆括号里的内容会被传递给printf 函数。

例如,上面第一行代码把“This is asimple C program. ”(不包括双引号)传递给printf 函数,然后由printf函数把这些信息显示于显示器。

相关文档
最新文档