栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言程序设计(2020)编程题答案——第9章 数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言程序设计(2020)编程题答案——第9章 数组

9.27 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符‘0’的个数,用下标为‘1’的元素统计字符‘1’的个数······
#include 

main()
{	int str[10]={0},i;
	char ch;
	printf("请输入一串字符:");
	while((ch=getchar())!='n')
	{	if((ch>='0')&&(ch<='9'))
			str[ch-'0']+=1;
	}
	for(i=0;i<=9;i++)
		printf("%d:%d个n",i,str[i]);
}

9.28 编写函数,对具有10个整数的数组进行如下操作:从下标为n的元素开始直到最后一个元素,一次向前移动一个位置。输出移动后的结果。
#include 
//#include 
#define NUM 10
void fun(int *a,int n,int x)
{	int i;
	for(i=x;i 
9.29 编写函数,把数组中的所有奇数放在另一个数组中返回。 
#include 
#include 
#define M 20
int fun(int *a,int *b,int n)
{	int i,k=0;
	for(i=0;i 
9.30 编写函数,对字符数组中的字母按由大到小的字母顺序进行排序。 
//注意:这段代码比较繁琐,可将arrin函数功能直接写入主函数进行简化。
#include 
#define NUM 6
void fun(char *,int );
void arrin(char *a,int n)//输入字符
{	int i=0;
	char ch;
	printf("请输入5个字符:");//只能输入5个字符,否则会出错
	while(((a[i]=getchar())!='n')&&(i 
9.31 输入若干有序数放在数组中。然后输入一个数,插入到此有序列数中,插入后,数组中的数仍然有序。请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。 
#include 
#define NUM 10
main()
{	int a[NUM],i,j,k,n,x;
	n=NUM;
	printf("请输入即将输入有序数的个数:");scanf("%d",&k);
	while(k>=n)
	{	printf("请重新输入即将输入有序数的个数:");scanf("%d",&k);//控制输入的数在NUM的范围内
	}
	printf("请输入%d个有序数:",k);//十个元素,得空出来一个元素来空出插入的位置
	for(i=0;i=x){j=i;break;}//找出插入的位置,赋值给j
		else j=k;//当输入的数大于所有的有序数时,j=k,在末尾插入。
	}
	
	for(i=k;i>=j;i--)a[i+1]=a[i];//空出位置
	a[j]=x;//替换
	k++;//输出的有序数+1
	for(i=0;i 
9.32 编写函数,把任意十进制正整数转换成二进制数。提示:把十进制数不断被2除的余数放在一个一维数组中,直到商为零。在主函数中进行输出,要求不得按逆序输出。 
注意:这个程序可能不符合题目中的主函数不得按逆序输出的要求,有其他不同见解的小伙伴可以提提修改意见,本人也是开始学c不久。( •̀ ω •́ )✧
#include 
#define NUM 20
int fun(int *a,int n,int x)
{	int i=0,j,k,t;
	while(x>0)
	{	a[i]=x%2;
		x=x/2;
		i++;
	}
	for(i=n-1;i>=0;i--)if(a[i]==1){k=i;break;}//从后向前遍历,选出第一个不为0的下标,这个下标代表的元素就是二进制数的开头
	i=0;j=k;
	while(i 
9.33 编写函数,调用随机数产生0到19之间的随机数,在数组中存入 15个互不重复的整数。要求在主函数进行输出结果。若已定义x为int类型,调用随机函数步骤如下。 
//方法1:
#include 
#include 
#define NUM 15
void fun(int *a,int n)
{	int i,j,x;
	for(i=0;i 
//方法2:
#include 
#include 
#define NUM 15
void fun(int *a,int n)
{	int i,j,x;
	for(i=0;i 
9.34 求任意方阵每行、每列、两对角线上元素之和。 
//这个程序写的有点繁琐,仅供参考
#include 
#include 
#define M 5
#define N 6
void getdata(int (*)[]);
void rowsum(int (*)[],int *);
void colsum(int (*)[],int *);
void diasum(int (*)[],int *);
void outdata(int (*)[]);

void getdata(int (*a)[N])
{	int i,j;
	for(i=0;i=0;j--)if(i==j)sum+=a[i][j];}
	sdia[0]=sum;
	printf("对角线元素之和:%d ",sdia[0]);
}
main()
{	int a[M][N];
	int srow[M];int scol[N],sdia[1];
	getdata(a);
	outdata(a);
	rowsum(a,srow);
	colsum(a,scol);
	printf("n");
	diasum(a,sdia);
	printf("n");
}

9.35 求两个矩阵的和。
#include 
#include 
#define M 5
#define N 6
void fun(int (*a)[N],int (*b)[N],int (*c)[N])
{	int i,j,x,y;
	for(i=0;i 
9.36 编写程序打印出以下形式的乘法九九表。 
#include 
main()
{	int a[9][9];
	int i,j,k,n;
	printf("t* * A MULTIP;ICATION TABLE * *n");
	printf("t");
	for(i=1;i<=9;i++)printf("(%d)  ",i);
	printf("n");
	printf("---------------------------------------------------n");
	for(i=0;i<9;i++)
	{	
		for(j=0;j<9;j++)a[i][j]=(i+1)*(j+1);
	}
	for(i=0;i<9;i++)
	{	printf("(%d)",i+1);
		printf("      ");
	
		for(n=0;n<9;n++)printf("%-5d",a[i][n]);//%-5d中的负号使输出数据左对齐。
		printf("n");
	}
	printf("---------------------------------------------------n");
}
9.37 调用随机函数为5X4的矩阵置100以内的整数,输出该矩阵,求出每行元素之和,并把和值最大的那一行与第一行上的元素对调。若已定义x为int类型,请参考习题9.33调用随机函数。
//这个程序是用通过自编函数实现的,略显繁琐,不通过自编函数实现可能会更简单。
#include 
#include
#define M 5
#define N 4
void getdata(int (*)[]);
void outdata(int (*)[]);
void rowsum(int (*)[],int *);
void compare(int (*)[],int *);
void exchange(int (*)[],int *);
void getdata(int (*a)[N])
{	int i,j;
	for(i=0;i 
9.38 调用随机函数为5X4的矩阵置100以内的整数,输出该矩阵,然后逆置该矩阵,即将第一列的元素放在第一行上,第二列元素放在第二行上,其他以此类推。 
#include 
#include
#define M 5
#define N 5
main()
{	int a[M][N];
	int i,j,t;
	for(i=0;i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号