明解C语言(基础篇)—第6章

练习6-1

#include <stdio.h>


/*返还两个整数中较小的那一个*/
int min2(int a, int b) {
	return (a < b ? a : b;)
}


int main(void)
{
	int i, j;

	puts("请输入两个整数");

	printf("整数1:");				scanf_s("%d", &i);
	printf("整数2:");				scanf_s("%d", &j);

	printf("两整数中较小的数值是%d。\n", min2(i, j));
	return 0;
}

练习6-2

#include <stdio.h>


/*返还两个整数中最小的那一个*/
int min3(int a, int b,int c) {

	int min = a;
	if (b < min)			min = b;
	if (c < min)			min = c;
	
	return min;
}


int main(void)
{
	int i, j, k;

	puts("请输入三个整数");

	printf("整数1:");				scanf_s("%d", &i);
	printf("整数2:");				scanf_s("%d", &j);
	printf("整数3:");				scanf_s("%d", &k);

	printf("三个整数中最小的数值是%d。\n", min3(i, j, k));
	return 0;
}

 

练习6-3 

#include <stdio.h>


/*求解输入整数的立方*/
int cube(int a)
{
	return a * a*a;
}


int main(void)
{
	int x;

	printf("请输入一个整数:");				scanf_s("%d", &x);

	printf("%d的立方为%d", x, cube(x));

	return 0;
}

 

练习6-4

#include <stdio.h>


/*返回a的平方*/
int sqr(int a)
{
	return a * a;
}


/*返回a的四次方*/
int pow4(int a)
{
	return sqr(sqr(a));
}


int main(void)
{
	int i;

	printf("请输入一个整数:");				scanf_s("%d", &i);

	printf("该整数的四次方为%d。\n", pow4(i));

	return 0;
}

 

练习6-5

#include <stdio.h>

/*计算从1到n之间所有整数的和*/
int sumup(int n)
{
	int i;
	int sum = 0;

	for (i = 1; i <= n; i++)
		sum += i;
	return sum;
}


int main(void)
{

	int a;
	printf("请输入一个正整数:");

	/*保证输入的正整数大于等于1*/
	do {
		scanf_s("%d", &a);
		if (a < 1)
			printf("请不要输入小于1的整数。");
	} while (a < 1);

	printf("从1到%d之间所有的整数的和为%d。\n", a, sumup(a));

	return 0;

}

 

练习6-6

#include <stdio.h>


/*---连续输出n次响铃---*/
void alert(int n)
{
	while (n-- > 0)
		printf("\a");
}


int main(void)
{
	int num;

	puts("连续输出n次响铃。");
	printf("请输入响铃次数:");			scanf_s("%d", &num);
	alert(num);

	return 0;
}

 

练习6-7

#include <stdio.h>


/*---显示'你好',并换行---*/
void hello(void)
{
	puts("你好。");
}


int main(void)
{
	hello();
	return 0;
}

 

练习6-8、6-9、6-10:偷懒了,三个题一块写。

#include <stdio.h>


/*---返回元素个数为n的数组v的最小值---*/
int min_of(const int v[], int n)
{
	int i;
	int min = v[0];
	for (i = 0; i < n; i++) 
		if (v[i] < min)
			min = v[i];
	
	return min;
}


/*---将元素个数为n的数组v进行倒序排列---*/
void rev_intary(int v[], int n)
{
	int i;
	int num;
	if (n % 2 == 0) {
		for (i = 0; i < n / 2; i++) {
			num = v[i];
			v[i] = v[n - 1 - i];
			v[n -1 - i] = num;
		}
	}

	else {
		for (i = 0; i < (n - 1) / 2; i++) {
			num = v[i];
			v[i] = v[n - 1 - i];
			v[n -1 - i] = num;
		}
	}
}



/*---将元素个数为n的数组v2进行倒序排列,并将其结果保存在数组v1中---*/
void intary_rcpy(int v1[], const int v2[], int n)
{
	int i;
	for (i = 0; i < n; i++) 
		v1[i] = v2[n -1- i];
}


/*---将输入数组的元素输出---*/
void array_print(const int v[], int n)
{
	int i;
	for (i = 0; i < n; i++)
		printf("%d ", v[i]);
	putchar('\n');
}


int main(void)
{
	int i;
	
	int ary1[] = { 1,2,3,4,5 };
	int ary2[] = {1, 2, 3, 4 };
	int ary3[5];
	int ary4[4];

	printf("ary1中的最小值为:%d", min_of(ary1, 5));				putchar('\n');
	printf("ary2中的最小值为:%d", min_of(ary2, 4));				putchar('\n');

	putchar('\n');

	intary_rcpy(ary3, ary1, 5);
	intary_rcpy(ary4, ary2, 4);

	printf("ary1的倒序排列是:");		array_print(ary3, 5);
	printf("ary2的倒序排列是:");		array_print(ary4, 4);
	
	putchar('\n');

	printf("ary1的倒序排列是:");	rev_intary(ary1, 5);	array_print(ary1, 5);
	printf("ary2的倒序排列是:");	rev_intary(ary2, 4);	array_print(ary2, 4);

	return 0;
}

 

练习6-11

#include <stdio.h>

#define NUMBER 7
#define FAILED -1


/*---将有n个元素的数组vx中,与key相等的所有元素的下表放在数组idx中,并返回和key相等的元素个数---*/
int search_idx(const int v[], int idx[], int key, int n)
{
	int i;
	int num=0;

	for (i = 0; i < n; i++) {
		if (v[i] == key) {
			idx[num] = i;
			num++;
		}
	}
	return num;
}


int main(void)
{
	int i, ky;
	
	int vx[NUMBER];
	int idx[NUMBER];

	puts("请输入数组vx的值");
	
	for (i = 0; i < NUMBER; i++) {
		printf("vx[%d]=",i);
		scanf_s("%d", &vx[i]);
	}

	putchar('\n');

	printf("请输入要查找的数值。");
	scanf_s("%d", &ky);

	printf("数组vx中有%d个元素%d。\n", search_idx(vx, idx, ky, NUMBER), ky);

	return 0;
}

 

练习6-12

#include <stdio.h>

#define NO1 4
#define NO2 3
void mat_mul(const int a[NO1][NO2], const int b[NO2][NO1], int c[NO1][NO1])
{
	int i, j, k;

	for (i = 0; i < NO1; i++) {
		for (j = 0; j < NO1; j++) {
			for (k = 0; k < NO2; k++)
				c[i][j] += a[i][k] * b[k][i];
		}
	}
}

 

练习6-13

#include <stdio.h>

#define NO1 4
#define NO2 3
#define NO3 2

/*---将4行3列的矩阵a和矩阵b存储在三维数组c中---*/
void mat_add(const int a[NO1][NO2], const int b[NO1][NO2], int c[NO3][NO1][NO2])
{
	int i, j;
	for (i = 0; i < NO1; i++)
		for (j = 0; j < NO2; j++)
			c[0][i][j] = a[i][j];

	for (i = 0; i < NO1; i++)
		for (j = 0; j < NO2; j++)
			c[1][i][j] = b[i][j];
}

 

练习6-14

#include <stdio.h>

int main(void)
{
	static double ax[5];
	int i;

	for (i = 0; i < 5; i++) 
		printf("ax[%d]=%.2f\n", i, ax[i]);
	
	return 0;
}

 

练习6-15

#include <stdio.h>


void put_count(void)
{
	static int num;
	num++;
	printf("put_count:第%d次\n", num);
}


int main(void)
{
	put_count();
	put_count();
	put_count();

	return 0;
}

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值