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;
}