题目描述:
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。
输入描述:
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted。
示例:
示例1
输入:
5
1 6 9 22 30
输出:
sorted
c语言版本:
#include
#include
int main(void ) {
int m;
scanf("%d", &m);
getchar();
int* a=(int*)malloc(sizeof(int)*m);
for(int i=0;i<m;++i) {
scanf("%d",a+i);
}
int flag1=0;
int flag2=0;
for(int i=1;i<m;++i){
if(a[i-1]<a[i]){
continue;
}
else if(!flag1 && a[i-1]==a[i]) continue;
else {
flag1 = 1;
break;
}
}
for(int i=1;i<m;++i){
if(a[i-1]>a[i]){
continue;
}
else if(!flag2 && a[i-1]==a[i]) continue;
else {
flag2 = 1;
break;
}
}
if(flag1 && flag2)printf("unsorted\n");
else printf("sorted\n");
free(a);
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
输入描述:
输入包含三行,
第一行包含两个正整数n, m(1 ≤ n,m ≤ 100),用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数(范围1~5000),用空格分隔。
第三行包含m个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
示例:
示例1
输入:
5 6
1 3 7 9 22
2 8 10 17 33 44
输出:
1 2 3 7 8 9 10 17 22 33 44
c语言版本:
#include
#include
int main(void ) {
int m,n;
scanf("%d %d", &m,&n);
getchar();
int* a=(int*)malloc(sizeof(int)*m);
int* b=(int*)malloc(sizeof(int)*n);
for(int i=0;i<m;++i) {
scanf("%d",a+i);
}
getchar();
for(int i=0;i<n;++i) {
scanf("%d",b+i);
}
getchar();
int i=0;
int j=0;
while(i<m&&j<n){
if(a[i]<b[j]){
printf("%d ", a[i]);
i++;
}else{
printf("%d ",b[j] );
j++;
}
}
while(i<m)printf("%d ",a[i++] );
while(j<n)printf("%d ",b[j++] );
printf("\n");
free(b);
free(a);
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分。
输入描述:
五行,每行输入一个学生各5科成绩(浮点数表示,范围0.0~100.0),用空格分隔。
输出描述:
五行,按照输入顺序每行输出一个学生的5科成绩及总分(小数点保留1位),用空格分隔。
示例:
示例1
输入:
98.5 96.0 100 99 88
60.5 77 88.5 99 60
80 80.5 89 91 92
93 94 95.5 96 97.5
100 98 88.5 88 78.5
输出:
98.5 96.0 100.0 99.0 88.0 481.5
60.5 77.0 88.5 99.0 60.0 385.0
80.0 80.5 89.0 91.0 92.0 432.5
93.0 94.0 95.5 96.0 97.5 476.0
100.0 98.0 88.5 88.0 78.5 453.0
c语言版本:
#include
#include
int main(void ) {
float num;
float sum=0;
for(int j=0;j<5;++j){
for(int i=0;i<5;++i){
scanf("%f", &num);
sum+=num;
printf("%.1f ", num);
}
getchar();
printf("%.1f\n",sum);
sum=0;
}
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
KiKi想从n行m列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。
输入描述:
第一行包含两个整数n和m,表示这个方阵队列包含n行m列。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示方阵中的所有人的身高(保证输入身高都不相同)。(1≤x≤n≤10,1≤y≤m≤10)
输出描述:
一行,输出两个整数,用空格分隔,表示方阵中身高最高的人所在的行号和列号。
示例:
示例1
输入:
2 2
175 180
176 185
输出:
2 2
c语言版本:
#include
int main(void ) {
int m,n;
scanf("%d %d", &m,&n);
getchar();
int x=0,y=0;
int max = 0;
int num;
for(int i=0;i<m;i++){
for(int j=0;j<n;++j){
scanf("%d",&num);
if(max<=num) {
max = num;
x=i;
y=j;
}
}
}
printf("%d %d\n",x+1,y+1 );
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
输入描述:
第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (1≤n≤10)
从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。
输出描述:
一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行
示例:
示例1
输入:
3
1 2 3
0 4 5
0 0 6
输出:
YES
c语言版本:
#include
int main(void ) {
int m;
scanf("%d", &m);
getchar();
int flag=0;
int num;
for(int i=0;i<m;i++){
for(int j=0;j<m;++j){
scanf("%d", &num);
if( i>j && num!=0 ){
flag =1;
break;
}
}
}
if(!flag) printf("YES\n");
else printf("NO\n");
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
KiKi有一个矩阵,他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。
输入描述:
第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。
输出描述:
输出n行m列,为矩阵交换后的结果。每个数后面有一个空格。
示例:
示例1
输入:
2 2
1 2
3 4
1
r 1 2
输出:
3 4
1 2
c语言版本:
#include
#include
void rowChange(int**a,int n,int r,int l){
int tmp;
for(int i=0;i<n;++i){
tmp = a[r-1][i];
a[r-1][i] = a[l-1][i];
a[l-1][i] = tmp;
}
}
void clChange(int**a,int m,int r,int l){
int tmp;
for(int i=0;i<m;++i){
tmp = a[i][r-1];
a[i][r-1] = a[i][l-1];
a[i][l-1]= tmp;
}
}
int main(void ) {
int m,n;
scanf("%d%d", &m,&n);
getchar();
int** a=(int**)malloc(sizeof(int*)*m);
for(int i=0;i<m;++i)a[i]=(int*)malloc(sizeof(int)*n);
for(int i=0;i<m;++i){
for(int j=0;j<n;j++)scanf("%d",a[i]+j );
getchar();
}
int k;
scanf("%d", &k);
getchar();
char* c=(char*)malloc(sizeof(char)*k);
int* r=(int*)malloc(sizeof(int)*k);
int* l=(int*)malloc(sizeof(int)*k);
for(int i=0;i<k;++i){
scanf("%c%d%d",c+i,r+i,l+i);
getchar();
}
for(int i=0;i<k;++i){
if(c[i]=='r')rowChange(a,n,r[i],l[i]);
else if(c[i]=='c') clChange(a,m,r[i],l[i]);
else continue;
}
for(int i=0;i<m;++i){
for(int j=0;j<n;++j)printf("%d ",a[i][j]);
printf("\n");
}
for(int i=0;i<m;++i)free(a[i]);
free(a);
free(c);
free(r);
free(l);
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
输入描述:
第一行包含一个整数数n。 (1≤n≤30)
输出描述:
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
示例:
示例1
输入:6
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
c语言版本:
#include
long factor(int m){
if(m == 0)return 1;
long s=1;
for(int i=m;i>=1;--i)s*=i;
return s;
}
long comNum(int m, int n){
if(n==0||m==0) return 1;
return factor(m)/factor(n)/factor(m-n);
}
int main(void){
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
for(int j=0;j<i-1;++j)printf("%5ld",comNum(i-1,j));
printf("%5d\n",1);
}
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
输入描述:
三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。
输出描述:
如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。
示例:
示例1
输入:
K O B
O K B
B O K
输出:
KiKi wins!
c语言版本:
#include
int main(void){
char num[3][3];
char c='1';
for(int i=0;i<3;++i){
for(int j=0;j<3;++j){
scanf("%c",&c );
getchar();
if(c =='K') num[i][j]=1;
if(c=='O')num[i][j]=0;
if(c=='B')num[i][j]=-1;
}
}
int flagK = 0;
int flagB = 0;
if(num[0][0]+num[1][1]+num[2][2]==3) flagK=1;
if(num[0][2]+num[1][1]+num[2][0]==3) flagK=1;
if(num[0][0]+num[1][1]+num[2][2]==-3) flagB=1;
if(num[0][2]+num[1][1]+num[2][0]==-3) flagB=1;
int sum=0;
if(!flagB && !flagK){
for(int i=0;!flagK&&!flagB&&i<3;++i){
for(int j=0;j<3;++j)sum+=num[i][j];
if(sum == 3){
flagK=1;
break;
}
if(sum ==-3){
flagB=1;
break;
}
sum=0;
}
}
if(!flagB && !flagK){
for(int i=0;!flagK&&!flagB&&i<3;++i){
for(int j=0;j<3;++j)sum+=num[j][i];
if(sum == 3){
flagK=1;
break;
}
if(sum ==-3){
flagB=1;
break;
}
sum=0;
}
}
if(flagK && !flagB)printf("KiKi wins!\n");
else if(!flagK && flagB )printf("BoBo wins!\n");
else printf("No winner!\n");
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例:
示例1
输入:222222
输出:0
示例1
输入:123
输出:101
c语言版本:
#include
int main(void){
int n;
scanf("%d",&n );
int sum=0;
int m;
int num=1;
while(n){
m = n%10;
if(m%2) sum+=num;
n/=10;
num*=10;
}
printf("%d\n",sum);
return 0;
}
c++版本:
java版本:
python版本:
题目描述:
在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子串“CHN”的个数。
子串的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子串。如“ABC”的子串有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。
输入描述:
输入只包含大写字母的字符串s。(1 ≤ length ≤ 8000)
输出描述:
输出一个整数,为字符串s中字串“CHN”的数量。
示例:
示例1
输入:CCHNCHN
输出:7
c语言版本:
#include
int main(void){
char c[8000]={0};
scanf("%s", c);
int i=0;
long j=0;
long k=0;
long sum=0;
while(c[i]){
if(c[i]=='C')j++;
if(c[i]=='H')k+=j;
if(c[i]=='N')sum+=k;
++i;
}
printf("%ld\n",sum);
return 0;
}
c++版本:
java版本:
python版本:
本题目全部来自牛客网,如果侵权,请留言删除