浙江大学 PTA 第7部分 选择法排序 求一批整数中出现最多的个位数字 判断上三角矩阵 求矩阵各行元素之和 找鞍点 统计大写辅音字母 字符串替换 字符串转换成十进制整数

本文主要是介绍浙江大学 PTA 第7部分 选择法排序 求一批整数中出现最多的个位数字 判断上三角矩阵 求矩阵各行元素之和 找鞍点 统计大写辅音字母 字符串替换 字符串转换成十进制整数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

习题7-1 选择法排序 (20 分)

本题要求将给定的n个整数从大到小排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

4
5 1 7 6

输出样例:

7 6 5 1

变量方法:

#include "stdio.h"
int main()
{int i,j,k,n;printf("please input a intege n:");scanf("%d",&n);// 读取 n 值 int a[n],max;  //创建数组 及 变量 max 用于记录最大值for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++) //外层循环 {max=a[i]; //max 初始化 k=i;	  //最大值下表记录 {for(j=i+1;j<n;j++) //内层循环 if(a[j]>max)   //遇到更大的数 {max=a[j];	//最大值和下标 变更 k=j;}}a[k]=a[i];	//交换外层循环起始元素和最大值 a[i]=max;}for(i=0;i<n;i++) 	//输出  if(i!=n-1) printf("%d ",a[i]);else 	printf("%d\n",a[i]);
}

指针方法

#include "stdio.h"
int main()
{int i,j,k,n;printf("please input a intege n:");scanf("%d",&n);// 读取 n 值 int a[n],*pa;  //创建数组 及 变量 *pa 用于记录最大值for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++) //外层循环 {pa=&a[i]; //指针 初始化  {for(j=i+1;j<n;j++) //内层循环 if(a[j]>*pa)   //遇到更大的数 pa=&a[j];	//指针指向最大值}k=*pa;	//最大值赋给临时变量 *pa=a[i];	//交换外层循环起始元素和最大值 a[i]=k;}for(i=0;i<n;i++) 	//输出  if(i!=n-1) printf("%d ",a[i]);else 	printf("%d\n",a[i]);
}

习题7-2 求一批整数中出现最多的个位数字 (20 分)

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:

输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:

在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:

3
1234 2345 3456

输出样例:

3: 3 4
#include "stdio.h"
int main()
{int i,j,k,n;printf("please input a intege n:");scanf("%d",&n);// 读取 n 值 int a[n];  //创建数组 及 变量 *pa 用于记录最大值for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n;i++)printf("%d:",a[i]);int b[10]={0}; //分别记录 0,1,2,3,4,5,6,7,8,9每个数字出现的次数 for(i=0;i<n;i++) //外层循环 {while (a[i]%10>0){j=a[i]%10;b[j]++;a[i]/=10;//printf("j= %d,b[%d] = %d\n",j,j,b[j]) ;}}//for(i=0;i<10;i++) 	//输出-9出现的次数//printf("%d\n",b[i]);j=b[0];//假设 0 出现的次数最多 for(i=0;i<10;i++) 	//查找出现次数最多的数  if(b[i]>j) j=b[i]; 	printf("%d:",j);for(i=0;i<=10;i++)if(b[i]==j) printf(" %d",i);printf(" \n");
}

习题7-3 判断上三角矩阵 (15 分)

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入格式:

输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

输入样例:

2
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2

输出样例:

