PTA 从键盘输⼊n 个整数,求出这n 个数的平均值及其中的最⼤数和最⼩数。从
键盘输⼊⼀个正整数。。。
题⽬⼀
从键盘输⼊n(3<=n<=20)个整数,求出这n个数的平均值及其中的最⼤数和最⼩数。
输⼊格式:
在第⼀⾏输⼊⼀个介于3⾄20之间的整数n,在第⼆⾏输⼊n个整数,中间⽤⼀个空格分隔数据。
输出格式:依次输出平均值(保留2位⼩数),最⼤值,最⼩值,中间⽤逗号,分隔,最后换⾏。保留两位⼩数这个地⽅,emmm,明显的需要浮点数对吧最⼤值⼀定不为0对吧,所以开始的时候可以将最⼤值赋值为0,最⼩值就不能这么做了,因为不确定。
感觉审题不认真挺吃亏的。
答案⼀(没有⽤数组)
答案⼆(⽤的数组,这个答案不是我写的。。。。。。这个题的要求没啥必要⽤数组,⽽且这个答案也
不完美。。。学过的第⼀眼就看出来数组长度有问题,如果数多的话这个根本就不适⽤了,有时间⼤家可以改着玩玩,wo xian liu le !改别⼈的代码太费劲了)#include <stdio.h>int  main (){    int  n ,i ,a ,sum ,max ,min ;    float  ave ;    scanf ("%d",&n );    sum =max =i =0;    while (i <n )    {        scanf ("%d",&a );        sum =sum +a ;        if (max <a )        max =a ;        if (i ==0)        min =a ;        if (min >a )        min =a ;        i ++;          }    /*可以替换为    for(i=0;i<n;i++)    {    scanf("%d",&a);        sum=sum+a;        if(max<a)        max=a;        if(i==0)        min=a;        if(min>a)        min=a;    }*/    ave =sum *1.0/n ;    printf ("%.2f,%d,%d\n",ave ,max ,min );    return  0;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
题⽬⼆(这个题⽬我没做出来。。。。。。。。)
从键盘输⼊⼀个正整数(不超过9位,即最多9位),要求编程实现以下功能:
① 求出这个数是⼏位数,并输出其位数;
② 输出这个数的。
输⼊格式:
输⼊⼀个正整数(不超过9位,即最多9位)。
输出格式:输出刚刚输⼊的正整数,包含的位数及其逆序数,中间⽤英⽂逗号分隔开,最后换⾏。
⾃⼰的错误的。。。。。int  main (){ int  i ,j , t , n ; float  sum = 0.00; int  a [1000]; scanf ("%d", &n ); for  (i = 0; i < n ; i ++) {  scanf ("%d",&a [i ]);  sum = sum + a [i ]; } for  (i = 0; i < n -1;i ++)  for  (j = i + 1; j < n ;j ++)  if  (a [i ] > a [j ])  {    t = a [i ];    a [i ] = a [j ];    a [j ] = t ;  } printf ("%.2f,%d,%d\n", sum /n ,a [n -1], a [0]); return  0;}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
⽤pow函数报错。这是个死胡同,我⾛不出来了,希望⼤家指点我⼀下!(抱拳)
下⾯这个是改正以后的,没有⽤pow函数。⾥⾯的while可以⽤for替换,为了容易看,我就不换了。
答案⼀#include <math.h>int  main (){    int  a ,b ,c ,d ,e ,f ,m ;    int  k ;    a =c =d =0;    scanf ("%d",&k );    a =k ;    b =0;    while (k !=0)      //也是为了退出循环,这⾥k 会变化  所以上⼀句我把k 存到a ⾥⾯了    {        k =k /10;        b ++;      //这个就是我打算求位数的计数器b    }    e =1;    while (e <=b )    {        f =a %10;        a =a /10;        c =f *pow (10,(b -e ))+c ;    //个⼈感觉是这个出了问题,但是才疏学浅搞不懂        e ++;    }    printf ("%d,%d,%d",a ,b ,c );    return  0;}//我⾃⼰的错误代码  希望⼤家能够帮忙错误。我跑的时候就直接int main()这⾥就error 了  //我不太清楚原理,⼤⽜看到的话帮帮我
2
3
4
5
6
scanf输入整型数组
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
答案⼆(更简单⼀些,判断数位拿到下⾯顺便做了,就不需要像答案⼀单独判断了。)
答案三(⽤的数组做的)#include <stdio.h>int  main (){    int  a ,b ,c ,d ,e ,f ,m ;    int  k ;    a =c =d =b =0;    scanf ("%d",&k );    a =k ;    m =a ;    while (k !=0)    {        k =k /10;        b ++;    }    e =0;    while (e <b )    {        c =c *10+a %10;        a =a /10;        e ++;    }    printf ("%d,%d,%d",m ,b ,c );    return  0;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#include  <stdio.h>int  main (){    int  x , a ,c =0,b =0;    //这边b 不置零的话会有随机数的影响,可能会出现位数不对的情况    scanf ("%d",&x );    a =x ;    while (x !=0)    //判断条件,保证能够顺利退出    {        c =c *10+x %10;        x =x /10;        b ++;    //不管正反  这个数的位数始终都是不变的对吧 所以位置在哪都⾏    }    printf ("%d,%d,%d",a ,b ,c );    return  0;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>int  main (){    long  a ,n =0,b [10],i ;    scanf ("%ld",&a );    printf ("%ld,",a );    while (a >0)    {        b [n ]=a %10;        a =a /10;            n ++;    }    printf ("%d\,",n );    for (i =0;i <n ;i ++)    printf ("%d",b [i ]);    return  0;}1234567891011121314151617

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。