时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 11052 | 通过数 : 4061
找出一个2维数组矩阵的鞍点,即该位置上的元素在该行中最大,在该列中最小,可能不存在鞍点,如果存在多个,输出最小的那个!
输入 n,m表示二维矩阵的行数和列数,然后根据行列数输入n*m个数据构成一个二维矩阵。
如果存在鞍点,则输出该鞍点的值,如果不存在则输出not exist。
4 5 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20
5
NBU OJ
实在想不到什么办法,直接就去搜了,(笨蛋的我看完后还是想不出,就当做笔记好了)
#include<stdio.h> //C
int main(){
int a[100][100],i,j,k,x=0,maxh[100],set=1,ji[100],min,zll[11];
int n,m;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++){
maxh[i]=a[i][0];//把第 i行开头第一个数初始化 maxh[i]
for(j=1;j<m;j++){
if(maxh[i]<a[i][j]){//找第 i行最大的数存到 maxh[i]
maxh[i]=a[i][j];
ji[i]=j;//把每行最大的数的列位置记住
}
}
}
for(k=0;k<n;k++){
set=1;//每次换到下一行,将 set初始化为 1
for(i=0;i<n;i++){
if(a[i][ji[k]]<maxh[k]){//将第 k行最大数与第 k行最大数的列中的数比较大小
set=0;//只要遇到比它还小的数,说明它不是鞍点,此时标记 set为零
break;//不是鞍点便直接跳出该循环
}
}
if(set==1){//若一直 set为零,说明第 k行 maxh[k]就是鞍点
zll[x]=maxh[k];//将这个鞍点记录下来,存到 zll[x],以便于从中找到最小的鞍点
x++;//数数有几个鞍点
}
}
if(x!=0){//若 x不为零说明有 x个鞍点
min=zll[0];//将第一个鞍点的值给 min便于初始化 min
for(i=1;i<x;i++){
if(min>zll[i]) min=zll[i];//找到最小的鞍点
}
printf("%d\n",min);//输出最小的鞍点
}
else printf("not exist\n");//若 x为零,说明没有鞍点
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 12752 | 通过数 : 7459
输入一个字符串,设计函数计算其有效长度,最终输出字符串长度及该字符串内容。不要使用系统提供的strlen函数。
输入一个字符串,以换行符结束。字符串长度不超过100。
输出有效长度及字符串内容。
world
5 world
#include<stdio.h> @-@ //设计求字符串长度的函数 int main() { char str[101]; int len=0; gets(str); len=mylen(str); //调用函数求字符串长度 printf("%d ",len); printf("%s\n",str); return 0; }
NBU OJ
#include<stdio.h> //C
#include<string.h>
int mylen(char str[101]){
return strlen(str);
}
//设计求字符串长度的函数
int main(){
char str[101];
int len=0;
gets(str);
len=mylen(str);//调用函数求字符串长度
printf("%d ",len);
printf("%s\n",str);
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 16446 | 通过数 : 6887
输入两个字符串,设计函数连接这两个字符串。单个字符串的长度不超过100。不要使用系统提供的strcat函数。
输入2个字符串,每个字符串以换行符结束。
输出连接好的字符串。
Country side
Countryside
#include<stdio.h> @-@ //设计连接字符串的函数 int main() { char s1[202],s2[101]; gets(s1); gets(s2); mystrcat(s1,s2); //调用函数连接字符串 puts(s1); return 0; }
NBU OJ
#include<stdio.h> //C
#include<string.h>
void mystrcat(char s1[202],char s2[101]){
strcat(s1,s2);
}
//设计连接字符串的函数
int main(){
char s1[202],s2[101];
gets(s1);
gets(s2);
mystrcat(s1,s2);//调用函数连接字符串
puts(s1);
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 10978 | 通过数 : 4678
输入n个城市的名称,进行升序排序并输出。
第一行输入一个整数n,表示有n个城市,n不超过100。
接着输入n个字符串,每个字符串代表一个城市名,一个字符串内部不包含空格,字符串长度不超过100。
输出排序后的城市名字。每个城市名占据一行。
10 nignbo hangzhou quzhou fuyang shaoxing ninghai lishui weinan fujian guangzhou
fujian fuyang guangzhou hangzhou lishui ningbo ninghai quzhou shaoxing weinan
NBU OJ
#include<stdio.h> //C
#include<string.h>
int main(){
char s[100][100],t[100];
int n,i,j;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++) gets(s[i]);
for(i=0;i<n-1;i++){
for(j=i;j<n;j++){
if(strcmp(s[i],s[j])>0)
strcpy(t,s[i]),strcpy(s[i],s[j]),strcpy(s[j],t);
}
}
for(i=0;i<n;i++) puts(s[i]);
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 5304 | 通过数 : 2890
有一行电文,已经按下面的规律译成密码
A—>Z a—>z
B—>Y b—>y
C—>X c—>x
即把第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母的字符保持不变。
输入已经按上述方式加密的电文(电文的长度不超过1000),要求输出其原文,其中可能有空格。
输出电文的原文。
R droo erhrg Xsrmz mvcg dvvp.
I will visit China next week.
NBU OJ
#include<stdio.h> //C
#include<string.h>
int main(){
char a[1000];
int i;
gets(a);
for(i=0;a[i]!='\0';i++){
//题意:第 i个字母变成第(26-i+1)个字母
if(a[i]>='A'&&a[i]<='Z') a[i]=26-1*(a[i]-'A'+1)+'A';
else if(a[i]>='a' && a[i]<='z') a[i]=26-1*(a[i]-'a'+1)+'a';
// a[i]-'A'+1 ->将字母换为对应序号,+1改为 +'A' ->将该序号换作对应字符
}
puts(a);
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 13602 | 通过数 : 7251
CoCo和Tom比谁的记性好,这次的比试项目是数字提取。由裁判Mary读出一串字符,CoCo和Tom快速将该字符串中出现过的数字按顺序提取出来并记录在纸上,由Mary来比对谁写的正确。你能编写一个程序,模拟这个数字提取的过程吗?
从键盘输入一个字符串,以换行符结束,输入不多于1000个字符。保证输入中至少有一个数字。
输出字符串中的全部数字
his5is3a3245string14including11number12s
533245141112
NBU OJ
#include<stdio.h> //C
#include<string.h>
int main(){
char a[1000];
int i;
gets(a);
for(i=0;a[i]!='\0';i++){
if(a[i]>='0'&&a[i]<='9') printf("%c",a[i]);
}
printf("\n");
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 5191 | 通过数 : 2669
有n个整数,要求将前面各数字顺序向后移动m个位置,并将最后面的m个数变成最前面m个数。其中,移动2个位置后的效果如下图所示:
第一行输入两个正整数:n,m。n表示原始数据的个数,m表示需要向后移动的位置数。
第二行输入这n个原始整数。(n<=100)
输出经过调整后的n个数。
7 3 1 2 5 4 7 8 3
7 8 3 1 2 5 4
输出时,最后一个数据后面直接换行。
NBU OJ
#include<stdio.h> //C
int main(){
int n,m,a[100],b[100],i,set=1;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(i=0;i<m;i++) b[i]=a[n-m+i];//b--前 m位<-->a--后 m位
for(i=0;i<n-m;i++) b[m+i]=a[i];//剩下的
for(i=0;i<n;i++){
if(set) printf("%d",b[i]),set=0;
else printf(" %d",b[i]);
}
printf("\n");
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 4252 | 通过数 : 2593
CoCo处于青少年的叛逆时期,有时侯,表现出很强烈的逆反心理,你往东,她往西,你往南,她偏往北。这一次,不知道又是谁惹着她了,好端端的一个个01串,到了她的手里,都变成10串了。请你编个程序来模仿她的行为,将01串,全变成10串吧。
输入一个01串。(长度≤200)
输出一个10串。即将输入内容中的0变1,1变0。
0110100100100 1000000010000000000
1001011011011 0111111101111111111
NBU OJ
#include<stdio.h> //C
#include<string.h>
int main(){
int i;
char a[200];
while(gets(a)!='\0'){
for(i=0;i<strlen(a);i++){
if(a[i]=='0') printf("1");
else printf("0");
}
printf("\n");
}
return 0;
}
时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)
提交数 : 15628 | 通过数 : 5010
输入一个字符串,判断其是否是C的合法标识符。
输入一个长度不超过50的字符串。
如果输入数据是C语言的合法标识符,则输出yes,否则,输出no。
fi8x_a
yes
NBU OJ
#include<stdio.h> //C
#include<string.h>
int main(){
char a[50];
int len=0,i,s=0;
while(gets(a)!='\0'){
if(a[0]>='0'&&a[0]<='9'){
printf("no\n");
break;
}
len=strlen(a);
for(i=0;i<len;i++){
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'||a[i]>='0'&&a[i]<='9'||a[i]=='_') s++;
}
if(s==len) printf("yes\n");
else printf("no\n");
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容