每日学习 1153--1164

1153 一维数组的插入

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 22825 | 通过数 : 7727

题目描述

数组a中的10个数按升序排列。从键盘输入一个待插入数key,将其插入到数组中,使数组依然保持升序。

输入要求

先从键盘输入10个按升序排列的整数,然后再输入一个待插入的数据key。

输出要求

输出插入后的对应结果,要求依然升序排列。每个数据后面都有空格。

输入样例

1 3 5 7 9 11 13 15 17 19
6

输出样例

1 3 5 6 7 9 11 13 15 17 19

提示

 
  

来源

NBU OJ

代码:

#include          //C  法1
int main(){
	int a[11],i,j,t;
	for(i=0;i<11;i++)
	    scanf("%d",&a[i]);
	for(i=0;i<10;i++){
		for(j=0;j<10-i;j++){
			if(a[j]>a[j+1])
				t=a[j],a[j]=a[j+1],a[j+1]=t; 
		}
	}
	for(i=0;i<11;i++)
		printf("%d ",a[i]);
	printf("\n");
	return 0;
}
#include           //C++     法2
using namespace std;  
//{插入排序的核心代码 
template
void insertionSort(T& arr){
	int preIndex,current;
	for(int i=1;i<11;i++){
		preIndex=i-1;//已排序序列的最后一个元素的 下标
		current=arr[i];//当前待排元素的 值
		while(preIndex>=0&&arr[preIndex]>current){
			arr[preIndex+1]=arr[preIndex];
			preIndex--;
		}
		arr[preIndex+1]=current;
	}
}//插入排序的进一步优化,便是希尔排序(步长为 1,就是简单插入排序)。 
//插入排序的核心代码}
int main(){
	int a[11],i;
	for(i=0;i<11;i++)
	    scanf("%d",&a[i]);
	insertionSort(a);
	for(i=0;i<11;i++)
		cout<


1154 一维数组的删除

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 24273 | 通过数 : 7308

题目描述

有5个整型数据存储在数组中,再输入一个数值key,删除数组中第1个等于key的元素,并将剩余的4个数据输出。如果key不是数组中的元素,则显示not found。

输入要求

先从键盘输入5个整数,然后再输入一个待删除的数据key。

输出要求

输出删除后的结果,若不存在则输出not found。输出时每个数后面都有一个空格。

输入样例

80 65 93 100 81
93

输出样例

80 65 100 81

提示

 
  

来源

NBU OJ

代码:

#include          //C
int main(){
	int a[6],key,i,set=1;
	for(i=0;i<5;i++)
		scanf("%d",&a[i]); 
	scanf("%d",&key);
	for(i=0;i<5;i++){
		if(a[i]==key) set=0;
	}
	if(set) printf("not found");
	else{
		for(i=0;i<5;i++)
			if(a[i]!=key) printf("%d ",a[i]);
	} 
	printf("\n");
	return 0;
}


1155 一维数组逆序显示

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 22918 | 通过数 : 9145

题目描述

输入10个整数存放在数组中,再逆序显示这10个数。

输入要求

从键盘输入10个整数。

输出要求

逆序显示这10个数。每个数据后面都有一个空格,最后一个数据输出后还需要换行。

输入样例

6 7 9 0 -6 16 18 -90 19 10

输出样例

10 19 -90 18 16 -6 0 9 7 6

提示

 
  

来源

NBU OJ

代码:

#include            //C
int main(){
	int a[10],i;
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	for(i=9;i>=0;i--)
		printf("%d ",a[i]);
	printf("\n");
	return 0; 
}


1156 十个成绩排序

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 26192 | 通过数 : 9068

题目描述

期末考试结束了,陈老师找到集训队的同学,希望帮忙开发一个成绩排序的系统。这个应该难不倒集训队员的,先做一个内部小测试吧。随意输入10个学生的成绩,按从高到低的序列显示。

输入要求

输入10个学生的成绩

输出要求

输出从高到低的排序结果。

输入样例

90 80 70 60 50 91 72 18 2 0

输出样例

91 90 80 72 70 60 50 18 2 0

提示

输出时,每个数据的后面都有一个空格。

来源

NBU OJ

代码:

#include           //C
int main(){
	int a[10],i,j,t;//t为中间变量 
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	//冒泡排序 
	for(i=0;i<9;i++){//n个数的数列总共扫描 n-1次
		for(j=0;j<9-i;j++){//每一趟扫描到 a[n-i-2]与a[n-i-1]比较为止结束
			if(a[j]


1157 最高分和最低分

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 16252 | 通过数 : 8908

题目描述

已知有10个同学的成绩,求最高分和最低分以及相应分数所在的位置。从键盘输入10个整数存放在数组中,假设这10个数互不相同,且无序排列。请找出其中最大数及它在数组中的下标,以及最小数和下标。

输入要求

从键盘输入10个整数。

输出要求

找出其中最大数及它在数组中的下标,以及最小数和下标。各占一行。

输入样例

60 70 90 50 65 76 88 95 91 80

输出样例

95 7
50 3

提示

 
  

来源

NBU OJ

代码:

#include             //C
int main(){
	int a[10],i,max,min,maxid=0,minid=0;
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	max=a[0];
	min=a[0];
	for(i=1;i<10;i++){
		if(maxa[i]) min=a[i],minid=i;
	}
	printf("%d %d\n%d %d\n",max,maxid,min,minid);
	return 0;
}


1158 有序数组的查找

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 15788 | 通过数 : 7957

题目描述

已知一维数组中的10个元素各不相同,但已按升序排列。查找数组中是否存在值为key的数组元素。如果有,输出相应的下标,否则输出not found。你有什么好方法吗?

输入要求

先从键盘输入10个升序排列的整数,然后再输入一个待查找的数据key。

输出要求

输出对应结果。若不存在则输出not found.

输入样例

6 7 9 10 16 18 20 35 141 150
21

输出样例

not found

提示

 
  

来源

NBU OJ

代码:

#include         //C
int main(){
	int a[10],key,i,id=0,set=0;
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	scanf("%d",&key);
	for(i=0;i<10;i++){
		if(a[i]==key) id=i,set=1;
	}
	if(set) printf("%d\n",id);
	else printf("not found\n");
	return 0;
}


1159 字母出现频率

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 13343 | 通过数 : 6656

题目描述

从键盘输入一行文本(小于1000字符),统计其中每个英文字母出现的频率,并输出出现过的英文字母及其次数,未出现过的不需要显示。为了简化问题的复杂度,假设在统计过程中不区分字母的大小写,即'A'与'a'被认为是一种字母。

输入要求

先从键盘输入一行文本。以换行符结束。

输出要求

输出统计结果。

输入样例

Studing C Language

输出样例

'A':2
'C':1
'D':1
'E':1
'G':3
'I':1
'L':1
'N':2
'S':1
'T':1
'U':2

提示

 
  

来源

NBU OJ

别人的代码(由于自己的代码运行时间过长,这边就不放出来了):

#include            //C
int main(){
	char c[1000],a[26];
	int i,j,d=0;
	gets(c);
	for(i=0;i<26;i++)
		a[i]='A'+i;
	for(i=0;c[i]!='\0';i++){
		if(c[i]>='a'&&c[i]<='z') c[i]-=32;
	}
	for(i=0;i<26;i++){
		d=0;
		for(j=0;c[j]!='\0';j++){
			if(c[j]==a[i]) d++;
		}
		if(d) printf("'%c':%d\n",a[i],d);
	}
	return 0;
}


1160 二维数组元素加1操作

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 10179 | 通过数 : 5551

题目描述

从键盘输入数值,构成一个3行4列的二维整型数组,设计函数对每个元素执行加1操作,然后在主函数中输出该数组的内容。

输入要求

输入3行4列的二维数组。

输出要求

按行列形式输出操作后的数组,每个数字后面都有空格。

输入样例

1 2 3 4
5 6 7 8
9 10 11 12

输出样例

2 3 4 5 
6 7 8 9 
10 11 12 13 

模板

#include 
@-@ //设计函数对二维数组元素执行加一操作

int main()
{
    int a[3][4],i,j;
    for(i=0;i<3;i++)
    {
    for(j=0;j<4;j++)
        scanf("%d",&a[i][j]);
    }
	myadd(a,3);   //调用函数
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
         printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

提示

 
  

来源

NBU OJ

代码:

#include          //C
void myadd(int a[3][4],int h){//设计函数对二维数组元素执行加一操作
	int i,j;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			a[i][j]++;
}
int main(){
    int a[3][4],i,j;
    for(i=0;i<3;i++){
    	for(j=0;j<4;j++)
        	scanf("%d",&a[i][j]);
    	}
		myadd(a,3);//调用函数
    	for(i=0;i<3;i++){
        	for(j=0;j<4;j++)
				printf("%d ",a[i][j]);
        printf("\n");
    }
    return 0;
}


1161 二维数组的最大值

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 9869 | 通过数 : 6051

题目描述

有一个3*4的矩阵,要求编程求出其中值最大的那个元素。

输入要求

从键盘输入12个数字组成一个3*4的矩阵。

输出要求

输出矩阵中的最大值。

输入样例

1 2 5 3
5 3 4 2
0 6 9 1

输出样例

9

提示

 
  

来源

NBU OJ

代码:

#include           //C
int main(){
	int a[3][4],i,j,max;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			scanf("%d",&a[i][j]);
	max=a[0][0];
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			if(max


1162 二维数组最大值及位置

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 15261 | 通过数 : 7195

题目描述

有一个3*4的矩阵,要求编程求出其中值最大的那个元素,以及其所在的行号和列号。(如果最大数有多个,则显示第1个出现的数据的信息)

输入要求

从键盘输入12个数字组成一个3*4的矩阵。

输出要求

输出矩阵中最大值,以及其所在的行号和列号。如有多个最大值,则显示第1个出现的。

输入样例

1 2 9 3
5 3 4 2
0 6 9 1

输出样例

9 0 2

提示

 
  

来源

NBU OJ

代码:

#include            //C
int main(){
	int a[3][4],i,j,max,maxi=0,maxj=0;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			scanf("%d",&a[i][j]);
	max=a[0][0];
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			if(max

1163 两个一维数组中的相同元素

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 12609 | 通过数 : 4756

题目描述

在两个长度相等的一维整型数组中寻找相同元素。先输入一个整数n表示数组的长度,接着分别输入两个数组的内容,且每个数组内部均无重复数值,请找出两个数组中的相同元素。若存在相同元素输出其相同的元素值,否则输出failure。

输入要求

数组长度n以及两个数组的内容。

输出要求

两个数组中相同的值。每个数据占据一行。

输入样例

6
2 5 6 8 7 1
3 4 5 9 2 0

输出样例

2
5

提示

数组长度不超过1000

来源

NBU OJ

代码:

#include            //C
int main(){
	int n,a[100],b[100],i,j,set=1;
	scanf("%d",&n);
	for(i=0;i


1164 对角线元素和

时间限制 : 2000/1000 MS(Java/Others) | 内存限制 :65536/32768 KB(Java/Others)

提交数 : 14665 | 通过数 : 7793

题目描述

从键盘输入一个整数n,然后输入n*n个数据建立一个方阵,计算并输出方阵主对角线元素的和。

输入要求

先输入一个整数n表示方阵的维数。接着输入n*n个数据形成一个方阵

输出要求

方阵主对角线元素之和。

输入样例

3
1 2 4
-1 5 6
3 3 9

输出样例

15

提示

 
  

来源

NBU OJ

代码:

#include           //C
int main(){
	int n,a[100][100],i,j,s=0;
	scanf("%d",&n);
	for(i=0;i

你可能感兴趣的:(c语言)