明解C语言入门篇_第6章_函数

前言

本文为业余学习《明解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;
}
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值