资源描述
全国计算机等级考试二级C语言教案(常用版)
(可以直接使用,可编辑 完整版资料,欢迎下载)
全国计算机等级考试二级
C语言教案
National Computer Rank Examination
C Program Teaching Planning
兴龙计算机教育中心
内部教材
作者: 邹莫泊
Copyright@版权所有
全国计算机等级考试二级
C语言教案
第一章 C语言基础知识
第1课
知识点一
C语言程序构成
例1 已知矩形两边为3.6和1.2,计算矩形的面积。
#include <stdio.h>
main()
{
double a,b,area;
a=3.6;
b=1.2;
area=a*b;
printf(“%f”,area);
}
1)#include <stdio.h>表示包含系统提供的头文件,目的是
在程序中可以输入和输出。
2)main()表示主函数的开始,任何一个C程序有且只能
有一个main()函数。
3)用{ }括起来的部分称函数体。
4)double a,b,area; 表示定义三个双精度型变量。
变量a和b表示矩形两条边,area表示矩形面积。
5)a=1.2; 和 b=3.6; 表示给变量a赋值1.2、给变量b
赋值3.6。
6)area=a*b; 表示将a乘以b的结果即矩形的面积保存
在变量area中。
7)printf(“%f”,area); 表示输出变量area的值即矩形面积。
此例中%f表示双精度输出格式符。
知识点二
标识符
按照C语言所定义的规则来命名的符号。
规则: 由字母、数字、下划线组成,但第一个字符必须
是字母或下划线。
例如: area、a234、_1234为合法标识符
456P、a-b、a+b为非法标识符
注意: 标识符区分大小写。
例如: PAGE和page是两个不同的标识符。
知识点三
常量
指在程序运行中,其值不能被改变。
分为整型常量、实型常量、字符常量、字符串常量。
例如: 12、-3为整型常量 3.14159为实型常量
‘A’、’d’为字符常量 “Beijing”为字符串常量
符号常量
用符号名来表示一个常量。
格式: #define 符号名 常量值
例2 已知圆的半径为5.0,计算圆的面积(圆周率取3.14)。
#include <stdio.h>
#define PI 3.14
main()
{ double r, s;
r=5.0;
s=PI*r*r;
printf(“s=%f\n”,s);
}
知识点四
变量
指在程序运行过程中其值可以改变的量。
变量的命名必须符合标识符的命名规则,且不能和C语言
中关键字同名。(例如: main是关键字)
例如: a、b、ab为合法变量
define、printf为非法变量
注意: ab是一个整体,含义不同于a乘以b。
练习题
1 已知两个双精度数为3.5和2.5,计算它们的平方和。
2 已知圆的半径为3.0,圆周率取3.14,计算圆的周长。
(要求使用符号常量)
第2课
知识点一
整型常量
C语言中主要有十进制、八进制、十六进制等。
十进制 例如 12、-3、32767等。
八进制 用数字0开头,由0-7这8个数字组成。
例如 010、016为合法八进制数
127、018为非法八进制数
十六进制 用数字0和字母x或X开头,用0-9表示前10
个数字,字母A-F(可小写)表示后6个数字。
例如 0xAF、0x10、0x34为合法十六进制数
100、ABC、0xAFH为非法十六进制数
注意: C语言中只有十进制数可以为负数。
知识点二
整型变量
分为基本型、短整型、长整型、无符号型。
基本型 int 短整型 short int
长整型 long int 无符号型 unsigned
注意: 无符号型不能表示小于0的负数。
定义整型变量
例1 定义两个整型变量i和j。
int i, j;
例2 定义两个长整型变量a和b,初值分别为3和5。
long a=3, b=5;
知识点三
实型常量
表示方式有两种: 小数形式和指数形式。
小数形式
例如: 0.123、.123、123. 都是合法形式。
指数形式
例如: 2.3026可用以下任何一种指数表示
0.23026E1、2.3026e0、23.026E-1
但下面的指数形式为非法
E3、.5e3.6、2.3e -2(e和-2间有空格)
知识点四
实型变量
分为单精度和双精度两种。
定义单精度型变量
例如: float a,b,c;
定义双精度型变量
例如: double x,y,z;
注意: 不能用整型变量存放一个实数,也不能用实型变量
存放一个整数。
例如: double x;
x=3; 此语句非法,应改为x=3.0;
练习题
1 写出0x39后面的数和0300前面的数。
2 将0370和0x3CF分别转换为十进制数。
3 已知两个数分别为最小素数和最小合数,计算它们的平
方和与和的平方之差。
第3课
知识点一
算术运算符
+、-、*、/、%(求余数)
例如: 3+2 1.2*3.2 5%3 1/2
运算规则
1)如果运算数类型一致,则结果为运算数的类型。
2)如果运算数类型不一致,则系统自动转换,使运算符
两边类型一致后再进行运算。
例1 1.0/2.0结果为0.5
例2 1/2结果为0
例3 15/3.0结果为5.0
运算符优先级
从高到低依次是( )、*、/、%、+、-
括号级别最高,*、/、%三个同级别,+、-同级别。
例1 5+2*(-2)+15%15/3结果为1
例2 3+sqrt(225)-5*(-3)结果为33
例3 15-sqrt(sqrt(81))+abs(5-sqrt(36))结果为13
sqrt表示开平方,abs表示绝对值。
注意:
1)sqrt和abs为数学函数,若在程序中使用,需要包含相应的头文件<math.h>。
2)abs函数求整数的绝对值,fabs函数求实数的绝对值。
知识点二
强制类型转换
格式: (类型名)(表达式)
例1 (int)3.234结果为3
例2 (float)(10%3)结果为1.000000
知识点三
赋值表达式
格式: 变量名=表达式
例如: a=10 a=a+1 a=b=7+1为合法表达式
a+b=8 a=7+1=b为非法表达式
整个表达式的值等于最左边变量的值。
例如: a=b=c=8*8 整个表达式最后的值为64
复合赋值表达式
复合运算符: +=、-=、*=、/=、%=
例如: n=n+1表达式可写成n+=1
n=n%3表达式可写成n%=3
n*=m+3表达式可写成n=n*(m+3)
例1 假设变量a初值为9,计算下列表达式。
a+=a-=a+a
解答:
1) 计算a+a,结果为18,a值未变。
2) 计算a-=18,即a=a-18,结果为-9,a值变为-9。
3) 计算a+=-9,即a=a+(-9),结果为-18,a值变为-18。
整个表达式最后结果为-18,a最后值为-18。
注意: a=a+1为赋值表达式,而a=a+1; 为赋值语句。
知识点四
自加和自减运算符
例如: a++和++a等价于a=a+1
b--和--b等价于b=b-1
a++和++a的区别:
假设a的初值为5
表达式a++值为5,最后a值为6。
表达式++a值为6,最后a值为6。
知识点五
逗号表达式
格式: 表达式1,表达式2,…..,表达式n
从左至右依次计算每个表达式,最后一个表达式的值即为
整个逗号表达式的值。
例如: 表达式i=3,++i,i+5最后结果为9,i最后值为4。
练习题
1 用C语言表达式表示出一元二次方程的两根。
2 假设变量a和b初值分别为5和6,计算下列表达式。
a-=b+=b%(a+b)/a-3%5
3 已知直角三角形的两直角边为3.5和4.5,计算斜边。
第二章 顺序结构
第1课
知识点一
数据输出 printf
格式: printf(格式符,输出项1,输出项2,….)
格式符 功能
%c 输出一个字符
%d 输出十进制整数
%f 输出小数形式浮点数
%e 输出指数形式浮点数
%s 输出一个字符串
数据宽度说明:
1)在%和格式字符之间插入一个整数来指定输出宽度。
例如: %4d、%5c
2)对于float和double类型的实数,可以用n1.n2形式
n1指定输出数据的宽度(包括小数点),n2指定小数
点后小数的位数。
例如: %12.3f、%12.0f
例1 输出整型变量a和b的值,数据宽度均为4。
printf(“%4d%4d”,a,b);
例2 输出单精度变量k的值,保留2位小数。
printf(“%.2f”,k);
知识点二
数据输入 scanf
格式: scanf(格式符,输入项1,输入项2,…)
格式符 功能
%c 输入一个字符
%d 输入十进制整数
%f 输入单精度数
%lf 输入双精度数
%s 输入一个字符串
例1 从键盘上输入两个整数,保存在变量a和b中。
scanf(“%d%d”,&a,&b);
例2 从键盘上输入一个双精度数,保存在变量data中。
scanf(“%lf”,&data);
此处两例中&是C语言运算符,表示取变量地址。
知识点三
复合语句
格式: {语句1 语句2 …. 语句n}
例1 用复合语句将变量a,b,c依次赋值为最小素数。
{ a=2; b=3; c=5; }
例2 用复合语句实现变量a和b的值的交换。
{ k=a; a=b; b=k; }
知识点四
空语句
格式: ;
仅由一个分号组成,不产生任何行为。
练习题
1 从键盘上输入两个整数,输出它们的平方差。
2 从键盘上输入两个双精度数,输出它们差的绝对值。
3 编程输出一元二次方程3x2-4x+1的两根。
(要求结果保留2位小数)
第三章 选择结构
第1课
知识点一
关系运算符
>、<、>=、<=、==、!=
关系运算的结果只有两种: 真或假
C语言中用1表示真,用0表示假。
标准信息交换码(ASCII码)
大写字母 A 65 B 66 …依此类推
小写字母 a 97 b 98 …依此类推
数字0-9 0 48 1 49 …依此类推
空格 32
例1 6>=6 ‘a’>’A’ ‘5’>’ ‘ 结果均为真,值为1
例2 6!=6 ‘D’==’d’ ‘9’>’F’ 结果均为假,值为0
知识点二
逻辑运算符
&&(与) ||(或) !(非)
优先级: 非运算>与运算>或运算
非运算规则
操作数 结果
真 假
假 真
与运算规则
操作数1 操作数2 结果
真 真 真
真 假 假
假 真 假
假 假 假
或运算规则
操作数1 操作数2 结果
真 真 真
真 假 真
假 真 真
假 假 假
例1 若变量a值为10,变量b值为16,计算表达式。
a>b || a>sqrt(b) && b>=16
最后结果为真,表达式的值为1
知识点三
if 语句
格式1:
if(表达式) 语句
若表达式为真,则执行语句;否则if语句结束。
格式2:
if(表达式) 语句1
else 语句2
若表达式为真,则执行语句1;否则执行语句2。
例1 从键盘上输入两个整数,输出较大的数。
#include <stdio.h>
main()
{
int x,y;
printf(“请输入两个整数:\n”);
scanf(“%d%d”,&x,&y);
if (x>y)
printf(“%d”,x);
else
printf(“%d”,y);
}
练习题
1 用C语言表达式表示x不在区间[15,30]且x为奇数。
2 从键盘上输入一个整数,若能被3或5整除则输出此
整数的平方。
3 从键盘上输入一个整数,若是完全平方数输出”yes”;
否则输出”no”。
第2课
知识点一
if语句嵌套
格式:
if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
……
else 语句n
若表达式1为真,则执行语句1;否则若表达式2为真,
则执行语句2……若所有表达式均为假,则执行语句n。
例1 根据输入的学生成绩,大于或等于90分为A,60
分以下等级为E,其余每10分一个等级。
#include <stdio.h>
main()
{
int g;
printf(“请输入一个整数:\n”);
scanf(“%d”,&g);
if (g>=90) printf(“A\n”);
else if(g>=80) printf(“B\n”);
else if(g>=70) printf(“C\n”);
else if(g>=60) printf(“D\n”);
else printf(“E\n”);
}
知识点二
条件运算符
格式: 表达式1? 表达式2: 表达式3
若表达式1为真,结果为表达式2;否则为表达式3。
例如: x的初值为5,执行以下语句
y=++x>6?100:200; 最后y的值为200
知识点三
switch语句
格式:
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
……
case 常量表达式n-1: 语句n-1
default: 语句n
}
若表达式的值与表达式1相等,则执行语句1;若与表达
式2相等,则执行语句2……若均不相等则执行语句n。
例1 用switch语句重写学生等级程序。
#include <stdio.h>
main()
{
int g;
printf(“请输入一个整数:\n”);
scanf(“%d”,&g);
switch(g/10)
{
case 10: printf(“A\n”); break;
case 9: printf(“A\n”); break;
case 8: printf(“B\n”); break;
case 7: printf(“C\n”); break;
case 6: printf(“D\n”); break;
default: printf(“E\n”);
}
}
程序中break表示跳过后面的分支。
知识点四
跳转语句
格式: goto 标号
程序从当前位置转到标号处继续执行。
例1 下列程序中使用标号实现反复输入数据。
#include <stdio.h>
main()
{ int k;
p: scanf(“%d”,&k);
printf(“%d”,k*k);
goto p;
}
练习题
1 从键盘上输入一个年份,若是闰年则输出”yes”;否则
输出”no”。
闰年的判断方法:
1)若年份能被400整除,则是闰年。
2)若年份能被4整除,但不能被100整除也是闰年。
2 从键盘上输入一个双精度数,输出下列表达式的值。
x2+1 (x>0)
s= 2x+3 (x=0)
x2-1 (x<0)
3 从键盘上输入三个整数,输出最大数和最小数。
第四章 循环结构
第1课
知识点一
while循环
格式:
while(表达式) 循环体
若表达式为真,则执行循环体。再判断表达式,若仍为真
则重复执行循环体直到表达式为假时循环结束。
例1 编程计算S=1+2+……100。
#include<stdio.h>
main()
{
int k=1,s=0;
while (k<=100)
{ s=s+k; k=k+1; }
printf(“%d”,s);
}
知识点二
do-while循环
格式:
do
循环体
while(表达式);
先执行循环体,然后判断表达式。若为真则重复执行
循环体直到表达式为假时循环结束。
例1 用do-while循环计算10!
#include<stdio.h>
main()
{
int k=1;
long s=1;
do
{ s=s*k; k++; }
while (k<=10);
printf(“%ld”,s);
}
注意: while循环和do-while循环的区别
while循环是先判断表达式,因此循环体有可能一次也不执行。do-while循环是先执行一次循环体,再判断表达式,所以不论表达式为真为假,循环体至少要执行一次。
知识点三
for循环
格式:
for(表达式1;表达式2;表达式3) 循环体
先执行表达式1,然后判断表达式2,若为真则执行
循环体。然后执行表达式3,再判断表达式2,若仍
为真则重复执行循环体直到表达式2为假时结束。
例1 用for循环计算S=1+2+…100。
#include<stdio.h>
main()
{
int k,sum=0;
for(k=1;k<=100;k++)
sum=sum+k;
printf(“%d”,sum);
}
例2 若一个三位数个位、十位、百位的立方和等于它本身
则称这个数为水仙花数。例如153是一个水仙花数。编程输出所有的水仙花数。
#include<stdio.h>
main()
{
int a,b,c,i;
for(i=100;i<=999;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);
}
}
练习题
1 编程计算S=1-2+3-4….-100。
2 编程计算S=1+1/(1*3)+1/(3*5)+……+1/(97*99)。
3 编程计算1至100之间能同时被3和5整除的数之和。
第2课
知识点一
for循环嵌套
最常用的是二重for循环。
例1 编程计算S=1!+2!+3!+........+10!
#include<stdio.h>
main()
{
int i,j;
long t,s=0;
for(i=1;i<=10;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
printf("%ld",s);
}
知识点二
break语句
用在循环体内表示强行退出循环。
例1 计算S=1+2+3+…n,直到累加和大于5000为止。
#include <stdio.h>
main()
{
int i,s=0;
for(i=1; ;i++)
{
s=s+i;
if(s>5000) break;
}
printf(“%d”,s);
}
注意: 当有多重循环时,break只能退出最内层循环。
知识点三
continue语句
用在循环体中用来跳过本次循环余下的语句,立即开始
下一轮循环,整个循环并未结束。
例1 写出下列程序运行结果。
int i, k=0, s=0;
for(i=1;i<=5; i++)
{
s=s+i;
if(s>5)
{ printf(“i=%d,s=%d,k=%d\n”,i,s,k);
continue;
}
k=k+s;
printf(“i=%d,s=%d,k=%d\n”,i,s,k);
}
运行结果:
i=1,s=1,k=1
i=2,s=3,k=4
i=3,s=6,k=4
i=4,s=10,k=4
i=5,s=15,k=4
练习题
1 编程计算满足S=1+3+5……+n大于1000的最小n。
2 编程求S=1!+2!+…n!(n从键盘输入)
3 编程求S=1+(1+2)+(1+2+3)+…(1+2+…n)(n从键盘输入)
第五章 字符型数据
第1课
知识点一
字符常量
用单引号将一个字符括起来称字符常量。
例如: ‘A’、’c’、’5‘都是合法的字符常量。
”A”、’abc’都是非法的字符常量。
知识点二
转义字符常量
转义字符是以\开头,后面跟一个特定字符。
常见的转义字符:
\n 回车换行 \\ 反斜杠
\’ 单引号 \”双引号
\ddd 三位八进制 \xhh 二位十六进制
\0 空值
例1 ‘\n’表示回车换行 ‘\’’表示一个单引号
例2 ‘\101’表示字符’A’ ‘\x41’表示字符’A’
知识点三
字符常量的运算
C语言中,字符常量均作为整数来运算。
例如: ‘A’+32=97 ‘B’-‘A’=1 ‘0’+4=52
知识点四
字符变量
用关键字char定义,可以同时赋初值。
例1 定义两个字符变量ch1和ch2。
char ch1,ch2;
例2 定义两个字符变量a和b,初值分别为’1’和’2’。
char a=’1’, b=’2’;
第2课
知识点一
字符的输入和输出
使用scanf和printf时,格式符均为%c。
例1 从键盘输入一个字符保存在ch中。
scanf(“%c”,&ch);
例2 char c1=’A’, c2;
c2=c1+1;
printf(“%c”,c2);
输出结果是’B’
知识点二
getchar函数和putchar函数
分别用来输入字符和输出字符。
例1 从键盘上输入一个字符保存在ch中。
char ch;
ch=getchar();
例2 char c1=’A’, c2;
c2=c1+1;
putchar(c2);
输出结果是’B’。
例3 输出一个回车换行符。
putchar(‘\n’);
知识点三
字符程序实例
例1 从键盘上输入一个大写字符和一个整数N(1-9),按照下列规则输出加密字符和解密字符。
加密规则: 字符向后移N位。
例如N=3时,A变成D,Z变成C。
解密规则: 字符向前移N位。
例如N=3时,A变成X,Z变成W。
#include<stdio.h>
main()
{
char ch,ch1,ch2;
int n;
printf("请输入一个大写字符:\n");
scanf("%c",&ch);
printf("请输入n值(1-9):\n");
scanf("%d",&n);
if(ch+n>'Z')
ch1=ch+n-26;
else
ch1=ch+n;
if(ch-n<'A')
ch2=ch-n+26;
else
ch2=ch-n;
printf("加密字符是%c\n",ch1);
printf("解密字符是%c\n",ch2);
}
例2 从键盘上输入一串字符,最后以’!’为结束标志。分别
统计大写字母,小写字母、数字出现的次数。
#include<stdio.h>
main()
{
char ch;
int n1=0,n2=0,n3=0;
printf(“请输入一串字符以!结束:\n”);
ch=getchar();
while(ch!='!')
{
if(ch>='A' && ch<='Z')
n1++;
if(ch>='a' && ch<='z')
n2++;
if(ch>='0' && ch<='9')
n3++;
ch=getchar();
}
printf("大写字母出现次数是%d\n",n1);
printf("小写字母出现次数是%d\n",n2);
printf(“数字出现次数是%d\n",n3);
}
练习题
1 从键盘上输入一个字符,输出对应的大写或小写。
2 从键盘上输入一串字符,最后以’!’为结束标志。输出
字母c出现的次数。(不区分大小写)
第六章 数组
第1课
知识点一
定义一维数组
格式: 类型名 数组名[一维上界]
例1 定义一个包含4个整数的数组a
int a[4];
例2 定义一个包含3个双精度数的数组b
double b[3];
注意: C语言中数组的下界从0开始计数。
例如: a[4]的4个元素分别为a[0]、a[1]、a[2]、a[3]
知识点二
一维数组的初始化
用一对大括号将数组的初值括起来。
例1 int a[3]={1, 2, 3};
此例中a[0]值为1、a[1]值为2、a[2]值为3
例2 int a[5]={0};
此例中数组a的全部元素值均为0
例3 int a[3]={1, 2, 3, 4};
此例中由于初值个数多于数组元素个数,所以非法。
例4 int a[ ]={0, 0, 0, 0};
此例中省略数组元素个数,初值为4个0
等价于int a[4]={0};
注意: 数组名是一个常量值,不能对它赋值。
例如: int a[3];
a=5; 此语句非法,应改为a[0]=5;
知识点三
一维数组应用
例1 从键盘上输入10个整数,输出最大数和最小数。
#include<stdio.h>
main()
{
int a[10],i,max,min;
printf("请输入10个整数:\n");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=1;i<=9;i++)
{
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
printf("最大数是%d\n",max);
printf("最小数是%d\n",min);
}
例2 斐波数列的定义如下:
1、1、2、3、5、8、13、……
编程输出斐波数列的第40项值。
#include<stdio.h>
main()
{
long a[40];
int i;
a[0]=1;
a[1]=1;
for(i=2;i<=39;i++)
a[i]=a[i-1]+a[i-2];
printf("%ld",a[39]);
}
练习题
1 从键盘上输入10个整数,输出其中完全平方数之和。
2 从键盘上输入10个整数,输出和平均数最接近的数。
第2课
知识点一
定义二维数组
格式: 类型名 数组名[一维上界][二维上界]
例1 定义一个2行2列的整型数组a
int a[2][2];
此例中数组a共有4个元素,分别是a[0][0]、a[0][1]、a[1][0]、a[1][1]。
例2 定义一个4行4列的整型矩阵a
int a[4][4];
二维数组看成一维数组
例如: a[3][4]看成由a[0]、a[1]、a[2]组成的一维数组,每个元素又是由4个元素组成的一维数组。
注意: a[0]、a[1]、a[2]不是元素,而是数组每行首地址。
知识点二
二维数组的初始化
用嵌套的大括号将数组初值括起来。
例1 int a[4][3]={ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
例2 int a[4][3]={ {1,2}, {4,5}, {7}, {10} };
此例中系统自动给空缺的地方补0
例3 int a[4][3]={ {1,2}, {4,5} };
系统自动给后面的行补初值0
例4 int a[4][3]={1, 2, 4, 5};
此例中数组a的第一行中元素和第二行的第一个
元素依次为1,2,4,5其余全部为0
知识点三
定义二维数组大小
例1 int a[ ][3]={ { 1,2,3}, {4,5}, {6}, {8} };
有4个行花括号,因此说明是4行3列。
例2 int a[ ][3]={1, 2, 3, 4, 5};
这种方式计算规则:
1)第二维数值能被初值个数整除
第一维数=商数
2)第二维数值不能被初值个数整除
第一维数=商数+1
因此上例中表示一个2行3列数组。
知识点四
二维数组应用
例1 从键盘上输入5个学生3门课程的成绩,分别计算
每个学生的平均分和每门课程的平均分。
#include<stdio.h>
#define M 5
#define N 3
main()
{
int a[M][N],i,j,sum;
printf("请输入15个分数(0-100):\n");
for(i=0;i<=M-1;i++)
for(j=0;j<=N-1;j++)
scanf("%d",&a[i][j]);
printf("每个学生的平均分\n");
for(i=0;i<=M-1;i++)
{
sum=0;
for(j=0;j<=N-1;j++)
sum=sum+a[i][j];
printf("%4d",sum/N);
}
printf("\n");
printf("每门课程的平均分\n");
for(i=0;i<=N-1;i++)
{
sum=0;
for(j=0;j<=M-1;j++)
sum=sum+a[j][i];
printf("%4d",sum/M);
}
}
例2 从键盘上输入一个4行4列整数矩阵,输出左上至
右下对角线元素之和。
#include<stdio.h>
#define M 4
#define N 4
main()
{
int a[M][N],i,j,sum=0;
printf(“请输入16个整数:\n”);
for(i=0;i<=M-1;i++)
for(j=0;j<=N-1;j++)
scanf("%d",&a[i][j]);
for(i=0;i<=M-1;i++)
sum=sum+a[i][i];
printf("%d",sum);
}
练习题
1 从键盘上输入一个4行4列的整数矩阵。输出此矩阵右上至左下对角线元素之和。
2 从键盘上输入一个4行4列的整数矩阵。输出此矩阵下半三角形的所有元素之和。
3 从键盘上输入一个4行4列的整数矩阵。输出此矩阵最外围元素之和。
第七章 指针
第1课
知识点一
定义一级指针
格式: 类型名 *变量名
例1 定义两个指向整型变量的指针p1和p2。
int *p1, *p2;
例2 定义两个整型变
展开阅读全文