前言
本文为业余学习《明解C语言入门篇》的记录,包含代码清单和练习题。
开始学习时间:2022年8月21日
+++++++++++++++++++++++++++++++
第1章 初识C语言
第2章 运算和数据类型
第3章 分支结构程序
第4章 程序的循环控制
第5章 数组
第6章 函数
第7章 基本数据类型
第8章 动手编写各种程序吧
第9章 字符串的基本知识
第10章 指针
第11章 字符串和指针
第12章 结构体
第13章 文件处理
+++++++++++++++++++++++++++++++
第6章、函数
6-1 什么是函数
代码清单 6-1
//求两个整数中较大的值
#include <stdio.h>
//返回较大整数的值
int max2(int a,int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}
int main()
{
int n1,n2;
puts("请输入两个整数的值。");
printf("整数1:"); scanf("%d",&n1);
printf("整数2:"); scanf("%d",&n2);
printf("较大的值是%d。\n",max2(n1,n2));
return 0;
}
代码清单 6-2
//求三个整数中的最大值
#include <stdio.h>
int max3(int a,int b,int c)
{
int max=a;
if(b>max)
{
max=b;
}
if(c>max)
{
max=c;
}
return max;
}
int main()
{
int a,b,c;
printf("请输入三个整数。\n");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("整数3:"); scanf("%d",&c);
printf("它们的最大值是%d。\n",max3(a,b,c));
return 0;
}
练习 6-1
//练习6-1,创建一个函数,返回两个整数中较小的数
#include <stdio.h>
int min2(int a,int b)
{
return (a>b)?b:a;
}
int main()
{
int a,b;
printf("请输入两个整数。\n");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("它们中较小数是%d。\n",min2(a,b));
return 0;
}
练习 6-2
//创建一个函数,返回三个整数中的最小数
#include <stdio.h>
int main()
{
int a,b,c;
puts("请输入三个整数。");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("整数3:"); scanf("%d",&c);
printf("它们中的最小数是%d。\n",min3(a,b,c));
return 0;
}
int min3(int a,int b,int c)
{
int min=a;
if(b<min)
{
min=b;
}
if(c<min)
{
min=c;
}
return min;
}
代码清单 6-3
//计算两个整数的平方差
#include <stdio.h>
int sqr(int x)
{
return x*x;
}
int diff(int a,int b)
{
return(a>b?a-b:b-a);
}
int main()
{
int a,b;
puts("请输入两个整数。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("它们的平方差是%d。\n",diff(sqr(a),sqr(b)));
return 0;
}
练习 6-3
//创建一个函数,返回int型整数的立方
#include <stdio.h>
int cube(int x)
{
return x*x*x;
}
int main()
{
int a;
printf("请输入一个整数:");
scanf("%d",&a);
printf("它的立方值是%d。\n",cube(a));
return 0;
}
代码清单 6-4
//求四个整数中的最大值
#include <stdio.h>
int max2(int a,int b)
{
return a>b?a:b;
}
int max4(int a,int b,int c,int d)
{
return max2(max2(a,b),max2(c,d));
}
int main()
{
int a,b,c,d;
puts("请输入四个整数。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
printf("整数d:"); scanf("%d",&d);
printf("它们中最大数是%d。\n",max4(a,b,c,d));
return 0;
}
练习 6-4
//求int型整数的四次幂
#include <stdio.h>
int sqr(int x)
{
return x*x;
}
int pow4(int x)
{
return sqr(sqr(x));
}
int main()
{
int a;
printf("请输入一个整数:");
scanf("%d",&a);
printf("它的四次幂是%d。\n",pow4(a));
return 0;
}
代码清单 6-5
//求幂
#include <stdio.h>
double power(double x,int n)
{
int i;
double temp=1.0;
for(i=0;i<n;i++)
{
temp*=x;
}
return temp;
}
int main()
{
double a;
int b;
puts("求a的b次幂。");
printf("请输入实数a:"); scanf("%lf",&a);
printf("请输入整数b:"); scanf("%d",&b);
printf("%.2f的%d次幂是%.2f。\n",a,b,power(a,b));
return 0;
}
代码清单 6-6
//计算幂
#include <stdio.h>
double power(double x,int n)
{
double temp=1.0;
while(n-->0)
{
temp*=x;
}
return temp;
}
int main()
{
double a;
int b;
puts("计算a的b次幂。");
printf("请输入实数a:"); scanf("%lf",&a);
printf("请输入整数b:"); scanf("%d",&b);
printf("%.2f的%d次幂是%.2f。\n",a,b,power(a,b));
return 0;
}
练习 6-5
//创建一个函数,返回1到n之间所有整数的和
#include <stdio.h>
int sumup(int n)
{
int temp=0;
while(n>0)
{
temp+=n;
n--;
}
return temp;
}
int main()
{
int n;
puts("计算1到n的和。");
printf("请输入整数n:");
scanf("%d",&n);
printf("整数1到%d的和是%d。\n",n,sumup(n));
return 0;
}
6-2 函数设计
代码清单 6-6
//显示出一个直角在左下方的等腰直角三角形(函数版)
#include <stdio.h>
void put_stars(int n)
{
while (n-->0)
{
putchar('*');
}
}
int main()
{
int i,len;
printf("生成一个直角在左下方的等腰直角三角形。\n");
printf("短边:");
scanf("%d",&len);
for (i=1;i<=len;i++)
{
put_stars(i);
putchar('\n');
}
return 0;
}
代码清单 6-8
//显示直角在右下角的等腰直角三角形(函数版)
#include <stdio.h>
void put_chars(int ch,int n)
{
while (n-->0)
{
putchar(ch); //字符常量为int型,所以ch也是int型变量
}
}
int main()
{
int i,len;
printf("生成一个直角在右下方的等腰直角三角形。\n");
printf("短边:");
scanf("%d",&len);
for (i=1;i<=len;i++)
{
put_chars(' ',len-i);
put_chars('*',i);
putchar('\n');
}
return 0;
}
练习 6-6
//创建一个函数,连续发出n次响铃
#include <stdio.h>
void alert(int n)
{
while (n-->0) //先判断n是否大于0,再进行n自减
{
printf("%d\a\n",n); //最后一次执行此语句时,n已经由1自减为0;
}
}
int main()
{
int i;
printf("响铃次数:");
scanf("%d",&i);
alert(i);
return 0;
}
代码清单 6-9
//逆向显示输入的正整数
#include <stdio.h>
int scan_int(void)
{
int temp;
do{
printf("请输入一个正整数:");
scanf("%d",&temp);
if (temp<=0)
{
printf("\a请不要输入非正整数。\n");
}
}while (temp<=0);
return temp;
}
int rev_int(int num)
{
int temp=0;
do{
temp=temp*10+num%10;
num/=10;
}while (num>0);
return temp;
}
int main()
{
int nx=scan_int();
printf("该整数倒转后的值是%d。\n",rev_int(nx));
return 0;
}
练习 6-7
//创建一个程序,在屏幕上显示“你好!”,并换行
#include <stdio.h>
void hello(void)
{
puts("你好!");
}
int main()
{
hello();
return 0;
}
代码清单 6-10
//计算最高分
#include <stdio.h>
#define NUMBER 5
int tensu[NUMBER];
int top(void);
int main()
{
extern int temsu[];
int i;
printf("请输入%d名学生的分数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("%d:",i+1);
scanf("%d",&tensu[i]);
}
printf("最高分=%d\n",top());
return 0;
}
int top(void)
{
extern int tensu[];
int i;
int max=tensu[0];
for(i=1;i<NUMBER;i++)
{
if(tensu[i]>max)
{
max=tensu[i];
}
}
return max;
}
代码清单 6-11
//计算英语分数和数学分数中的最高分
#include <stdio.h>
#define NUMBER 5
int max_of(int v[],int n)
{
int i;
int max=v[0];
for (i=1;i<n;i++)
{
if (v[i]>max)
{
max=v[i];
}
}
return max;
}
int main()
{
int i;
int eng[NUMBER];
int mat[NUMBER];
int max_e,max_m;
printf("请输入%d名学生的分数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("[%d] 英语:",i+1); scanf("%d",&eng[i]);
printf(" 数学:"); scanf("%d",&mat[i]);
}
max_e=max_of(eng,NUMBER);
max_m=max_of(mat,NUMBER);
printf("英语最高分=%d\n",max_e);
printf("数学最高分=%d\n",max_m);
return 0;
}
代码清单 6-12
//将数组元素设置为0
#include <stdio.h>
void set_zero(int v[],int n)
{
int i;
for (i=0;i<n;i++)
{
v[i]=0;
}
}
void printf_array(const int v[],int n)
{
int i;
printf("{ ");
for (i=0;i<n;i++)
{
printf("%d ",v[i]);
}
printf("}");
}
int main()
{
int ary1[]={1,2,3,4,5};
int ary2[]={3,2,1};
printf("ary1="); printf_array(ary1,5); putchar('\n');
printf("ary2="); printf_array(ary2,3); putchar('\n');
set_zero(ary1,5);
set_zero(ary2,3);
printf("ary1="); printf_array(ary1,5); putchar('\n');
printf("ary2="); printf_array(ary2,3); putchar('\n');
return 0;
}
练习 6-8
//创建一个函数,返回元素个数为n的int型数组v中的最小值
#include <stdio.h>
#define NUMBER 5
int min_of(const int v[],int n)
{
int i;
int min=v[0];
for (i=1;i<n;i++)
{
if (v[i]<min)
{
min=v[i];
}
}
return min;
}
int main()
{
int i;
int array[NUMBER]={0};
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("%d:",i+1);
scanf("%d",&array[i]);
}
printf("最小值是%d。\n",min_of(array,NUMBER));
return 0;
}
练习 6-9
//创建一个函数,对元素个数为n的int型数组v进行倒序排列
#include <stdio.h>
#define NUMBER 5
void rev_intary(int v[],int n)
{
int i;
int temp;
for (i=0;i<n/2;i++)
{
temp=v[i];
v[i]=v[n-1-i];
v[n-1-i]=temp; //n-1是数组最后一个元素的下标
}
}
int main()
{
int i;
int vx[NUMBER];
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("vx[%d]:",i);
scanf("%d",&vx[i]);
}
rev_intary(vx,NUMBER);
puts("倒序排列了!");
for (i=0;i<NUMBER;i++)
{
printf("vx[%d]:%d\n",i,vx[i]);
}
return 0;
}
练习 6-10
//创建一个函数,对元素个数为n的int型数组v2进行倒序排列,并将其结果保存在数组v1中
#include <stdio.h>
#define NUMBER 5
void intary_rcpy(int v1[],const int v2[],int n)
{
int i;
for (i=0;i<n;i++)
{
v1[i]=v2[n-1-i];
}
}
int main()
{
int i;
int v1[NUMBER]={0},v2[NUMBER]={0};
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("v2[%d]:",i);
scanf("%d",&v2[i]);
}
intary_rcpy(v1,v2,NUMBER);
puts("数组v2已经倒序并保存到数组v1中了!");
for (i=0;i<NUMBER;i++)
{
printf("v1[%d]:%d\n",i,v1[i]);
}
return 0;
}
代码清单 6-13
//线性查找(顺序查找)
#include <stdio.h>
#define NUMBER 5
#define FAILED -1
int search(const int v[],int key,int n)
{
int i=0;
while(1)
{
if (i == n)
{
return FAILED;
}
if (v[i] == key)
{
return i;
}
i++;
}
}
int main()
{
int i;
int key,idx;
int v[NUMBER]={0};
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("v[%d]:",i);
scanf("%d",&v[i]);
}
printf("要查找的值:");
scanf("%d",&key);
idx=search(v,key,NUMBER);
idx==FAILED?printf("\a查找失败!\n"):printf("%d是数组的第%d号元素。\n",key,idx+1);
return 0;
}
代码清单 6-14
//顺序查找(哨兵查找法)
#include <stdio.h>
#define NUMBER 5
#define FAILED -1
int search(int v[],int key,int n)
{
int i=0;
v[n]=key;
while(1)
{
if(v[i]==key)
{
break;
}
i++;
}
return i<n?i:FAILED;
}
int main()
{
int i;
int ky;
int vx[NUMBER+1];
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("vx[%d]:",i);
scanf("%d",&vx[i]);
}
printf("要查找的值:");
scanf("%d",&ky);
search(vx,ky,NUMBER)==FAILED?printf("\a查找失败。\n"):printf("%d是数组的第%d号元素。\n",ky,search(vx,ky,NUMBER)+1);
return 0;
}
代码清单 6-15
//----从元素个数为n的数组v中查找和key一致的元素)(哨兵查找法)----
#include <stdio.h>
#define NUMBER 5
#define FAILED -1
int search(int v[],int key,int n)
{
int i;
v[n]==key;
for (i=0;v[i]!=key;i++)
{
;
}
return i<n?i:FAILED;
}
int main()
{
int i;
int ky;
int vx[NUMBER+1]={0};
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("vx[%d]:",i);
scanf("%d",&vx[i]);
}
printf("请输入要查找的值:");
scanf("%d",&ky);
search(vx,ky,NUMBER)==FAILED?printf("\a查找失败。\n"):printf("%d是数组中第%d号元素。\n",ky,search(vx,ky,NUMBER)+1);
return 0;
}
练习 6-11
/*
创建一个函数search_idx,将和有n个元素的数组v中的key相等的
所有元素的下标存储在数组idx中,返回和key相等的元素的个数。
*/
#include <stdio.h>
#define NUMBER 5
int search_idx(int v[],int id[],int key,int n)
{
int i;
int j=0;
for (i=0;i<n;i++)
{
if (v[i]==key)
{
id[j]=i;
j++;
}
}
return j;
}
int main()
{
int i;
int vx[NUMBER]={0};
int idx[NUMBER]={0};
int ky;
int x;
printf("请输入%d个整数。\n",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("vx[%d]:",i);
scanf("%d",&vx[i]);
}
printf("请输入要查找的值:");
scanf("%d",&ky);
x=search_idx(vx,idx,ky,NUMBER); //因为子函数的j++,下面printf输出参数x不用再+1。
if (x>0)
{
x==1?printf("vx数组中和%d相等的元素有%d个,它是第",ky,x):printf("vx数组中和%d相等的元素有%d个,它们是第",ky,x);
for (i=0;i<x;i++)
{
i<x-1?printf("%d,",idx[i]+1):printf("%d",idx[i]+1);
}
printf("个元素。\n");
}
else
{
printf("在vx数组中没有查找到和%d相等的元素。\n",ky);
}
return 0;
}
代码清单 6-16
//求4名学生在两次考试中3课程的部分并显示(函数版)
#include <stdio.h>
void mat_add(const int a[4][3],const int b[4][3],int c[4][3])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
}
void mat_print(const int m[4][3])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%4d",m[i][j]);
}
putchar('\n');
}
}
int main()
{
int tensu1[4][3]={{91,63,78},{67,72,46},{89,34,53},{32,54,34}};
int tensu2[4][3]={{97,67,82},{73,43,46},{97,56,21},{85,46,35}};
int sum[4][3]={0};
mat_add(tensu1,tensu2,sum);
puts("第一次考试的分数"); mat_print(tensu1);
puts("第二次考试的分数"); mat_print(tensu2);
puts("总分"); mat_print(sum);
return 0;
}
练习 6-12
//求4行3列矩阵和3行4列矩阵的乘积。各构成元素的值从键盘输入(函数版)
#include <stdio.h>
#define A 4
#define B 3
void matrixA_input(int matrix[A][B])
{
int i,j;
puts("输入矩阵A的数据:");
for(i=0;i<A;i++)
for(j=0;j<B;j++){
printf("matrixA[%d][%d]:",i,j);
scanf("%d",&matrix[i][j]);
}
}
void matrixB_input(int matrix[B][A])
{
int i,j;
puts("输入矩阵B的数据:");
for(i=0;i<B;i++)
for(j=0;j<A;j++){
printf("matrixB[%d][%d]:",i,j);
scanf("%d",&matrix[i][j]);
}
}
void matrixC_mul(int matrixC[A][A],const int matrixA[A][B],const int matrixB[B][A])
{
int i,j,k;
for(i=0;i<A;i++)
for(j=0;j<A;j++)
for(k=0;k<B;k++)
matrixC[i][j]+=matrixA[i][k]*matrixB[k][j];
}
void matrixA_print(const int matrix[A][B])
{
int i,j;
puts("矩阵A:");
for(i=0;i<A;i++){
for(j=0;j<B;j++)
printf("%5d",matrix[i][j]);
putchar('\n');
}
}
void matrixB_print(const int matrix[B][A])
{
int i,j;
puts("矩阵B:");
for(i=0;i<B;i++){
for(j=0;j<A;j++)
printf("%5d",matrix[i][j]);
putchar('\n');
}
}
void matrixC_print(const int matrix[A][A])
{
int i,j;
puts("矩阵C(矩阵A*矩阵B):");
for(i=0;i<A;i++){
for(j=0;j<A;j++)
printf("%6d",matrix[i][j]);
putchar('\n');
}
}
int main()
{
int matrixA[A][B]={0};
int matrixB[B][A]={0};
int matrixC[A][A]={0};
matrixA_input(matrixA);
matrixB_input(matrixB);
matrixC_mul(matrixC,matrixA,matrixB);
matrixA_print(matrixA);
matrixB_print(matrixB);
matrixC_print(matrixC);
return 0;
}
练习 6-13
//改写代码清单6-16的程序,将两次考试的分数存储在三维数组中
#include <stdio.h>
void mat_add(int c[][3],const int a[][3],const b[][3])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
}
void mat_print(const int a[][3])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%4d",a[i][j]);
}
putchar('\n');
}
}
int main()
{
int tensu[][4][3]={{{91,63,78},{67,72,46},{79,34,53},{32,54,34}},
{{97,67,82},{73,43,46},{97,56,21},{85,46,35}}};
int sum[][3]={0};
mat_add(sum,tensu[0],tensu[1]);
puts("第一次考试的分数"); mat_print(tensu[0]);
puts("第二次考试的分数"); mat_print(tensu[1]);
puts("总分"); mat_print(sum);
return 0;
}
代码清单 6C-1
//为n行3列的二维数组的所有构成元素赋上同样的值
#include <stdio.h>
void mat_fill(int m[][3],int n,int v)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<3;j++)
{
m[i][j]=v;
}
}
}
void mat_print(const int m[][3],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<3;j++)
{
printf("%4d",m[i][j]);
}
putchar('\n');
}
}
int main()
{
int no;
int x[2][3]={0};
int y[4][3]={0};
printf("赋给所有构成元素的值:");
scanf("%d",&no);
mat_fill(x,2,no);
mat_fill(y,4,no);
puts("---- x ----");
mat_print(x,2);
puts("---- y ----");
mat_print(y,4);
return 0;
}
6-3 作用域和存储期
代码清单 6-17
//确认标识符的作用域
#include <stdio.h>
int x=75;
void print_x()
{
printf("x=%d\n",x);
}
int main()
{
int i;
int x=999;
print_x();
printf("x=%d\n",x);
for(i=0;i<5;i++)
{
int x=i*100;
printf("x=%d\n",x);
}
printf("x=%d\n",x);
return 0;
}
代码清单 6-18
//自动存储期和静态存储期
#include <stdio.h>
int fx=0;
void func()
{
static int sx=0;
int ax=0;
printf("%3d%3d%3d\n",ax++,sx++,fx++);
}
int main()
{
int i;
puts(" ax sx fx");
puts("-----------");
for(i=0;i<10;i++)
{
func();
}
puts("-----------");
return 0;
}
代码清单 6-19
//确认拥有静态存储期的对象默认的初始化
#include <stdio.h>
int fx;
int main()
{
int i;
static int si;
static double sd;
static int sa[5];
printf("fx=%d\n",fx);
printf("si=%d\n",si);
printf("sd=%.1f\n",sd);
for(i=0;i<5;i++)
{
printf("sa[%d]=%d\n",i,sa[i]);
}
return 0;
}
练习 6-14
//编写一段程序,为double型数组的所有元素分配静态存储期,并确认它们都被初始化为0.0
#include <stdio.h>
double fx[5];
int main()
{
int i,j;
static double si[5][5];
for(i=0;i<5;i++)
{
printf("fx[%d]=%.1f\n",i,fx[i]);
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("si[%d][%d]=%.1f\n",i,j,si[i][j]);
}
}
return 0;
}
练习 6-15
//创建函数put_count,显示被调用的次数
#include <stdio.h>
int x;
void put_count()
{
printf("put_count:第%d次\n",x+1);
x++;
}
int main()
{
int i;
for(i=0;i<3;i++)
{
put_count();
}
return 0;
}
总结
summaxy1
//求两个整数的平均值
#include <stdio.h>
double ave2(int a,int b)
{
return (double)(a+b)/2;
}
int main()
{
int n1,n2;
printf("请输入第一个整数:"); scanf("%d",&n1);
printf("请输入第二个整数:"); scanf("%d",&n2);
printf("它们的平均值是%.2f。\n",ave2(n1,n2));
return 0;
}
summaxy2
//记下no返回上一次的值
#include <stdio.h>
int val(int no)
{
static int v;
int temp=v;
v=no;
return temp;
}
int main()
{
int i;
int x;
for(i=0;i<3;i++)
{
printf("请输入整数:");
scanf("%d",&x);
printf("上一次值是%d\n",val(x));
}
return 0;
}
summaxy3
//以实数形式返回数组a的所有元素的平均值
#include <stdio.h>
#define NUMBER 5
double ave_ary(const int a[],int n)
{
int i;
int sum=0;
for(i=0;i<n;i++)
{
sum+=a[i];
}
return (double)sum/n;
}
int main()
{
int i;
int ax[NUMBER]={0};
printf("输入%d个整数。\n",NUMBER);
for(i=0;i<NUMBER;i++)
{
printf("ax[%d]=",i);
scanf("%d",&ax[i]);
}
printf("此数组元素的平均值是%.2f。\n",ave_ary(ax,NUMBER));
return 0;
}
summaxy4
//输出响铃
#include <stdio.h>
void put_alert()
{
putchar('\a');
}
int main()
{
put_alert();
return 0;
}
summaxy5
//将数组b开头的n个元素复制给数组a
#include <stdio.h>
#define NUMBER 10
void cpy_ary(int a[],const int b[],int n)
{
int i=0;
for(i;i<n;i++)
{
a[i]=b[i];
}
}
int main()
{
int i;
int x;
int ax[NUMBER]={0};
int bx[NUMBER]={0};
printf("输入%d个整数。\n",NUMBER);
for(i=0;i<NUMBER;i++)
{
printf("bx[%d]=",i);
scanf("%d",&bx[i]);
}
do{
printf("输入要复制的元素个数:");
scanf("%d",&x);
if(x>NUMBER)
{
printf("请输入小于%d的整数。\n",NUMBER);
}
}while(x>NUMBER);
cpy_ary(ax,bx,x);
for(i=0;i<NUMBER;i++)
{
printf("ax[%d]=%d\n",i,ax[i]);
}
return 0;
}
summaxy6
//返回二维数组a的所有构成元素的总和
#include <stdio.h>
int sum_ary2D(const int a[][3],int n)
{
int i,j;
int sum=0;
for(i=0;i<n;i++)
{
for(j=0;j<3;j++)
{
sum+=a[i][j];
}
}
return sum;
}
int main()
{
int i,j;
int ax[2][3];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("ax[%d][%d]=",i,j);
scanf("%d",&ax[i][j]);
}
}
printf("数组ax所有元素的总和是%d。\n",sum_ary2D(ax,2));
return 0;
}