IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 6.字符串处理2 -> 正文阅读

[数据结构与算法]6.字符串处理2

6.字符串处理2

**题目描述:**任意输入一个字母x,并输入任意字符串(不包含空格),如果该字符串中包含字符x,则将字符串中满足开始与结束条件之间的字符串输出,如果该字符串中不含有字符x,则输出NO。

开始条件为:第一次出现字母x(不区分大小写);

结束条件为:第二次出现字母x(不区分大小写)或者出现字符串结尾符

输入格式

输入的第一行包括一个字符x。

输入的第二行为任意字符串,长度不超过100。

输出格式

输出满足条件的字符串,或者输出NO。

输入样例1

a

12asd16w1A32d1

输出样例1

asd16w1A

输入样例2

C

vaic1351a

输出样例2

c1351a

输入样例3

c

vai1hhiubk567

输出样例3

NO

#include<stdio.h>
#include<string.h>
int main()
{
	char x,X,s[101],s1[101]={0};
	scanf("%c",&x);
	scanf("%s",s);
	
	int i,j;
	if(x>='a' && x<='z')
		X = 'A' + x - 'a';
	else
		X = 'a' + x - 'A';
		
	int len = strlen(s);
	int count=0;
	int index[2];	
	for(i=0;i<len;i++)
	{
		if(s[i]==x || s[i]==X)
		{
			index[count] = i;
			count ++;
			if(count==2)
				break;
		}
	}
	
	if(count==2)
	{
		j = 0;
		for(i=index[0];i<=index[1];i++)
		{
			s1[j] = s[i];
			j ++;
		}
		puts(s1);	
	}
	else if(count==0)
		printf("NO\n");
	else
	{
		j = 0;
		for(i=index[0];s[i];i++)
		{
			s1[j] = s[i];
			j ++;
		}
		puts(s1);
	}
	return 0;
} 

2.数组重塑

**题目描述:**从键盘任意输入一个数字n(0<n<10),再任意输入长度为n*n的一串数字,将其重塑为一个n阶方阵(即行数和列数都为n的二维数组),重塑后的方阵按照先列后行从小到大的顺序进行输出(见样例)

输入格式

第一行输入一个整数n(0<n<10)。

第二行输入n*n个整数,数字间用空格间隔开。

输出格式

输出n行,每行n个数据,数据以空格间隔。

输入样例1

3

6 3 9 7 5 1 15 8 10

输出样例1

1 6 9

3 7 10

5 8 15

输入样例2

3

12 121 359 63 127 15 215 10 111

输出样例2

10 63 127

12 111 215

15 121 359

#include<stdio.h>
int main()
{
	int n,a[100];
	scanf("%d",&n);
	
	int i,N;
	N = n*n;
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	
	int j;	
	for(i=0;i<N-1;i++)
		for(j=i+1;j<N;j++)
			if(a[j]<a[i])
			{
				int temp;
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
			
	int b[10][10];
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			b[i][j] = a[i+j*n];
			printf("%d ",b[i][j]);
		}
		printf("\n");			
	}
		
	return 0;
} 

4.数组折叠

**题目描述:**从键盘任意输入两个数字n(0<n≤6)和m(0<m≤n),n为输入数据长度参数,m为折叠次数。然后任意输入长度为2^n(2的n次幂) 的一串数字a0,a1 ,…, a2^n-1并对该串数字进行m次折叠,最终将折叠后的数据进行输出。

数据串一次折叠将数据减少一半,规则如下:

a0+a2^n -1 , a1+a2^n -2, a2+a2^n -3 … a2(n-1)-1+a2(n-1)

后续每次折叠都在前一次折叠后的数组基础上使用同样的规则进行折叠。

输入格式

第一行输入两个整数n和m,两数用空格间隔开。

第二行输入2^n个整数,数字间用空格间隔开。

输出格式

输出处理后的结果,数字间用空格间隔开。

输入样例****1

3 1

5 9 3 7 6 12 8 2

输出样例****1

7 17 15 13

输入样例****2

3 2

5 9 3 7 6 12 8 2

输出样例****2

20 32

#include<stdio.h>
int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	
	int len=1,i;
	for(i=0;i<n;i++)
		len *= 2;
		
	int a[64];
	for(i=0;i<len;i++)
		scanf("%d",&a[i]);
	
	int len1,A[32];	
	for(int k=0;k<m;k++)
	{
		len1 = len/2;
		for(i=0;i<len1;i++)
			A[i] = a[i] + a[len-1-i];
			
		for(i=0;i<len1;i++)
			a[i] = A[i];
		len = len1;
	}
	
	for(i=0;i<len;i++)
		printf("%d ",a[i]);
	return 0;
} 

1-矩阵相乘

**题目描述:**键盘输入m×n维矩阵A,令其转置矩阵为B,求乘积矩阵C=A×B,并将C矩阵输出。

说明:把矩阵的行换成列得到的新矩阵即为转置矩阵。若A=(aij)是m×s矩阵,B=(bij)是s×n矩阵,则它们的乘积矩阵C=(cij)是一个m×n矩阵,且计算规则为:

img

**输入说明:**输入为m+1行,第一行是两个整数m和n(1≤m, n≤10),表示矩阵A的行数和列数,接下来m行,每行n个整数,表示构成矩阵A的m*n个元素,各个整数之间用空格分隔。

**输出说明:**输出C矩阵。

输入样例:

2 3

1 2 3

4 5 6

输出样例:

14 32

32 77

#include<stdio.h>
int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	
	int a[m][n],b[n][m];
	int c[10][10]={0};
	int i,j;
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
			b[j][i] = a[i][j];
		}
			
	for(i=0;i<m;i++)
		for(j=0;j<m;j++)
		{
			int k;
			for(k=0;k<n;k++)
				c[i][j] +=  a[i][k]*b[k][j];
		}
		
	for(i=0;i<m;i++)
	{
		for(j=0;j<m;j++)
			printf("%d ",c[i][j]);
			
		printf("\n");
	}
	return 0;
}
 

2-各行排序

**题目描述:**键盘输入m×n维矩阵,对其各行元素从大到小排序,输出各行排序后的矩阵。

**输入说明:**输入第一行为两个整数m和n(1≤m, n≤10),表示矩阵A的行数和列数,其后输入m行,每行n个数据,数据间以空格分隔。

输出说明:

输出经过各行排序后的矩阵。

共m行,每行n个整数,整数之间用空格分隔。

输入样例:

2 3

1 2 3

4 5 6

输出样例:

3 2 1

6 5 4

#include<stdio.h>
int main()
{
	int m,n,a[10][10];
	scanf("%d %d",&m,&n);
	
	int i,j;
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
			scanf("%d",&a[i][j]);
			
	for(i=0;i<m;i++)
	{
		int k,l;
		for(k=0;k<n-1;k++)
			for(l=k+1;l<n;l++)
			{
				if(a[i][l]>a[i][k])
				{
					int temp;
					temp = a[i][k];
					a[i][k] = a[i][l];
					a[i][l] = temp;
				}
			}
			
		for(j=0;j<n;j++)
			printf("%d ",a[i][j]);
			
		printf("\n");
	}
	
	return 0;
} 
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:26:29  更:2022-03-11 22:28:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:42:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码