C语言 数组和字符串相关例题实现

1.随机产生N个0~9以内的数字,分别统计每个数字出现的次数。

要求:用数组来处理。设置2个一维数组:“int number[N]” 和“int count[10];”分别进行如下工作:

number[i]:存放随机产生的N个数字。其中,0≤i≤N-1。

count[i]:统计数字i出现的次数。其中,0≤i≤9。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 20 
int main()
{
	int number[N],count[10]={0},i;
	srand(time(0));
	printf("随机产生20个0~9以内的数字:\n");
	for(i=0;i<N;i++)
	{
		number[i]=rand()%10;
		printf("%d ",number[i]);
		count[number[i]]++;
	}
	printf("\n");
	for(i=0;i<10;i++)
	{	
		printf("%d出现的次数为:%d\n",i,count[i]);
	}
	return 0;
}

2.在二维数组a中选出各行最大的元素组成一个一维数组b,并打印出数组b的各个元素值。二维数组a可以写死,也可以动态输入

例如,a数组如下:

3   16  87  65

4   32  11  108

10  25  12  37

#include<stdio.h>
int main()
{
	int m,n;
	int i,j,max;
	printf("输入一个二维数组的行和列:\n");
	scanf("%d,%d",&m,&n); 
	int a[m][n];
	int b[m]; 
	printf("输入%d个元素:",m*n);
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	} 
	for(i=0;i<m;i++)
	{
		max=a[i][0];
		for(j=1;j<n;j++)
		{
			if(a[i][j]>max)
			 max=a[i][j];
		}
		b[i]=max;
	}
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)		
		  printf("%5d",a[i][j]);
		printf("\n");
	}
	printf("输出数组b:\n");
	for(i=0;i<m;i++)
	{
		printf("%5d",b[i]);
	}
	printf("\n");
	return 0;
} 

3.输入5个整数,找出最大数和最小数所在位置,并把二者对调,然后输出。

比如输入2 5 1 6 9 (位置即为数组下标)输出应该是最大值是max=9,pos=4  min=1,pos=2

对调位置后:2 5 9 6 1

#include<stdio.h>
int main()
{
	int a[5],max,min,i,j,k,temp;
	printf("输入五个整数:");
	for(i=0;i<5;i++)
	{
		scanf("%d",&a[i]);
	}
	max=min=a[0];
	for(i=0;i<5;i++)
	{
		if(max<a[i])
		{
			max=a[i];
			j=i;
		}
    }
	printf("最大值为:%d,所在位置为:%d\n",max,j);
	for(i=0;i<5;i++)
	{
		if(min>a[i])
		{
			min=a[i];
			k=i;
		}
	}
	printf("最小值为:%d,所在位置为:%d\n",min,k);
	a[j]=min;
	a[k]=max;
	for(i=0;i<5;i++) 
	{
	    printf("%d ",a[i]);
	}
	return 0; 
} 

4.编一程序,将两个字符串连接起来,用两种方式,一种用strcat函数实现,另外一种不使用strcat函数实现。

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100],b[100];
	int i=0,j=0,n;
	printf("输入第一个字符串:");
	scanf("%s",&a);
	printf("输入第二个字符串:");
	scanf("%s",&b);
	printf("选择连接方式:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:	while(a[i]!='\0') i++;
	            while(b[j]!='\0') a[i++]=b[j++];
	            a[i]='\0';
	            break;
	    case 2:strcat(a,b);
	           break;
	    default:printf("输入错误");
	}
	printf("新的字符串为:%s\n",a);	
	return 0;	
}

5.求一个3x3的整型矩阵对角线元素之和。(两个对角线)

#include<stdio.h>
int main()
{
	int i,j,a[3][3],sum=0,sum1=0,sum2=0;
	printf("输入一个3*3的矩阵:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		  scanf("%d",&a[i][j]);
	}
	for(i=0;i<3;i++) sum1+=a[i][i];
	for(j=0;j<3;j++) sum2+=a[j][j];
	sum=sum1+sum2;
	printf("对角线元素之和为:%d",sum);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值