浙江大学 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

相关文章

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添