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