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

本文涵盖了一系列C语言编程练习,包括数组计数、元素移动、奇数筛选、字母排序、有序数组插入、十进制转二进制、随机数生成、矩阵运算等,旨在提升对数组操作和算法实现的理解。
摘要由CSDN通过智能技术生成

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

#include <stdio.h>

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 <stdio.h>
//#include <stdlib.h>
#define NUM 10
void fun(int *a,int n,int x)
{
   	int i;
	for(i=x;i<n;i++)a[i-1]=a[i];
	//n--;
	for(i=0;i<n;i++)printf("%d ",a[i]);
	printf("\n");
}
main()
{
   	int n,x,a[NUM];
	int i;
	n=NUM;
	printf("请输入10个整数:");
	for(i=0;i<n;i++)scanf("%d",&a[i]);//可以替换for(i=0;i<n;i++){a[i]=rand()%50;printf("%d ",a[i])
	for(i=0;i<n;i++)printf("%d ",a[i]);
	printf("\n");
	printf("请输入一个下标:");scanf("%d",&x);
	fun(a,n,x);
}

9.29 编写函数,把数组中的所有奇数放在另一个数组中返回。

#include <stdio.h>
#include <stdlib.h>
#define M 20
int fun(int *a,int *b,int n)
{
   	int i,k=0;
	for(i=0;i<n;i++)
	{
   	if(a[i]%2!=0)
		{
   	b[k]=a[i];
			k++;
		}
	}
	return k;
}
main()
{
   	int a[M],b[M];
	int i,k,j,n;
	n=M;
	for(i=0;i<M;i++)
	{
   	a[i]=rand()%50;
		printf("%d\t",a[i]);
		if((i%5==4)&&(i!=0))printf("\n");
	}
	printf("--------------------------\n");
	k=fun(a,b,n);
	for(j=0;j<k;j++)//因为fun函数中k++在赋值之后,所以k的数值比b数组的下标多1,所以这里是j<k
	{
   	printf("%d\t",b[j]);
		if((j%5==4)&&(i!=0))printf("\n");
	}
	printf("\n");
}

9.30 编写函数,对字符数组中的字母按由大到小的字母顺序进行排序。

//注意:这段代码比较繁琐,可将arrin函数功能直接写入主函数进行简化。
#include <stdio.h>
#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<n))i++;
	
}
void fun(char *a,int n)//排序
{
   	int i,j;
	char ch;
	for(i=0;i<n-1;i++)
	{
   	for(j=i+1;j<n;j++)if(a[i]<a[j]){
   ch=a[i];a[i]
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风一样的肘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值