第一范文网 - 专业文章范例文档资料分享平台

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

来源:用户分享 时间:2025/5/23 10:15:32 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

BatchDoc Word文档批量处理工具

第7章 数组

【练习 7-1】将例 7-3 程序中的 break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么? 解答:

当去掉 break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为 x 的元素,因 此程序输出会有变化。当输入数据仍为 2 9 8 1 9 时,输出将是 index is 1 index is 4。 【练习7-2】将数组中的数逆序存放。输入一个正整数n(1

#include int main(void) { int i,n,temp; int a[10]; printf(\ scanf(\ printf(\ for(i=0;i

【练习7-3】求最大值及其下标。输入一个正整数n(1

#include int main(void) { int i,index,n; int a[10];

BatchDoc Word文档批量处理工具

BatchDoc Word文档批量处理工具

printf(\ scanf(\ printf(\ for(i=0;i=0;i++) printf(\ return 0; }

【练习 7-4】找出不是两个数组共有的元素。输入一个正整数 n (1<n≤10),再输入 n 个整数,存入第1个数组中;然后输入一个正整数m(1

#include int main(void) {

int i,j,k,m,n,flag,equal; int a[25],b[25],c[25];

printf(\ scanf(\

printf(\ for(i=0;i

scanf(\ printf(\ scanf(\

printf(\ for(j=0;j

scanf(\ k=0;

for(i=0;i

for(j=0;j

flag=1;//判断一个数组中是否有相重的元素,有的话不执行 if(!flag){

equal=0;

for(j=0;j

BatchDoc Word文档批量处理工具

BatchDoc Word文档批量处理工具

} if(!equal)

c[k++]=a[i]; } }

for(i=0;i

for(j=0;j

equal=0;

for(j=0;j

c[k++]=b[i]; } }

printf(\ for(i=1;i

printf(\ printf(\

return 0; }

【练习 7-5】给二维数组赋值时,如果把列下标作为外循环的循环变量,行下标作为内循环的循环变量,输入的数据在二维数组中如何存放?用下列 for 语句替换例 7-7 中的对应语句,将输入的 6 个数存入二维数组中,假设输入数据不变,输出什么?与例 7-7 中的输出结果一样吗?为什么?

for( j=0;j<2;j++) for( i=0;i<3;i++) scanf(“%d”,&a[i][j]);

解答:

当把列下标作为外循环的循环变量,行下标作为内循环的循环变量时,输入的数据将 以列优先的方式存放。当用上述 for 循环方式时,输出结果为:max=a[2][0]=10,与原例 7-7 不一样,因为当用上述方式输入是,二维数组中存放值如下: 3 - 9 2 6 10 - 1

【练习 7-6】 在例 7-9 的程序中,如果将遍历上三角矩阵改为遍历下三角矩阵,需要怎样修改程序?运行结果有变化吗?如果改为遍历整个矩阵,需要怎样修改程序?输出是什

BatchDoc Word文档批量处理工具

BatchDoc Word文档批量处理工具

么?为什么? 解答:

只需按要求修改矩阵的输出部分,方法如下,其运行结果不变。 for(i = 0; i < n; i++)

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

temp = a[i][j];

a[i][j] = a[j][i]; a[j][i] = temp; }

若修改为遍历整个程序,方法如下,则运行结果仍将输出原矩阵,无法达到转置要求, 原因是矩阵中每个元素相应被交换了 2 次。 for(i = 0; i < n; i++)

for(j = 0; j < n; j++) { temp = a[i][j]; a[i][j] = a[j][i];

a[j][i] = temp;////先是下三角进行交换,后是上三角进行交换 }

【练习7-7】矩阵运算:读入1个正整数n(1≤n≤6),再读入n阶方阵a,计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。试编写相应程序。 解答:

#include int main(void) {

int i,j,n,sum; int a[6][6];

printf(\ scanf(\

printf(\ for(i=0;i

for(j=0;j

scanf(\ sum=0;

for(i=0;i

for(j=0;j

if(i!=n-1&&j!=n-1&&i+j!=n-1) sum+=a[i][j]; printf(\

return 0; }

【练习 7-8】方阵循环右移。读入2个正整数m和n(1<=n<6),在读入n阶方阵a,将该方阵中的每个元素循环向右移m个位置,即将第0、1、…、n-1列变换为第n-m、n-m+1、…、 n-1、0、1、…、n-m-1列,移动后的方阵可以存到另一个二维数组中。试编写相应程序。

BatchDoc Word文档批量处理工具

BatchDoc Word文档批量处理工具

解答:

#include int main(void) { int m,n,i,j,count; int a[6][6],b[6][6]; printf(\ scanf(\ printf(\ scanf(\ printf(\ for(i=0;i

return 0; }

【练习 7-9】计算天数:输入日期(年、月、日),输出它是该年的第几天。要求调用例 7-10 中定义的函数 day_of_year(year, month, day)。试编写相应程序。 解答:

#include

int day_of_year(int year, int month, int day); int main(void) {

int year,month,day,day_year;

printf(\

scanf(\ day_year=day_of_year(year,month,day); printf(\

BatchDoc Word文档批量处理工具

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8jgmb7lxz47f1wl0k4bu3bj0w6iihw013p0_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top