明解c语言第三版答案第五章,《明解C语言》示例代码和练习代码[第5章]

第5章 数组

示例代码:

示例代码 5-1

/*

输入5名学生的分数并显示它们的总分和平均分

*/

#include

int main(void)

{

int uchida;

int satoh;

int hiraki;

int masaki;

int sum = 0;

puts("请输入分数。");

printf("1号:");scanf("%d", &uchida);

printf("2号:");scanf("%d", &satoh);

printf("3号:");scanf("%d", &hiraki);

printf("4号:");scanf("%d", &masaki);

printf("5号:");scanf("%d", &masaki);

sum += uchida;

sum += satoh;

sum += hiraki;

sum += masaki;

sum += masaki;

printf("总分:%5d\n", sum);

printf("平均分:%5.1f\n", (double)sum / 5);

return (0);

}

示例代码 5-2

/*

依次把1,2,3,4,5赋值给数组每个元素并显示

*/

#include

int main(void)

{

int vc[5]; // 包含5个元素的数组

vc[0] = 1;

vc[1] = 2;

vc[2] = 3;

vc[3] = 4;

vc[4] = 5;

printf("vc[0] = %d\n", vc[0]);

printf("vc[1] = %d\n", vc[1]);

printf("vc[2] = %d\n", vc[2]);

printf("vc[3] = %d\n", vc[3]);

printf("vc[4] = %d\n", vc[4]);

return (0);

}

示例代码 5-3

/*

依次把1/2/3/4/5赋值给数组每个元素并显示 (使用for语句)

*/

#include

int main(void)

{

int i;

int vc[5]; // 包含5个元素的数组

for (i = 0; i < 5; i++)

vc[i] = i + 1;

for (i = 0; i < 5; i++)

printf("vc[%d] = %d\n", i, vc[i]);

return (0);

}

示例代码 5-4

/*

将数组的全部元素赋值为(0.0)并显示

*/

#include

int main(void)

{

int i;

double vd[5];

for (i = 0; i < 5; i++)

vd[i] = 0.0;

for (i = 0; i < 5; i++)

printf("vd[%d] = %.1f\n", i, vd[i]);

return (0);

}

示例代码 5-5

/*

从头开始顺次为数组各元素进行初始化(1,2,3,4,5)并进行显示

*/

#include

int main(void)

{

int i;

int vc[5] = {1, 2, 3, 4, 5};

for (i = 0; i < 5; i++)

printf("vc[%d] = %d\n", i, vc[i]);

return (0);

}

示例代码 5-6

/*

把数组中的全部元素赋值到另一个数组中

*/

#include

int main(void)

{

int i;

int va[5] = {15, 20, 30};

int vb[5];

for (i = 0; i < 5; i++)

vb[i] = va[i];

puts(" va vb");

puts("------");

for (i = 0; i < 5; i++)

printf("%3d%3d\n", va[i], vb[i]);

return (0);

}

示例代码 5-7

/*

输入数组元素的值并显示

*/

#include

int main(void)

{

int i;

int vx[5];

for (i = 0; i < 5; i++) {

printf("vx[%d]:", i);

scanf("%d", &vx[i]);

}

for (i = 0; i < 5; i++)

printf("vx[%d]=%d\n", i, vx[i]);

return (0);

}

示例代码 5-8

/*

对数组中的全部元素进行倒序排列

*/

#include

int main(void)

{

int i;

int vx[5];

for (i = 0; i < 5; i++) {

printf("vx[%d]:", i);

scanf("%d", &vx[i]);

}

for (i = 0; i < 2; i++) {

int temp = vx[i];

vx[i] = vx[4 - i];

vx[4 - i] = temp;

}

for (i = 0; i < 5; i++)

printf("vx[%d]=%d\n", i, vx[i]);

return (0);

}

示例代码 5-9

/*

输入5名学生的分数并显示出它们的总分和平均分

*/

#include

int main(void)

{

int i;

int tensu[5]; // 5名学生的分数

int sum = 0; // 总分

puts("请输入学生的分数。");

for (i = 0; i < 5; i++) {

printf("%2d号:", i + 1);

scanf("%d", &tensu[i]);

sum += tensu[i];

}

printf("总分:%5d\n", sum);

printf("平均分:%5.1f\n", (double)sum / 5);

return (0);

}

示例代码 5-10

/*

输入5名学生的分数并显示出它们的总分和平均分

*/

#include

#define NUMBER 5 // 学生人数

int main(void)

{

int i;

int tensu[NUMBER]; // 5名学生的分数

int sum = 0; // 总分

puts("请输入学生的分数。");

for (i = 0; i < NUMBER; i++) {

printf("%2d号:", i + 1);

scanf("%d", &tensu[i]);

sum += tensu[i];

}

printf("总分:%5d\n", sum);

printf("平均分:%5.1f\n", (double)sum / NUMBER);

return (0);

}

示例代码 5-11

/*

输入5名学生的分数并显示出其中的最高分和最低分

*/

