PTA数组后五道演讲比赛中有10个评委打分(实型数据,十分制分数)一维数组中,然后输入欲删除数x,最后删除数组中值为x的元素并输出,键盘输入一个4×4阶的矩阵,编程输出它的转置矩阵。

First

演讲比赛中有10个评委打分(实型数据,十分制分数),求某个选手最终得分(去掉一个最高分和一个最低分后,其余分数的平均值)。
输入格式:
数据之间用空格隔开。
输出格式:
保留2位小数输出。(注意输出格式
注意点:
1.题目给的数就是浮点数,所以数组类型别搞错 double精度高一些
2. 数值初始化,比如sum=0等,避免影响
3. 因为max必定大于0,所以开始max=0也是可以的,min=0就不可以了,毕竟最小数不确定是不是0
4. 别的就没啥了,自己思路没错就OK ,别再计数都搞错了。。。。。。

#include <stdio.h>
int main()
{
    int i;
    double max=0,min,a[10]={0},avg,sum=0;   
    for(i=0;i<10;i++)
    {
        scanf("%lf",&a[i]);
        sum=sum+a[i];
        if(a[i]>max)
        {
            max=a[i];
        }
        if(i==0)
        {
            min=a[i];
        }
        else if(a[i]<min)
        {
            min=a[i];
        }
    }
    avg=(sum-max-min)/8;
    printf("%.2lf",avg);
    return 0;
}

Second

已知一个按升序排序的一维数组int a[11]={2,5,7,10,17,24,30,38,44,50},编程实现输入一个整数,并按原来排序的规律将它插入到数组中,最后输出数组中所有元素。
输入格式:
输入待插入的整数
输出格式:
每个数据后面跟一个空格(这里需要注意最后为——printf("%d ",a[i]);
注意点
1.因为需要插入,所以就需要有一个数组元素的移动,这里采用的是从最后开始移动。
2.双层循环这个地方还是挺好的,能够减少一些运算量
3.感觉还是背一下这个思路吧

#include <stdio.h>
int main()
{
     int a[11]={2,5,7,10,17,24,30,38,44,50};
     int n,k,j,t,i;
     scanf("%d",&n);
     a[10]=n;
    for(i=0;i<10;i++)
    {
        for (j=0;j<10-i;j++)
            if (a[j]>a[j+1])
            {
                  t=a[j];
                  a[j]=a[j+1];
                  a[j+1]=t;
            }
    }
     for(i=0;i<11;i++)
     {
       printf("%d ",a[i]);
     }

     return 0;
}

Third

输入10个不重复的整数存放在一维数组中,然后输入欲删除数x,最后删除数组中值为x的元素并输出,若数组中没有值为x的元素则显示“Not exist!”。
输入格式:
两行数据; 第一行输入任意10个不重复的整数,每个数之间用空格隔开; 第二行输入待删除整数
输出格式:
每个数后面跟一个空格;若无欲删除数,输出 Not exist!

注意点:
1.这个是用了两个数组做的,emmm,用两个确实比较方便。删除那个步骤不用费脑筋,直接覆盖掉就OK了。
2.通过一个C的值来判断是否有那个元素,没有的话直接输出Not exist!就OK了

#include <stdio.h>
int  main()
{
     int a[10],b[9],n,k,i,c=0;
     for(i=0;i<10;i++)
     {
         scanf("%d",&a[i]);
     }
     scanf("%d",&n);
     for(i=0;i<10;i++)
   {
     if(n==a[i])
      {k=i; c++;}      
   }
   if(c==1)
   {
     for(i=0;i<9;i++)
    {
        if(i<k)
            b[i]=a[i];
        else
            b[i]=a[i+1];
    }
    for(i=0;i<9;i++)
        printf("%d ",b[i]);
   }
   else
       printf("Not exist!");
return 0;
}

Fourth

键盘输入一个4×4阶的矩阵,编程输出它的转置矩阵。
输入格式:
矩阵格式输入,同行数据之间用空格隔开
输出格式:
矩阵格式输出,同行每个数据后跟一个空格,最后一行数据后面不输出换行符’\n’

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

Fifth

从键盘输入3行4列整型二维数组a的各元素值,然后找出数组a中各行的最大值并依次存放到一维数组b中,最后按升序输出数组b的各元素。
(每行找个最大的,然后把最大的放在一个数组中(升序输出)呗)
输入格式:
矩阵格式输入,每行数据之间用空格隔开。
输出格式:
每个数据后面跟一个空格
1.就是m[i]——这个一维数组的基础可能会导致难理解吧,这个在取每行最大值的时候
2.题目还有一个升序输出数组b,这个还需要一次排序。
3.最后排序用的冒泡法

#include <stdio.h>
int main()
{
   int a[3][4],i,j,max[3],t;
	for(i=0;i<3;i++)
	{
	    for(j=0;j<4;j++)
			scanf("%d",&a[i][j]);
  }
    for(i=0;i<3;i++)
	{
	    max[i]=a[i][0];
      for(j=0;j<4;j++)
				{
							if(a[i][j]>=max[i])
       				max[i]=a[i][j];
    		}
	    
  }
    for (i=0;i<3;i++)
      {
            for(j=0;j<2-i;j++)
            if (max[j]>max[j+1])
            {
                  t=max[j];
                  max[j]=max[j+1];
                  max[j+1]=t;
            }
      }
      for(i=0;i<3;i++)
          printf("%d ",max[i]);
	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值