PTA第六章指针 把输入数插入有n个数的升序整型数组a 中 从键盘输入10个整数存入一维数组,输出数组中最大值元素统计数组中偶数个数逆序输出输入的数组元素。 输入一个m行n列矩阵,输出矩阵中每行最大值

指针如果玩不明白就可以不用指针,毕竟学的还不深,依赖程度不大,而且指针玩明白并不简单,有的题目用不熟悉的指针做可能会直接挂。。。。。。(但考基础的时候可能会考指针)很多时候不是不会指针,只是单纯的想偷懒

个人感觉这位兄弟写的关于指针的解释比较易懂、比较好,所以想分享一下,有需要的朋友可以去看一下
本文为CSDN博主「挠头狒狒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:点击这里跳转
或者手动后面的网址:https://blog.csdn.net/qq_45830608/article/details/105915374

1.本题目要求从键盘读入1个整数,把它插入到已有n个数的升序整型数组a 中。

输入格式:
输入要求:
在第1行输入已有有序数个数n;
在第2行依次升序输入n个整数,数据之间以空格间隔;(限定n<100);
在第3行输入要插入新数w;
输出格式:
输出要求: 升序输出已经插入新数的数组元素中间以空格间隔

#include 
int main()
{
    int n,m,i,j,t;
    scanf("%d",&n);
    int a[n+1];
    for(i=0;i<n;i++)
      {
          scanf("%d",&a[i]);
      }
     scanf("%d",&m);
     a[n]=m;                        //将m赋值给数组空余的a[n]
     for(i=0;i<=n;i++)              //排序阶段了,外层循环
       {
           for(j=0;j<n-i;j++)
             {
                 if(a[j]>a[j+1])
                   {
                     t=a[j];a[j]=a[j+1];a[j+1]=t;
                   }
             }
       } 
      for(i=0;i<=n;i++) 
      {
          printf("%d ",a[i]);
      } 
    return 0;
}

2.本题目要求: 从键盘输入10个整数存入一维数组a中,输出数组中最大值元素。

输入格式:
输入要求:输入10个整数
输出格式:
输出要求:输出最大元素

#include 
int main()
{
    int a[10],i,*p,max;
    p=a;
    for(i=0;i<10;i++)
      {
          scanf("%d",p+i);
          if(i==0)
                            max=*(p+i);
          else if(*(p+i)>max)
                            max=*(p+i);
      }
     printf("%d",max);
     return 0;
}

3.本题目要求: 从键盘输入10个正整数存入一维数组a中,统计数组元素中偶数个数

输入格式:
输入要求: 输入10个数,数据之间用空格间隔。
输出格式:
输出偶数个数

#include 
int main()
{
    int a[10],i,*p,n=0;
    p=a;
    for(i=0;i<10;i++)
      {
          scanf("%d",p+i);
          if(*(p+i)%2==0)
            n++;
      }
      printf("%d",n);
      return 0;
}

4.本题目要求: 从键盘输入n个整数存入一维数组a中,逆序输出输入的数组元素。限制 :数组长度小于100。

输入格式:
输入要求
在第1行输入要存入数组a的元素个数n;
在第2行依次输入n个整数,数据之间以空格间隔;
输出格式:
输出要求:输出数据之间以空格间隔;

#include 
int main()
{
    int i,*p,n;
    scanf("%d",&n);
    int a[n];
    p=a;
    for(i=0;i<n;i++)
          scanf("%d",p+i);
    for(i=0;i<n;i++)
          printf("%d ",a[n-1-i]);
     return 0;
}

5.如果一个数正着读和逆着读都一样,这样的数就是回文数。

输入一个五位数,判断是否是“回文数”。
如果符合要求就输出判断“是”,如果不符合要求就输出判断“不是”。
输入格式:
输入一个五位数
输出格式:
输出判断结果:如果符合要求就输出判断“是”,如果不符合要求就输出判断“不是”。
第一个就是单独取各个数,然后比较位数(因为这是指定的五位数,所以…算是钻空子,,,,,,)
这个题目用数组真的是自己给自己添麻烦
第二个就是逆序数出这个数,然后将这个数与原数进行比较,用的无限循环while(1)。用break;跳出的

#include 
int main()
{
    int x,a,b,c,d,e;
    scanf("%d",&x);
    a=x/10000;
    b=x/1000%10;
    c=x/100%10;
    d=x/10%10;
    e=x%10;
    if(a==e&&b==d)
      {
          printf("是");
      }
    else
      {
          printf("不是");
      }
      return 0;
}
#include
int main()
{
    int num,sum,t,zero;
    sum=0;
    scanf("%d",&num);
    zero=num;
    while(1)
    {
        t=num%10;
        sum=sum*10+t;
        num=num/10;
        if(num==0)
        break;
    }
    if(zero==sum)
          printf("是");
    else
          printf("不是");
      return 0;
}

6.题目要求: 输入一个m行n列矩阵,输出矩阵中每行最大值。

输入格式:
输入格式:
在第1行输入矩阵m行n列,数据以空格隔开;
从在第2行开始连续输入m行,每行输入n个整数,数据以空格隔开;
输出格式:
输出格式:
输出m个数,分别是每行最大数,每个数值后跟一个空格。
做法不唯一的,我是新建一个数组,然后将每行进行比较,最大的那个数就放到这个新数组中,最后直接输出这个新数组。

#include 
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    int a[m][n];
	int i,j;
    int max[m],t;
	for (i=0;i<m;i++)
	    for (j=0;j<n;j++)
			scanf("%d",&a[i][j]);
    for (i=0;i<m;i++)
	{
	    max[i]=a[i][0];
	    for (j=0;j<n;j++)
			if(a[i][j]>=max[i])
                max[i]=a[i][j];
    }
    for(i=0;i<m;i++)
        printf("%d ",max[i]);
    return 0;
}

你可能感兴趣的:(PTA第六章指针 把输入数插入有n个数的升序整型数组a 中 从键盘输入10个整数存入一维数组,输出数组中最大值元素统计数组中偶数个数逆序输出输入的数组元素。 输入一个m行n列矩阵,输出矩阵中每行最大值)