练习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;
}