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小时内删除。
发表评论