搜索
您的当前位置:首页正文

每日学习 1181--1190

来源:哗拓教育

1181 二维数组的鞍点

时间限制 : 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;
}


1182 字符串长度

时间限制 : 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;
}


1183 连接字符串

时间限制 : 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;
}


1185 城市名排序

时间限制 : 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;
}


1186 电文密码

时间限制 : 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;
} 


1187 数字提取

时间限制 : 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;
} 


1188 数字移位

时间限制 : 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;
}

 


1189 逆反的01串

时间限制 : 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;
}


1190 C语言合法标识符

时间限制 : 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;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top