作者 C课程组
单位 浙江大学
给定一个 n × n n×n n×n 的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数
n
(
1
<
n
≤
10
)
n(1<n≤10)
n(1<n≤10);随后n行,每行给出
n
n
n 个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例:
35
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
int n, i, j, a[10][10], sum1=0, sum2=0;
scanf("%d",&n);
for(i=0; i<n; i++)
for(j=n-1; j>=0; j--) {
scanf("%d", &a[i][j]);
sum2+=a[i][j];
}
for(j=0;j<n;j++) {
sum1 += a[j][j];
sum1 += a[n-1][j];
sum1 += a[j][0];
}
sum1 = sum1-a[0][0]-a[n-1][n-1]-a[n-1][0];
printf("%d", sum2-sum1);
return 0;
}
作者 徐镜春
单位 浙江大学
给定 M M M行 N N N列的整数矩阵 A A A,如果 A A A的非边界元素 A [ i ] [ j ] A[i][j] A[i][j]大于相邻的上下左右4个元素,那么就称元素 A [ i ] [ j ] A[i][j] A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第一行中给出矩阵
A
A
A 的行数
M
M
M 和列数
N
(
3
≤
M
,
N
≤
20
)
N(3≤M,N≤20)
N(3≤M,N≤20);最后
M
M
M 行,每行给出
A
A
A 在该行的
N
N
N 个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
int m, n, i, j, k, a[20][20];
while(scanf("%d%d\n", &m, &n) != EOF) {
for(i=0; i<m; i++)
for(j=0; j<n; j++)
scanf("%d", &a[i][j]);
for(i=1, k=0; i<m-1; i++)
for(j=1; j<n-1; j++)
if(a[i][j]>a[i-1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j+1]) {
printf("%d %d %d\n", a[i][j], i+1, j+1);
k=1;
}
if(k==0) printf("None %d %d\n", m, n);
}
return 0;
}
作者 张泳
单位 浙大城市学院
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
输出格式:
按照以下格式输出排序后的结果:
After sorted:
每行一个字符串
输入样例:
red yellow blue black white
输出样例:
After sorted:
black
blue
red
white
yellow
鸣谢贵州民族大学张玉全老师修正数据!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
#include<string.h>
int main()
{
char a[5][80], t[80];
int i, j, N=5;
for(i=0; i<N; i++)
scanf("%s",a[i]);
for(i=1; i<N; i++)
for(j=0; j<N-i; j++){
if(strcmp(a[j],a[j+1])>0){
strcpy(t ,a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], t);
}
}
printf("After sorted:\n");
for(i=0; i<N; i++){
printf("%s\n", a[i]);
}
return 0;
}
作者 曹鹏
单位 Google
给定数字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
代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
int i, j, a[10]={0}, N=10;
for(i=0; i<N; i++)
scanf("%d", &a[i]);
for(i=1; i<N; i++)
if(a[i]!=0) {
printf("%d", i);
a[i]--;
break;
}
for(i=0; i<N; i++)
for(j=0; j<a[i]; j++)
printf("%d", i);
printf("\n");
return 0;
}
作者 张彤彧
单位 浙江大学
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
鸣谢用户 张麦麦 补充数据!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
#include<string.h>
int main()
{
int i, j, n, count=0;
char a[1000];
gets(a);
n=strlen(a);
if(a[0] != ' ')
count++;
for(i=0; i<n-1; i++)
if(a[i]==' ' && a[i+1]!=' ')
count++;
printf("%d", count);
return 0;
}
作者 陈越
单位 浙江大学
传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机,对任何一个问句,只要其中包含 PTA
就回答 Yes!
,其他一概回答 No.
。
输入格式:
输入第一行给出一个整型范围内的正整数 N
,随后 N
行,每行给出一个长度不超过 80
的字符串,为用户输入的句子,由英文字母、数字、空格和标点符号组成,以回车结束。
输出格式:
对每一行句子,如果其结尾字符为问号 ?
则判断此句中有无 PTA
?如果有则在一行中输出 Yes!
,否则输出 No.
。如果不是问号结尾,则敷衍地回答 enen
。
输入样例:
5
Hello!
Do you still play WZRY?
Chi Ji?
you play PTA ah?
how about pta site?
输出样例:
enen
No.
No.
Yes!
No.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char s[100];
scanf("%d", &n);
getchar();
while (n--)
{
fgets(s, sizeof(s), stdin);
int flag = 0;
if (s[strlen(s) - 2] != '?')
printf("enen\n");
else {
if (strstr(s, "PTA") != NULL)
flag = 1;
if (flag == 0)
printf("No.\n");
else
printf("Yes!\n");
}
}
return 0;
}