#include

#define NUMBER 5 // 学生人数

int main(void)

{

int i;

int tensu[NUMBER]; // 5名学生的分数

int max, min; // 总分

puts("请输入学生的分数。");

for (i = 0; i < NUMBER; i++) {

printf("%2d号:", i + 1);

scanf("%d", &tensu[i]);

}

min = max = tensu[0];

for (i = 1; i < NUMBER; i++) {

if (tensu[i] > max) max = tensu[i];

if (tensu[i] < min) min = tensu[i];

}

printf("最高分:%d\n", max);

printf("最低分:%d\n", min);

return (0);

}

示例代码 5-12

/*

输入5名学生的分数并显示出60分以上的一览表

*/

#include

#define NUMBER 5 // 学生人数

int main(void)

{

int i;

int snum = 0; // 及格学生人数

int tensu[NUMBER]; // NUMBER名学生的分数

int succs[NUMBER]; // 及格学生一览表(保存及格学生的下标)

puts("请输入学生的分数。");

for (i = 0; i < NUMBER; i++) {

printf("%2d号:", i + 1);

scanf("%d", &tensu[i]);

if (tensu[i] >= 60)

succs[snum++] = i; // 添加到及格学生一览表中

}

puts("及格学生一览表");

puts("--------------");

for (i = 0; i < snum; i++)

printf("%2d号(%3d分)\n", succs[i] + 1, tensu[succs[i]]);

return (0);

}

示例代码 5-13

/*

输入学生的分数并显示出分布情况

*/

#include

#define NUMBER 80 // 人数上限

int main(void)

{

int i, j;

int num; // 实际的人数

int tensu[NUMBER]; // 学生的分数

int bunpu[11] = {0}; // 分布图

printf("请输入学生人数:");

do {

scanf("%d", &num);

if (num < 1 || num > NUMBER)

printf("\a人数范围[1到%d] :", NUMBER);

} while (num < 1 || num > NUMBER);

puts("请输入学生的分数。");

for (i = 0; i < num; i++) {

printf("%2d号:", i + 1);

do {

scanf("%d", &tensu[i]);

if (tensu[i] < 0 || tensu[i] > 100)

printf("\a分数范围[0到100]:");

} while (tensu[i] < 0 || tensu[i] > 100) ;

bunpu[tensu[i] / 10]++;

}

puts("\n----分布图----");

printf(" 100:");

for (j = 0; j < bunpu[10]; j++)

putchar('*');

putchar('\n');

for (i = 9; i >= 0; i--) {

printf("%3d - %3d:", i * 10, i * 10 + 9);

for (j = 0; j < bunpu[i]; j++)

putchar('*');

putchar('\n');

}

return (0);

}

示例代码 5-14

/*

计算2行3列矩阵的和

*/

#include

int main(void)

{

int i, j;

int ma[2][3] = {{1, 2, 3}, {4, 5, 6}};

int mb[2][3] = {{6, 3, 4}, {5, 1, 2}};

int mc[2][3] ={0};

for (i = 0; i < 2; i++)

for (j = 0; j < 3; j++)

mc[i][j] = ma[i][j] + mb[i][j];

for (i = 0; i < 2; i++) {

for (j = 0; j < 3; j++)

printf("%3d", mc[i][j]);

putchar('\n');

}

return (0);

}

示例代码 5-15

/*

计算出1000以内的质数(第1版)

*/

#include

int main(void)

{

int i, no;

unsigned long counter = 0;

for (no = 2; no <= 1000; no++) {

for (i = 2; i < no; i++) { // 能被整除的不是质数

counter++; // 退出上述循环

if (no % i == 0)

break;

}

if (no == i) // 直到最后也未被整除

printf("%d\n", no);

}

printf("乘除运算的次数:%lu\n", counter);

return (0);

}

示例代码 5-16

/*

计算出1000以内的质数(第2版)

*/

#include

int main(void)

{

int i, no;

unsigned long counter = 0;

no = 2; // 2是偶数中唯一的质数

printf("%d\n", no++);

for (; no <= 1000; no += 2) { // 只把奇数作为判断对象

for (i = 2; i < no; i++) { // 能被整除的不是质数

counter++; // 退出上述循环

if (no % i == 0)

break;

}

if (no == i) // 直到最后也未被整除

printf("%d\n", no);

}

printf("乘除运算的次数:%lu\n", counter);

return (0);

}

示例代码 5-17

/*

计算出1000以内的质数(第3版)

*/

#include

int main(void)

{

int i, no;

unsigned long counter = 0;

no = 2; // 2是偶数中唯一的质数

printf("%d\n", no++);

for (; no <= 1000; no += 2) { // 只把奇数作为判断对象

for (i = 3; i < no; i += 2) { // 只判断能否被奇数整除

counter++; // 退出上述循环

if (no % i == 0)

break;

}

if (no == i) // 直到最后也未被整除

printf("%d\n", no);

}

printf("乘除运算的次数:%lu\n", counter);

return (0);

}

