明解C语言入门篇练习题第六章

练习6-1

#include <stdio.h>
int min2(int a, int b) 
{
	int min;
	min = (a < b) ? a : b;
	return min;
}
int main(void)
{
	int a, b;
	printf("a=");
	scanf("%d",&a);
	printf("b=");
	scanf("%d", &b);
	printf("a和b中较小值为%d\n",min2(a,b));
	return 0;
}

练习6-2

#include <stdio.h>
int min3(int a, int b, int c) 
{
	int min;
	min = a;
	if (b < a)
		min = b;
	if (c < a)
		min = c;
	return min;
}
int main(void)
{
	int a, b, c;
	printf("a=");
	scanf("%d",&a);
	printf("b=");
	scanf("%d", &b);
	printf("c=");
	scanf("%d", &c);
	printf("a,b,c中最小值为%d\n",min3(a,b,c));
	return 0;
}

练习6-3

#include <stdio.h>
int cube(int x) 
{
	return x*x*x;
}
int main(void)
{
	int x;
	printf("x=");
	scanf("%d",&x);
	printf("x的立方为%d\n", cube(x));
	return 0;
}

练习6-4

#include <stdio.h>
int sqr(int x)
{
	return x * x;
}
int pow4(int x)
{
	return sqr(x)*sqr(x);
}
int main(void)
{
	int x;
	printf("整数x:");   
	scanf("%d", &x);
	printf("x的四次幂是%d。\n", pow4(x));
	return 0;
}

练习6-5

#include <stdio.h>
int sumup(int n)
{
	int i;
	int sum = 0;
	for (i = 1; i <= n; i++)
	{
		sum += i;
	}
	return sum;
}
int main(void)
{
	int n;
	printf("整数n:");   
	scanf("%d", &n);
	printf("1到%d之间所有整数的和是%d。\n",n,sumup(n));
	return 0;
}

练习6-6

#include <stdio.h>
void alert(int n)
{
	int i;
	for (i = 0; i < n; i++)
	{
		printf("\a");
	}
	return;
}
int main(void)
{
	int n;
	printf("整数n:");   
	scanf("%d", &n);
	printf("连续发出%d次响铃。\n",n);
	alert(n);
	return 0;
}

练习6-7

#include <stdio.h>
void hello(void)
{
	puts("你好。");
	return;
}
int main(void)
{
	hello();
	return 0;
}

练习6-8

#include <stdio.h>
int min_of(const int v[], int n)
{
	int min;
	int i;
	min = v[0];
	for (i = 1; i < n; i++)
	{
		if (v[i] < min)
			min = v[i];
	}
	return min;
}
int main(void)
{
	int min;
	int v[4] = {19,63,34,76};
	min = min_of(v,4);
	printf("min = %d\n",min);
	return 0;
}

练习6-9

#include <stdio.h>
#define NUM 4
void rev_intary(int v[], int n)
{
	int tmp;
	int i;
	for (i = 0; i < n/2; i++)
	{
		tmp = v[i];
		v[i] = v[n - 1 - i];
		v[n - 1 - i] = tmp;
	}
	return;
}
int main(void)
{
	int i;
	int v[NUM] = {19,63,34,76};
	rev_intary(v,NUM);
	for (i = 0; i < NUM; i++)
	{
		printf("v[%d] = %d\n",i,v[i]);
	}
	return 0;
}

练习6-10

#include <stdio.h>
#define NUM 4
void intary_rcpy(int v1[],const int v2[],int n)
{
	int i;
	for (i = 0; i < n; i++)
	{
		v1[n - 1 - i] = v2[i];
	}
	return;
}
int main(void)
{
	int i;
	int v2[NUM] = {19,63,34,76};
	int v1[NUM];
	intary_rcpy(v1,v2,NUM);
	for (i = 0; i < NUM; i++)
	{
		printf("v1[%d] = %d\n",i,v1[i]);
	}
	return 0;
}

练习6-11

#include <stdio.h>
int search_idx(const int v[],int idx[],int key,int n)
{
	int i;
	int j = 0;
	int idx_num;
	for (i = 0; i < n; i++)
	{
		if (v[i] == key)
		{
			idx[j] = i;
			j++;
		}
	}
	return j;
}
int main(void)
{
	int i;
	int num;
	int v[] = {1,7,5,7,2,4,7};
	int key = 7;
	int idx[7] = {0};
	num = search_idx(v,idx,key,7);
	printf("和key相等的元素的个数为%d。\n",num);
	for (i = 0; i < 7; i++)
	{
		printf("idx[%d] = %d\n",i,idx[i]);
	}
	return 0;
}

练习6-12

#include <stdio.h>
void mat_mul(const int a[4][3],const int b[3][4],int c[3][3])
{
	int i, j;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			c[i][j] = b[i][0]*a[0][j] + b[i][1] * a[1][j] + b[i][2] * a[2][j] + b[i][3] * a[3][j];
		}
	}
	return;
}
int main(void)
{
	int i, j;
	int a[4][3] = { {1,2,3} ,{4,5,6} ,{7,8,9} ,{10,11,12} };
	int b[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
	int c[3][3] = { 0 };
	mat_mul(a,b,c);
	printf("a = \n");
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	printf("b = \n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%4d", b[i][j]);
		}
		printf("\n");
	}
	printf("c = b * a = \n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%4d",c[i][j]);
		}		
		printf("\n");
	}
	return 0;
}

练习6-13

#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]);
		}
		printf("\n");
	}
		putchar('\n');
}
int main(void)
{
	int tensu[2][4][3] = { { { 91, 63, 78 },{ 67, 72, 46 },{ 89, 34, 53 },{ 32, 54, 34 } } ,
						   { { 97, 67, 82 },{ 73, 43, 46 },{ 97, 56, 21 },{ 85, 46, 35 } } };
	int sum[4][3];			/* 总分 */
	mat_add(tensu[0], tensu[1], sum);				/* 求两次考试中成绩的总和 */
	puts("第一次考试的分数");  mat_print(tensu[0]);	/* 显示第一次考试的分数 */
	puts("第二次考试的分数");  mat_print(tensu[1]);	/* 显示第二次考试的分数 */
	puts("总分");        mat_print(sum);		/* 显示总分 */
	return 0;
}

练习6-14

#include <stdio.h>
int main(void)
{
	int i;
	static double a[5];
	for (i = 0; i < 5; i++)
	{
		printf("a[%d] = %.1f\n",i,a[i]);
	}
	return 0;
}

练习6-15

#include <stdio.h>
static int n;
void put_count(void)
{
	return n++;
}
int main(void)
{
	put_count();
	printf("put_count:第%d次\n",n);
	put_count();
	printf("put_count:第%d次\n", n);
	put_count();
	printf("put_count:第%d次\n", n);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/wofreeo/article/details/80665310