赞
踩
7-1 矩阵
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
- 4
- 2 3 4 1
- 5 6 1 1
- 7 1 8 1
- 1 1 1 1
35
- #include <stdio.h>
-
- int main()
- {
- int n,i,j,sum=0;
- scanf("%d",&n);
- int a[n][n];
- int *p;
- p=a[0];
- for(i=0;i<n;i++)
- for(j=0;j<n;j++)
- {
- scanf("%d",p);
- p++;
- }
- for(i=0;i<n;i++)
- a[n-1][i]=0;
- for(i=0;i<n;i++)
- a[i][n-1]=0;
- for(i=0;i<n;i++)
- {
- j=n-i-1;
- a[j][i]=0;
- }
- for(i=0;i<n;i++)
- for(j=0;j<n;j++)
- sum+=a[i][j];
- printf("%d",sum);
- }
7-2 求矩阵的局部极大值
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
- 4 5
- 1 1 1 1 1
- 1 3 9 3 1
- 1 5 3 5 1
- 1 1 1 1 1
- 9 2 3
- 5 3 2
- 5 3 4
- 3 5
- 1 1 1 1 1
- 9 3 9 9 1
- 1 5 3 5 1
None 3 5
- #include <stdio.h>
-
- int main()
- {
- int m,n,i,j,count;
- scanf("%d %d\n",&m,&n);
- int a[m][n];
- int *p;
- p=a[0];
- for(i=0;i<m*n;i++)
- {
- scanf("%d",p);
- p++;
- }
- for(i=1;i<m-1;i++)
- for(j=1;j<n-1;j++)
- {
- if(a[i][j]>a[i+1][j]&&a[i][j]>a[i-1][j]&&a[i][j]>a[i][j+1]&&a[i][j]>a[i][j-1])
- {
- printf("%d %d %d\n",a[i][j],i+1,j+1);
- count++;
- }
- }
- if(count==0)
- printf("None %d %d",m,n);
- }
7-3 构建n阶幻方阵
幻方阵又称魔方阵,是将1~n×n的整数放置在1个n×n的方阵中(n的值为奇数),且保证每行、每列及主对角线、副对角线上的数值之和相等。
本题要求实现n-幻方阵(阶数最大为15),n的值从键盘读入。
N为奇数时,N幻方构造算法为:
(1) 将1放在第一行中间一列;
(2)从2开始直到n×n为止各数依次按下列规则存放:按右上方向行走,即每一个数存放的行比前一个数的行数减1,列数加1。
(3) 如果行列范围超出矩阵范围,则回绕。
(4) 如果按上面规则确定的位置上已有数,则将其放在上一个数的下面。
输入一个正奇数n。
按照样例的格式输出n级幻方阵,每列占4个字符,右对齐。
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,sta,k,chu,kkk=1;
- scanf("%d",&n);
- int a[n][n];
- sta=(n-1)/2;
- chu=0;
- for(i=0,k=0;i<n*n;i++){
- a[chu][sta]=kkk;
- kkk++;k++;
- if(k==n){
- chu=chu+1;
- k=0;
- continue;//结束此次循环进入下一次
- }//此时下一个数输到当前数字的下方
-
- if(chu==0){
- chu=n-1;
- }//第一行转到最后一行
- else chu--;
- if(sta==n-1){
- sta=0;
- }//最后一列提到最前
- else sta++;
- }
- for(i=0;i<n;i++){
- for(k=0;k<n;k++){
- printf("%4d",a[i][k]);
- }
- printf("\n");
- }
- return 0;
- }
7-4 组个最小数
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
输入在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
在一行中输出能够组成的最小的数。
2 2 0 0 0 3 0 0 1 0
10015558
- #include<stdio.h>
- int main()
- {
- int a[10],i,j,k;
- for(i=0;i<10;i++)
- scanf("%d",&a[i]);
- for(i=1;i<10;i++)
- if(a[i]>0)
- {
- printf("%d",i);
- a[i]--;
- break;
- }
- if(a[0]>0)
- for(k=0;k<a[0];k++)
- printf("0");
- for(j=0;j<a[i];j++)
- printf("%d",i);
- for(i++;i<10;i++)
- for(j=0;j<a[i];j++)
- printf("%d",i);
- printf("\n");
- return 0;
- }
7-5 字符串排序
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
按照以下格式输出排序后的结果:
- After sorted:
- 每行一个字符串
red yellow blue black white
- After sorted:
- black
- blue
- red
- white
- yellow
- #include <stdio.h>
- #include <string.h>
-
- int main()
- {
- char a[5][80];
- char s[80];
- int i,j;
- for(i=0;i<5;i++)
- scanf("%s",a[i]);
- for(i=0;i<4;i++)
- for(i=0;i<4;i++)
- {
- for(j=0;j<4;j++)
- {
- if(strcmp(a[j],a[j+1])>0)
- {
- strcpy(s,a[j]);
- strcpy(a[j],a[j+1]);
- strcpy(a[j+1],s);
- }
- }
- }
- printf("After sorted:\n");
- for(i=0;i<5;i++)
- printf("%s\n",a[i]);
- }
7-6 IP地址转换
一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
输入在一行中给出32位二进制字符串。
在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
11001100100101000001010101110010
204.148.21.114
- #include <stdio.h>
- int a[8]={128,64,32,16,8,4,2,1};
-
- int main(){
- char str[33];
- int ans1=0,ans2=0,ans3=0,ans4=0;
- scanf("%s",&str);
- for(int i=0;i<8;i++){
- ans1+=a[i%8]*(str[i]-'0');
- }
- for(int i=8;i<16;i++){
- ans2+=a[i%8]*(str[i]-'0');
- }
- for(int i=16;i<24;i++){
- ans3+=a[i%8]*(str[i]-'0');
- }
- for(int i=24;i<32;i++){
- ans4+=a[i%8]*(str[i]-'0');
- }
- printf("%d.%d.%d.%d",ans1,ans2,ans3,ans4);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。