示例代码 5-18

/*

计算出1000以内的质数(第4版)

*/

#include

int main(void)

{

int i, no;

int prime[500]; // 用来保存质数的数组

int ptr = 0; // 已经的到的质数个数

unsigned long counter = 0;

prime[ptr++] = 2;

prime[ptr++] = 3;

for (no = 5; no <= 1000; no += 2) { // 只把奇数作为判断对象

for (i = 1; i < ptr; i++) { // 尝试能否被已经得到的质数整除

counter++;

if (no % prime[i] == 0) // 能被整除的不是质数

break; // 退出上述循环

}

if (ptr == i) // 直到最后也未被整除

prime[ptr++] = no; // 添加到数组中

}

for (i = 0; i < ptr; i++)

printf("%d\n", prime[i]);

printf("乘除运算的次数:%lu\n", counter);

return (0);

}

示例代码 5-19

/*

计算出1000以内的质数(第5版)

*/

#include

int main(void)

{

int i, no;

int prime[500]; // 用来保存质数的数组

int ptr = 0; // 已经的到的质数个数

unsigned long counter = 0;

prime[ptr++] = 2;

prime[ptr++] = 3;

for (no = 5; no <= 1000; no += 2) { // 只把奇数作为判断对象

int flag = 0;

for (i = 1; counter++, prime[i] * prime[i] <= no; i++) {

counter++;

if (no % prime[i] == 0) { // 能被整除的不是质数

flag = 1;

break;

} // 退出上述循环

}

if (!flag) // 直到最后也未被整除

prime[ptr++] = no; // 添加到数组中

}

for (i = 0; i < ptr; i++)

printf("%d\n", prime[i]);

printf("乘除运算的次数:%lu\n", counter);

return (0);

}

练习代码:

练习代码e5-1

/*

依次把0,1,2,3,4赋值给数组每个元素并显示 (使用for语句)

*/

#include

int main(void)

{

int i;

int vc[5]; // 包含5个元素的数组

for (i = 0; i < 5; i++)

vc[i] = i;

for (i = 0; i < 5; i++)

printf("vc[%d] = %d\n", i, vc[i]);

return (0);

}

练习代码e5-2

/*

依次把5,4,3,2,1赋值给数组每个元素并显示 (使用for语句)

*/

#include

int main(void)

{

int i;

int vc[5]; // 包含5个元素的数组

for (i = 0; i < 5; i++)

vc[i] = 5 - i;

for (i = 0; i < 5; i++)

printf("vc[%d] = %d\n", i, vc[i]);

return (0);

}

练习代码e5-3

/*

从头开始顺次为数组各元素进行初始化(5,4,3,2,1)并进行显示

*/

#include

int main(void)

{

int i;

int vc[5] = {5, 4, 3, 2, 1};

for (i = 0; i < 5; i++)

printf("vc[%d] = %d\n", i, vc[i]);

return (0);

}

练习代码e5-4

/*

把数组中的全部元素倒序赋值到另一个数组中

*/

#include

int main(void)

{

int i;

int va[5] = {15, 20, 30};

int vb[5];

for (i = 0; i < 5; i++)

vb[i] = va[4 - i];

puts(" va vb");

puts("------");

for (i = 0; i < 5; i++)

printf("%3d%3d\n", va[i], vb[i]);

return (0);

}

练习代码e5-5

/*

对数组中的全部元素进行倒序排列

*/

#include

int main(void)

{

int i;

int vx[8];

for (i = 0; i < 8; i++) {

printf("vx[%d]:", i);

scanf("%d", &vx[i]);

}

for (i = 0; i < 5; i++) {

int temp = vx[i];

vx[i] = vx[7 - i];

vx[7 - i] = temp;

}

for (i = 0; i < 8; i++)

printf("vx[%d]=%d\n", i, vx[i]);

return (0);

}

练习代码e5-6

/*

double类型赋值给int类型

*/

int main(void)

{

double a;

int b;

a = b = 1.5;

printf("a = %f\n", a);

printf("b = %d\n", b);

return (0);

}

练习代码e5-7

/*

计算矩阵x和y的积

*/

int main(void)

{

int x[2][3] = {{1, 2, 3}, {4, 5, 6},};

int y[3][2] = {{1, 5}, {5, 3}, {8, 1}};

int z[2][2] = {0};

int i, j;

for (i = 0; i < 3; i++)

z[0][0] += x[0][i] * y[i][0];

for (i = 0; i < 3; i++)

z[0][1] += x[0][i] * y[i][1];

for (i = 0; i < 3; i++)

z[1][0] += x[1][i] * y[i][0];

for (i = 0; i < 3; i++)

z[1][1] += x[1][i] * y[i][1];

for (i = 0; i < 2; i++) {

for (j = 0; j < 2; j++)

printf("%3d", z[i][j]);

putchar('\n');

}

system("pause");

return (0);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值