C语言-习题 6 数组

1. (25分) c_7_4 十进制转换为二进制

题目描述
将输入的十进制正整数n转换为二进制数,并将转换结果输出,输出按高位在左,低位在右的顺序。

输入描述
输入一个不大于65536*65536的正整数。

输出描述
从第一个非零的高位开始输出,高位在左,低位在右。

输入样例
72

输出样例
1001000

用户代码

#include<stdio.h>
int main()
{
	int i=0,n,a[32];
	scanf("%d",&n);
	   while(n>0)
	   {
		  a[i]=n%2;
		   i++;
		   n=n/2;
	   }
	for(i--;i>=0;i--)
		printf("%d",a[i]);
	printf("\n");
	return 0;
} 

2. (25分) c_7_3 读入数组元素的值,按要求计算和

题目描述
编程实现读入5行4列矩阵中的前4行3列整数(如下图,数据可变),然后将各行之和、各列之和与所有数字之和求出,并对应填入表中的最后一列、最后一行以及矩阵的右下角位置并输出。
7 8 9
4 5 6
1 2 3
9 8 7

输入描述
以行优先的顺序依次输入矩阵中的12个数,每行输入一个整数。

输出描述
以方阵的形式输出整个矩阵的数据,格式控制为:printf("%4d",a[i][j]);

输入样例
1
2
3
4
5
6
7
8
9
11
12
13

输出样例
1 2 3 6
4 5 6 15
7 8 9 24
11 12 13 36
23 27 31 81

用户代码

#include<stdio.h>
int main()
{
	int a[5][4]={0},i,j,s1=0,s2=0;
	for(i=0;i<4;i++)
	{
		for(j=0;j<3;j++)
			scanf("%d",&a[i][j]);
	}
	for(i=0;i<4;i++)
	{
		s1=0;
		for(j=0;j<3;j++)
		{
		s1=s1+a[i][j];
		if(j==2)
		a[i][3]=s1;
		}
	}
	for(j=0;j<3;j++)
	{
		s2=0;
		for(i=0;i<4;i++)
		{
			s2=s2+a[i][j];
			if(i==3)
			a[4][j]=s2;
		}
	}
	a[4][3]=a[0][3]+a[1][3]+a[2][3]+a[3][3];
	for(i=0;i<5;i++)
	{
		for(j=0;j<4;j++)
			if(j==3)
				printf("%4d\n",a[i][j]);
			else
				printf("%4d",a[i][j]);
	}
	return 0;
} 

3. (25分) c_7_2 魔方阵

题目描述
输出魔方阵,所谓魔方阵即它的每一行、每一列和对角线之和均相等。

输入描述
请输入1到15之间的奇数作为魔方的行列宽度。

输出描述
以矩阵的形式输出魔方矩阵数据。以printf("%5d",a[i][j])的格式要求分开相邻数据。

输入样例
5

输出样例
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

用户代码


#include<stdio.h>
int main()
{
	int n,i,j,k=1,a[15][15]={0};
	scanf("%d",&n);
	for(i=0,j=n/2;k<=n*n;i--,j++)
	{
		if(a[i][j]==0)
		{
			a[i][j]=k;
			if(j==n-1&&i!=0)
			j=-1;
		    if(i==0&&j!=n-1)
			i=n;
			if(i==0&&j==n-1)
			{
				i=2,j=n-2;
			}
		}
		else
		{
		     i+=2,j-=1;
			 a[i][j]=k;
		}
		k++;
	}
	for(i=0;i<=n-1;i++)
	{
		for(j=0;j<=n-1;j++)
		{
			if(j==n-1)
				printf("%5d\n",a[i][j]);
			else
				printf("%5d",a[i][j]);
		}
	}
	return 0;
} 

4. (25分) c_7_1 在数组中插入一个数

题目描述
有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

输入描述
已排好序的数组数据由程序固定给出。输入任意一个待插入的数,类型为整型。

输出描述
输出插入数据后的数组

输入样例
5

输出样例
1,4,5,7,10,11,24,34,45,56,76

用户代码

#include<stdio.h>
int main()
{
	int a[10]={1,4,7,10,11,24,34,45,56,76},b[11]={0},c,i,j=0;
	scanf("%d",&c);
	for(i=0;;i++)
	{
		if(i<9&&c>a[i])
			b[j]=a[i];
		if(i==9&&c>a[i])
		{
			b[j]=a[i],b[10]=c;break;
		}
		if(c<=a[i])
		{
			b[j]=c;break;
		}
		j++;
	}
if(b[10]==0)
	for(j++,i;j<=10;j++,i++)
		b[j]=a[i];
	for(j=0;j<=10;j++)
	{
		if(j<10)
		printf("%d,",b[j]);
		if(j==10)
			printf("%d",b[j]);
	}
	return 0;
}
 
发布了37 篇原创文章 · 获赞 10 · 访问量 742

猜你喜欢

转载自blog.csdn.net/qq_43608850/article/details/104320644