YES
NO
#include "stdio.h"
#include "stdlib.h"
#include "windows.h"
int sn=0;//定义全局变量 传递数组 阵列大小
/*函数:判断是否为上三角矩阵 是 0 非 >0*/ 
int Yes_or_No(int *pyn[sn])
{int i,j,k=0;for(i=0;i<sn;i++)for(j=0;j<i;j++)if(pyn[i][j]!=0) k++;//做对角线下部的元素不为 0 计数器 +1 return k;
}
/*函数:创建矩阵*/ 
int Create_sz(int *pcr[sn])
{int i,j;int shuzu[sn][sn]; for(i=0;i<sn;i++){pcr[i]=shuzu[i];//指针与创建数组行号逐一对应 for(j=0;j<sn;j++)scanf("%d",&pcr[i][j]);}	
}
/*输出函数*/
out_put(int *result,int t)
{int i; for(i=0;i<t;i++)if(result[i]>0)printf("NO\n");else printf("Yes\n");
}	
/*主函数*/ 
int main()
{int i,t;//printf("please input a intege n: ");scanf("%d",&t);// 读取 n 值 int result[t];//存储判断结果 for(i=0;i<t;i++)//循环创建 数组 并 存储判断结果 {scanf("%d",&sn);int *psz[i][sn];Create_sz(psz[i]);result[i]=Yes_or_No(psz[i]);	}out_put(result,t);/*输出*/	system("pause");
}

习题7-4 求矩阵各行元素之和 (15 分)

本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:

输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:

每行输出对应矩阵行元素之和。

输入样例:

3 2
6 3
1 -8
3 12

输出样例:

9
-7
15

简单数组:

#include "stdio.h"
#include "windows.h"
/*主函数*/ 
int main()
{int i,j,k,m,n;//printf("please input a intege n: ");scanf("%d%d",&m,&n);// 读取 m n 值  int as[m][n];for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&as[i][j]);for(i=0;i<m;i++){k=0;for(j=0;j<n;j++)k+=as[i][j];printf("%d\n",k);}system("pause");
}

指针及结构化

#include "stdio.h"
#include "windows.h"
/*函数:创建数组矩阵*/
void *create_s(int * p[],int m,int n)
{int i,j;for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&p[i][j]);//读取数组矩阵数值
}
/*函数:计算数组矩阵并输出*/
void out_p(int * p[],int m,int n)
{int i,j,k;for(i=0;i<m;i++){k=0;for(j=0;j<n;j++)//计算k+=p[i][j];printf("%d\n",k);//输出结果}
}
/*主函数*/ 
int main()
{int i,j,k,m,n;//printf("please input a intege n: ");scanf("%d%d",&m,&n);// 读取 m n 值  int as[m][n]; //定义数组int *ps[m];   //定义数组指针for(i=0;i<m;i++) //指针与数组建立对应关系ps[i]=as[i];create_s(ps,m,n);//获取数值out_p(ps,m,n);    //输出结果system("pause");
}

习题7-5 找鞍点 (20 分)

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

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

输出样例1:

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE

待修改

#include "stdio.h"
#include "windows.h"
/*函数:创建数组矩阵*/
void *create_s(int * p[],int m)
{int i,j;for(i=0;i<m;i++)for(j=0;j<m;j++)scanf("%d",&p[i][j]);
}
/*函数:计算数组矩阵并输出*/
void out_p(int * p[],int m)
{int i,j,k,sm,sn,max,min,count=0;for(i=0;i<m;i++){max=p[i][0];sm=0;for(j=1;j<m;j++)//查找每行最大值 记录 列标if(max<p[i][j]){	max=p[i][j];sm=j;}min=max;for(k=0;k<m;k++)//查找 每行最大值所在列的 最小值 记录行标if(min>p[k][sm]) {	min=p[k][sm];sn=k;}if(sn==i) //行标与当前循环行号相同,是鞍点{printf("%d %d\n",i,sm);count++;	//鞍点 计数  }  }if(count==0)	printf("NONE\n");}
/*主函数*/ 
int main()
{int i,j,k,m;//printf("please input a intege n: ");scanf("%d",&m);// 读取 m n 值  int as[m][m];//定义矩阵int *ps[m];//定义指针for(i=0;i<m;i++)//指针与矩阵对应ps[i]=as[i];create_s(ps,m);//获取矩阵数据out_p(ps,m);//输出结果system("pause");
}

习题7-6 统计大写辅音字母 (15 分)

英文辅音字母是除AEIOU以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出字符串中大写辅音字母的个数。

输入样例:

HELLO World!

输出样例:

4

代码中有3中可用情况,(保留最简单部分)

#include "stdio.h"
#include "string.h"
/*输入函数*/
char *input_s(char *ps)
{gets(ps);
}
/*输出函数*/
int output_s(int n)
{printf("%d\n",n);
} 
/*处理函数*/
int count_s(char *ps)
{int i,sum=0;while(*ps!='\0'){if(*ps>='A'&&*ps<='Z')// ?大写字母 {i=*ps-'A'; // ascii 差值 if(i!=0&&i!=4&&i!=8&&i!=14&&i!=20) sum++;}ps++;}return sum;	
} 
/*主函数*/
int main()
{char gs[81],*ps;int result=0;ps=gs;input_s(ps);result=count_s(ps);output_s(result);	
} 
/*其他情况*/ 
/*if(i!=0&&i!=4&&i!=8&&i!=14&&i!=20) sum++;	 等价于下列情况*/
//		switch(i)
//			{
//				case 0:		// A
//				case 4:		// E
//				case 8:		// I	
//				case 14:	// O
//				case 20:	// U 
//					break;
//				default: 	//其他大写字母情况 
//					sum++;	 break;		
//			} 
/*default 等价于下列情况*/ 
//				case 1:
//				case 2: 
//				case 3: 
//				case 5: 
//				case 6: 
//				case 7: 
//				case 9: 
//				case 10:  
//				case 11: 
//				case 12: 
//				case 13: 
//				case 15: 
//				case 16: 
//				case 17: 
//				case 18: 
//				case 19: 
//				case 21: 
//				case 22: 
//				case 23: 
//				case 24: 
//				case 25: 
//					sum++;	 break;	

习题7-7 字符串替换 (15 分)

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母对应字母
AZ
BY
CX
DW
XC
YB
ZA

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出替换完成后的字符串。

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.
#include "stdio.h"
#include "string.h"
/*输入函数*/
char *input_s(char *ps)
{gets(ps);
}
/*输出函数*/
int *output_s(char *ps)
{puts(ps);
} 
/*转换函数*/
int resevor_s(char *ps)
{int i;while(*ps!='\0'){if(*ps>='A'&&*ps<='Z')// ?大写字母 {i=*ps-'A'; // ascii 差值 
/*转换关系为 互相转换的两个大写字母 与 'A' 的差值 之和为 25*/ *ps='A'+25-i;//转换 }ps++;}
} 
/*主函数*/
int main()
{char gs[81],*ps;ps=gs;input_s(ps);resevor_s(ps);output_s(ps);	
}  

习题7-8 字符串转换成十进制整数 (15 分)

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int flag=1;//输出符号 ± 
/*输入函数*/
char *input_s(char *ps)
{while((*ps=getchar())!='#')ps++;
}
/*输出函数*/
int *output_s(char *ps)
{int i; long sum=0;while(*ps!='\0')//逐一取出 转化为 16进制数 {if(*ps>='0'&&*ps<='9')i=*ps-'0';if(*ps>='a'&&*ps<='f')i=*ps-'a'+10;if(*ps>='A'&&*ps<='F')i=*ps-'A'+10;sum=sum*16+i; // 计算10进制结果 ps++;}printf("%ld\n",sum*flag)	;//带符号输出 
} 
/*转换函数*/
char *resevor_s(char *ps,char *pigs)
{int count=0;// '-' 号计数 while(*ps!='\0'){if(*ps=='-') count++;if(*ps>='0'&&*ps<='9'||*ps>='a'&&*ps<='f'||*ps>='A'&&*ps<='F')// ?16进制数 {*pigs=*ps;//符合16进制数 ? 存入pigs   pigs++;}ps++;}if(count>0) flag*=-1;//存在 '-' 则符号转换 
} 
/*主函数*/
int main()
{char gs[81],*ps;char  igs[81],*pigs; ps=gs;pigs=igs;input_s(ps);resevor_s(ps,pigs);output_s(pigs);	
}  

 

 

 

这篇关于浙江大学 PTA 第7部分 选择法排序 求一批整数中出现最多的个位数字 判断上三角矩阵 求矩阵各行元素之和 找鞍点 统计大写辅音字母 字符串替换 字符串转换成十进制整数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/626636

相关文章

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

如何将Tomcat容器替换为Jetty容器

《如何将Tomcat容器替换为Jetty容器》:本文主要介绍如何将Tomcat容器替换为Jetty容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat容器替换为Jetty容器修改Maven依赖配置文件调整(可选)重新构建和运行总结Tomcat容器替

python dict转换成json格式的实现

《pythondict转换成json格式的实现》本文主要介绍了pythondict转换成json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 一开始你变成字典格式data = [ { 'a' : 1, 'b' : 2, 'c编程' : 3,

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa