PTA c#PTA函数数组练习答案【程序设计基础】

目录

7-1 矩阵运算

7-2 统计一行文本的单词个数

7-3 螺旋方阵

7-4 删除重复字符

7-5 统计字符出现次数

7-6 谷歌的招聘

7-7 凯撒密码


7-1 矩阵运算

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

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

输出样例:

35
#include 
#include 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int n,i,j,sum;
	sum=0;
	int a[10][10];
	scanf("%d",&n);
	for(i=0;i

 

7-2 统计一行文本的单词个数

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5
#include 
#include 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int n,len,i;
	char str[10000],ch;
	gets(str);
	len=strlen(str);
	if(str[0]==' ')n=0;
	else n=1;
	for(i=0;i

 

7-3 螺旋方阵

所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。

输入格式:

输入在一行中给出一个正整数N(<10)。

输出格式:

输出N×N的螺旋方阵。每行N个数字,每个数字占3位。

输入样例:

5

输出样例:

  1  2  3  4  5
 16 17 18 19  6
 15 24 25 20  7
 14 23 22 21  8
 13 12 11 10  9
#include
int main(){
    int n,i=0,j,c=0;
    scanf("%d",&n);
    int k=0,l=n-1;     
    int a[n][n];
    while(k<=l){       
        for( j=k ;j<=l;j++) a[k][j]=++c;
        for(i=k+1;i<=l;i++) a[i][l]=++c;
        for(j=l-1;j>=k;j--) a[l][j]=++c;
        for(i=l-1;i>k ;i--) a[i][k]=++c;
        k++;l--;
    }
    
    for(i=0;i

 

7-4 删除重复字符

本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

输入格式:

输入是一个以回车结束的非空字符串(少于80个字符)。

输出格式:

输出去重排序后的结果字符串。

输入样例:

ad2f3adjfeainzzzv

输出样例:

23adefijnvz
#include 
#include 
#define MAX 81
int main(){
    char str[MAX], temp;
    int i, j, len, minPos;
    gets(str);
    len = strlen(str);
    for(i=0; i

 

7-5 统计字符出现次数

本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。

输入格式:

输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。

输出格式:

在一行中输出给定字符在给定字符串中出现的次数。

输入样例:

programming is More fun!
m

输出样例:

2
#include
int main(){
    char str[80],ch,a;
    int i=0,n=0,len;
    gets(str);
	len=strlen(str);
    scanf("%c",&a);
    for(i=0;i

 

7-6 谷歌的招聘

2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。

PTA c#PTA函数数组练习答案【程序设计基础】_第1张图片

自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921... 其中粗体标出的 10 位数就是答案。

本题要求你编程解决一个更通用的问题:从任一给定的长度为 L 的数字中,找出最早出现的 K 位连续数字所组成的素数。

输入格式:

输入在第一行给出 2 个正整数,分别是 L(不超过 1000 的正整数,为数字长度)和 K(小于 10 的正整数)。接下来一行给出一个长度为 L 的正整数 N。

输出格式:

在一行中输出 N 中最早出现的 K 位连续数字所组成的素数。如果这样的素数不存在,则输出 404。注意,原始数字中的前导零也计算在位数之内。例如在 200236 中找 4 位素数,0023 算是解;但第一位 2 不能被当成 0002 输出,因为在原始数字中不存在这个 2 的前导零。

输入样例 1:

20 5
23654987725541023819

输出样例 1:

49877

输入样例 2:

10 3
2468001680

输出样例 2:

404
#include 
#include 
int isPrime(int n)
{
 int i;
 if(n < 2) return 0;
 if(n == 2) return 1;
 if(n%2 == 0)return 0;
 for(i=3; i*i<=n; i++)
  if(n%i == 0)
   return 0;
 return 1;
}

int main()
{
 int l,k,i;
 long num=0;
 char s[1001]="",res[10]="";
 scanf("%d%d%s",&l,&k,s);
 for(i=0; i<=l-k; i++)
 {
  strncpy(res,s+i,k);
  sscanf(res,"%ld",&num);
  if(isPrime(num))
  {
   puts(res);
   return 0;
  }
 }
 puts("404");
 return 0;
}

 

7-7 凯撒密码

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。

输入格式:

输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。

输出格式:

输出加密后的结果字符串。

输入样例1:

Hello Hangzhou
2

输出样例1:

Jgnnq Jcpibjqw

输入样例2:

a=x+y
-1

输出样例2:

z=w+x
#include
#include
int main(void)
{
 char str[80];
 int i,len,offset;
 gets(str),len=strlen(str);
 scanf("%d",&offset),offset=offset%26;
 for(i=0;i

你可能感兴趣的:(蓝桥杯,c语言,c#)