本文最后更新于:1 年前
实验室第二次讲课 #47. 时间转换 说明 给定一个以秒为单位的时间t,要求用的格式来表示这个时间。<H>
表示时间,<M>
表示分钟,而表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“”;若t=3661,则输出“”。
输入格式 输入只有一行,是一个整数t(0<=t<=86399)。
输出格式 输出只有一行,是以“”的格式所表示的时间,不包括引号。
样例 输入数据 1
输出数据 1
1 2 3 4 5 6 7 8 9 10 #include <stdio.h> int main (void ) { int t; scanf ("%d" ,&t); int hh,mm,tt; tt=t%60 ; mm=((t-tt)%3600 )/60 ; hh=t/3600 ; printf ("%d:%d:%d" ,hh,mm,tt); }
#18. ABC比大小 说明 这道题很简单,输入三个数字,只需按照他们的大小排好序就行。
输入格式
第一行随机输入三个整数ABC(0<=A,B,C<=10000)
输出格式
将A,B,C按照从小到大的顺序输出即可每个数字直接用空格隔开。
样例 输入数据 1
输出数据 1
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 #include <stdio.h> int main () { int A, B, C; scanf ("%d %d %d" ,&A,&B,&C); if (A < B) { if (B < C) { printf ("%d %d %d" , A, B, C); } else { if (A < C) { printf ("%d %d %d" , A, C, B); } else { printf ("%d %d %d" , C, A, B); } } } else { if (C < B) { printf ("%d %d %d" , C, B, A); } else { if (A < C) { printf ("%d %d %d" , B, A, C); } else { printf ("%d %d %d" , B, C, A); } } } return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> int main (void ) { int a[4 ]; for (int i=0 ;i<3 ;i++){ scanf ("%d" ,a[i]); } for (int i=0 ;i<3 ;i++){ for (int j=0 ;j<3 -i-1 ;j++){ if (a[j]>a[j+1 ]){ int temp=a[j]; a[j]=a[j+1 ]; a[j+1 ]=temp; } } } for (int i=0 ;i<3 ;i++){ if (i<2 )printf ("%d " ,a[i]); else printf ("%d" ,a[i]); } }
#24. 求平均分 说明 求平均分和最高分最低分,一直是老师的一份简单而又头疼的工作,数量多,容易算错,现在我们编写一个程序来帮助老师求平均分、最高分和最低分吧。
输入格式 输入N个学生(1<=N <=10000),以下N行输入N个学生的成绩,成绩含有整数和小数。
输出格式 第一行输出最低分和最高分,最低分最高分之间用一个空格隔开,若成绩为小数则向上取整,例如89.4输出90,
第二行输出平均分。
注意,平均成绩保留两位小数哦。
样例 输入数据 1
Copy
输出数据 1
Copy
提示 测试点1:
Copy
测试点2:
Copy
测试点3:
1 2 3 4 5 6 7 8 9 100 7 49 73 58 30 72 44 78 23 9 40 65 92 42 87 3 27 29 40.5 12 3 69 9 57 60 33 99 78 16 35 97 26 12 67 10 33 79 49 79 21 67 72 93 36 85 45 28 91 94 57 1 53.5 8 44 68.5 90.5 24 96 30 3 22 66.5 49 24 1 53 77 8 28 33 98 81 35.5 13 65 14 63 36 25 69 15 94 29 1 17 95 5 4 51 98 88.5 23 5 82 52 66 16 37 38 44 测试点3答案为 1 99 46.21
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 #include <stdio.h> #include <math.h> int main () { int n,i; float score,max,min,sum,average; scanf ("%d" ,&n); for (i=1 ;i<=n;i++){ scanf ("%f" ,&score); if (i==1 ){ max=score; min=score; sum=score; }else { sum+=score; if (score>max){ max=score; }else if (score<min){ min=score; } } } average=sum/n; printf ("%.0f %.0f\n%.2f" ,ceil (min),ceil (max),average); return 0 ; }
#26. 能被7和11整除的数字 说明 有一种神奇的数字,我们暂且叫它“7数”吧,它能被7或者11整除或者同时被它俩整除,让我们找出这些数字。
输入格式 输入一个数字N(1<=N<=10000),找出不比它大的所有“7数”。若没有这个数,则输出-1。
输出格式 输出所有“7数”,每个“7数”之间用空格隔开,末尾不能有多余的空格。
样例 输入数据 1
Copy
输出数据 1 1 7 11 14 21 22 28 33 35 42 44 49 55 56
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> int main () { int i; int a; scanf ("%d" ,&a); if (a<7 ){ printf ("%d" ,-1 ); }else { for (i = 1 ; i <= a; ++i){ if (i%7 == 0 || i%11 == 0 ){ printf ("%d " ,i); } } } return 0 ; }
#29. 数字的判断 说明 给出一个不多于5位数的整数,要求
求出它是几位数
分别输出每一位数字
按逆序输出各位数字,例如原数为321,应输出123
输入格式 一个不大于5位的数字N(1<=N<=99999)
输出格式 输出一共分三行
第一行 位数
第二行 用空格分开的每个数字,注意最后一个数字后没有空格
第三行 按逆序输出这个数
样例 输入数据 1
Copy
输出数据 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> #include <string.h> int main () { char a[10 ]="\0" ; gets(a); printf ("%d\n" , strlen (a)); for (int i = 0 ; i < strlen (a)-1 ; i++) { printf ("%c " , a[i]); } printf ("%c\n" ,a[strlen (a)-1 ]); for (int i = strlen (a) - 1 ; i >= 0 ; i--) { printf ("%c" , a[i]); } }
根据以上算法思想,大家思考一下以下题目 4. digit 函数 #28. 超级三角形 说明 超级三角形,让我按照自己喜欢的样式来打印漂亮的三角形吧,这个三角形是等腰三角形,而且团可以定制哦。
输入格式 输入一个 n(1<=n<=15) 和一个 图案c 。
输出格式 第一行1个图案c
第二行3个图案c
按照规则输出三角形!
样例 输入数据 1
Copy
输出数据 1 1 2 3 4 5 a aaa aaaaa aaaaaaa aaaaaaaaa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> int main () { int i, n, j = 1 , a = 1 , c; char t; scanf ("%d %c" , &n,&t); c = n; for (i = 1 ; i <= n; i++) { while (a <= c - 1 ) { printf (" " ); a++; } c--; j = 1 ; while (j <= (2 * i) - 1 ) { printf ("%c" ,t); j++; } a = 1 ; printf ("\n" ); } return 0 ; }
#34. 能生的小兔子 说明 十九世纪七十年代,有人从外地带来了一对兔子到澳大利亚。兔子瞬间患难成灾。这些小兔子每3个月就会生一对小兔子,往后的每个月都会生一对小兔子。在理想的情况下(兔子不死)。我们来算算在第N个月后澳大利亚会有多少对兔子。
输入格式 输入月份N(1<=N<=50)
输出格式 输出每个月兔子的对数,中间用空格隔开。不用考虑末尾的空格。
样例 输入数据 1
Copy
输出数据 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main () { int n; long long a[50 ]={1 }; scanf ("%d" ,&n); a[0 ]=1 ,a[1 ]=1 ; for (int i=2 ;i<n;i++){ a[i]=a[i-1 ]+a[i-2 ]; } for (int i=0 ;i<n;i++){ printf ("%lld " , a[i]); } return 0 ; }
#46. 找众数 背景 由于菜菜子比较菜,所以出了一道很菜很菜的题目。
描述 菜菜子拥有一个由正整数组成的序列,需要你从中找出众数(众数是在一组数据中,出现次数最多的数据)
输入 第一行给定一个正整数nn , 满足 3\leq n\leq 10003≤n ≤1000 . 第二行输入由nn 个正整数组成的序列。序列里的数xx 满足0\leq x\leq 1000000≤x ≤100000
输出 输出序列中的众数x_{mode}xm od e 和该数出现的次数count\left(x_{mode}\right)cou n**t (xm od e ),如果由多个相同数量的众数则输出最大的众数(显然必定唯一)。
输入数据 1
Copy
输出数据 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> int a[100005 ]={0 };int main () { int pos=0 ; int n; scanf ("%d" ,&n); while (n--){ int aa; scanf ("%d" ,&aa); a[aa]++; } for (int i=1 ;i<=100000 ;++i){ if (a[pos]<=a[i])pos=i; } printf ("%d %d" ,pos,a[pos]); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <bits/stdc++.h> using namespace std;int main (void ) { map<int ,int >a; int n; cin>>n; int m; for (int i=0 ;i<n;i++){ cin>>m; a[m]++; } int maxv=-1 ; int p=0 ; map<int , int >::iterator iter; iter=a.begin (); while (iter!=a.end ()){ maxv=max (iter->second,maxv); if (maxv==iter->second)p=iter->first; iter++; } cout<<p<<' ' <<maxv; }
根据以上算法思想,大家思考一下以下题目 #40. 集合