[PTA] 第七章 题解

本文介绍了多个编程练习,涵盖了选择法排序、求最大值及其下标、数组逆序、寻找数组共有的元素、鞍点查找、统计大写辅音字母、字符串替换、字符串转十进制、计算天数和查找指定字符。每个练习都提供了代码示例,涉及字符串处理、数组操作和逻辑判断等编程基础知识。
摘要由CSDN通过智能技术生成




习题7-1 选择法排序


1)题目描述


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

输入格式:

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

输出格式:

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

输入样例:

4
5 1 7 6

输出样例:

7 6 5 1



2) 代码示例

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



练习7-2 求最大值及其下标


1) 题目描述


本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:

在一行中输出最大值及最大值的最小下标,中间用一个空格分开。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

6
2 8 10 1 9 10

输出样例:

10 2

2)代码示例

#include<stdio.h>
int main()
{
	int n,i,b;
	int a[10];

	b = 0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i = 1;i<n;i++)
    {
        if(a[i]>a[b])
        b = i;

    }
   printf("%d %d",a[b],b);
	return 0;
}




练习7-3 将数组中的数逆序存放


1)题目描述


本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:

在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

4
10 8 1 2

输出样例:

2 1 8 10


2) 代码示例

#include<stdio.h>
int main ()
{
  int i,n;
  int a[10];

  scanf("%d",&n);
  for(i = 0;i<n;i++)
  {
    scanf("%d",&a[i]);
  }
  for(i = n-1;i>0;i--)
  {
    printf("%d ",a[i]);
  }
  printf("%d",a[0]);
  return 0;
}




练习7-4 找出不是两个数组共有的元素


1)题目描述


给定两个整型数组,本题要求找出不是两者共有的元素。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:

在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1

输出样例:

3 5 -15 6 4 1


2) 代码示例

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



习题7-5 找鞍点


1)题目描述


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

本题要求编写程序,求一个给定的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) 代码示例

#include<stdio.h>
int main(){
	int n,i,j;
	scanf("%d",&n);
	int a[n][n];
	int max[n],min[n];
	for(i=0;i<n;i++){
		max[i]=0;
		min[i]=9999;
	}
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			scanf("%d",&a[i][j]);
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(j==0)max[i]=a[i][j];
			if(max[i]<a[i][j]){
				max[i]=a[i][j];
			}
		}
		for(j=0;j<n;j++){
			if(min[i]>a[j][i]){
				min[i]=a[j][i];
			}
		}
	}

	int flag=0;
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(max[i]==min[j]){
				printf("%d %d\n",i,j);
				flag++;
			}
		}
	}
	if(flag==0){
		printf("NONE");
	}
}



习题7-6 统计大写辅音字母


1)题目描述


英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

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

输出格式:

输出在一行中给出字符串中大写辅音字母的个数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

HELLO World!

输出样例:

4


2) 代码示例

#include <stdio.h>  
int main()  
{
	char a[80];
	int d,i,j,k;
	i=0;
	while((d=getchar())!='\n'){
		a[i]=(char)d;
		i++;
	}
	a[i]='\0';
	k=0;
	for(j=0;j<i;j++){
		if(a[j]>='A'&&a[j]<='Z'&&a[j]!='A'&&a[j]!='E'&&a[j]!='I'&&a[j]!='O'&&a[j]!='U'){
			k++;	
		}
	}
	printf("%d",k);
	
    return 0;  
  
} 



习题7-7 字符串替换


1)题目描述


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

原字母 对应字母
A              Z
B              Y
C              X
D              W
X              C
Y              B
Z              A

输入格式:

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

输出格式:

输出在一行中给出替换完成后的字符串。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.


2) 代码示例

#include <stdio.h>
int main()
{ 
   int hr,s,n=5,h,c=0;
   char ch;
  
   while((ch=getchar())!='\n')
   {
   	  if(ch>='A'&&ch<='Z')
   	  ch=155-ch;
   	  printf("%c",ch);
   }
   return  0;
}



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


1)题目描述


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

输入格式:

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

输出格式:

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

输入样例:

±P-xf4±1!#

输出样例:

-3905


2) 代码示例

#include <stdio.h>
int main()
{
	char s[80],str[80],i;
	int k=0,m=0;
	int flag=1,mark;
	int num=0;
	while((s[k]=getchar())!='#')
	k++;
	s[k]='\0';
	for( i=0;s[i]!='\0';i++)
	if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='f')||(s[i]>='A'&&s[i]<='F'))
		{ 
			mark=i;
			break;
		}
	for(i=0;i<mark;i++)
	if(s[i]=='-')
	{  
		flag=0;
		break;	
	}
	for(i=0;s[i]!='\0';i++) 
		if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='f')||(s[i]>='A'&&s[i]<='F'))
		{
			str[m]=s[i];
			m++;
		}
	str[m]='\0';
	for(i=0;str[i]!='\0';i++) 
	{
		if(str[i]>='0'&&str[i]<='9')
		num=num*16+str[i]-'0';
		else if(str[i]>='a'&&str[i]<='f')
		num=num*16+str[i]-'a'+10;
		else if(str[i]>='A'&&str[i]<='F')
		num=num*16+str[i]-'A'+10;
	}
	if(flag==0)
	num=-num;
	printf("%d",num);

	return 0;
}




练习7-9 计算天数


1)题目描述


本题要求编写程序计算某年某月某日是该年中的第几天。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:

在一行输出日期是该年中的第几天。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62


2) 代码示例

#include <stdio.h>
int main()
{
	int i,year,month,day,n=0;
	int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	scanf("%d/%d/%d",&year,&month,&day);
	if((year%4==0&&year%100)||year%400==0)
		a[2]=29;
	for(i=0;i<=month-1;i++)
		n+=a[i];
	printf("%d",n+day);
	return 0;
}




练习7-10 查找指定字符


1)题目描述


本题要求编写程序,从给定字符串中查找某指定的字符。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:

如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

m
programming

输出样例:

index = 7


2) 代码示例

#include <stdio.h>
int main()
{
	char a[80],ch,enter;
	int i,index=-1;
	ch=getchar();
	enter=getchar(); 
	gets(a);
	for(i=0;a[i]!='\0';i++)
		if(a[i]==ch)
			index=i;
	 if(index>=0)
	 {
	 	printf("index = %d",index);
	 }else{
		 printf("Not Found");
	 }
	return 0;
}



练习7-11 字符串逆序


1)题目描述


输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出格式:

在一行中输出逆序后的字符串。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入样例:

Hello World!

输出样例:

!dlroW olleH


2) 代码示例

#include<stdio.h>
int main ()
{
	int i, j=0;
	char up [80];
	while ((up [i]=getchar( ))!='\n')
		i++;
	    up [i] ='\0';
	for (j=i-1;j>=0;j--)
		printf ("%c",up [j]);
	return 0;		
 }



后续

PTA系列不断更新,建议关注追更,其他章节内容详细可见 PTA基础题解总帖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湫喃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值