当前位置:   article > 正文

衡水学院新人真题百练2022(41-60)_判断正整数的各位数字是否按从小到大排列 分数 3 作者 颜晖 单位 浙大城市学院 输

判断正整数的各位数字是否按从小到大排列 分数 3 作者 颜晖 单位 浙大城市学院 输

41 统计学生成绩

分数 10

作者 陈建海单位 浙江大学

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

  • 大于等于90分为A;

  • 小于90且大于等于80为B;

  • 小于80且大于等于70为C;

  • 小于70且大于等于60为D;

  • 小于60为E。

输入格式:

输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出格式:

在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:

  1. 7
  2. 77 54 92 73 60 65 69

输出样例:

1 0 2 3 1
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n, N, m, a=0, b=0, c=0, d=0, e=0;
  5. scanf("%d",&N);
  6. for(n=0;n<N;n++){
  7. scanf("%d",&m);
  8. if(m>=90)
  9. a++;
  10. if(m>=80&&m<90)
  11. b++;
  12. if(m>=70&&m<80)
  13. c++;
  14. if(m>=60&&m<70)
  15. d++;
  16. if(m<60&&m>=0)
  17. e++;
  18. }
  19. printf("%d %d %d %d %d",a,b,c,d,e);
  20. return 0;
  21. }

42 韩信点兵

分数 10

作者 颜晖单位 浙大城市学院

在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

  • 按从1至5报数,记下最末一个士兵报的数为1;

  • 再按从1至6报数,记下最末一个士兵报的数为5;

  • 再按从1至7报数,记下最末一个士兵报的数为4;

  • 最后按从1至11报数,最末一个士兵报的数为10;

请编写程序计算韩信至少有多少兵。

输入格式:

本题无输入

输出格式:

输出韩信至少拥有的士兵人数。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a;
  5. for(a=1;;a++)
  6. {
  7. if(a%5==1&&a%6==5&&a%7==4&&a%11==10){
  8. printf("%d",a);
  9. break;}
  10. }
  11. }

43 计算阶乘和

分数 15

作者 陈越单位 浙江大学

对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。

输入格式:

输入在一行中给出一个不超过10的正整数N

输出格式:

在一行中输出S的值。

输入样例:

3

输出样例:

9
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n, s=1, m, S=0;
  5. scanf("%d",&n);
  6. for(m=1;m<=n;m++){
  7. s=s*m;
  8. S+=s;
  9. }
  10. printf("%d",S);
  11. return 0;
  12. }

44 猴子吃桃问题

分数 15

作者 徐镜春单位 浙江大学

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:

输入在一行中给出正整数N(1<N≤10)。

输出格式:

在一行中输出第一天共摘了多少个桃子。

输入样例:

3

输出样例:

10
  1. #include<stdio.h>
  2. int main(){
  3. int a, b=1;
  4. scanf("%d",&a);
  5. while(a>1){
  6. a--;
  7. b=(b+1)*2;
  8. }printf("%d",b);
  9. }

45 找出最小值

分数 15

作者 颜晖单位 浙大城市学院

本题要求编写程序,找出给定一系列整数中的最小值。

输入格式:

输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。

输出格式:

在一行中按照“min = 最小值”的格式输出n个整数中的最小值。

输入样例:

4 -2 -123 100 0

输出样例:

min = -123
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int temp, min, i, n;
  5. scanf("%d",&n);
  6. for(i=0; i<n; i++)
  7. {
  8. scanf("%d",&temp);
  9. if(i==0){
  10. min=temp;
  11. }
  12. if(min>temp){
  13. min=temp;
  14. }
  15. }
  16. printf("min = %d",min);
  17. }

46 跟奥巴马一起画方块

分数 15

作者 陈越单位 浙江大学

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!

输入格式:

输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。

输出格式:

输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。

输入样例:

10 a

输出样例:

  1. aaaaaaaaaa
  2. aaaaaaaaaa
  3. aaaaaaaaaa
  4. aaaaaaaaaa
  5. aaaaaaaaaa
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,i,j;
  5. char a;
  6. scanf("%d ",&n);
  7. scanf("%c",&a);
  8. if(n%2==0) //当n为偶数时
  9. for(i=1;i<=n/2;i++) //n/2行
  10. {
  11. for(j=1;j<=n;j++) //每行n个
  12. {
  13. printf("%c",a);
  14. }
  15. printf("\n");
  16. }
  17. if(n%2!=0) //当n为奇数时
  18. for(i=1;i<=(n+1)/2;i++) //(n+1)/2行
  19. {
  20. for(j=1;j<=n;j++) //每行n个
  21. {
  22. printf("%c",a);
  23. }
  24. printf("\n");
  25. }
  26. return 0;
  27. }

47 爬动的蠕虫

分数 15

作者 C课程组单位 浙江大学

一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:

输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

输出格式:

在一行中输出蠕虫爬出井的时间,以分钟为单位。

输入样例:

12 3 1

输出样例:

11
  1. #include <stdio.h>
  2. int main(){
  3. int N,U,D;
  4. int min=0;
  5. scanf("%d %d %d",&N,&U,&D);
  6. while(N>0){
  7. if(N>U){
  8. min +=2;
  9. }
  10. else{
  11. min +=1;
  12. }
  13. if(N<=U){
  14. N = N-U;
  15. }
  16. else{
  17. N = N-U+D;
  18. }
  19. }
  20. printf("%d",min);
  21. return 0;
  22. }

48 求整数段和

分数 15

作者 杨起帆单位 浙大城市学院

给定两个整数AB,输出从AB的所有整数以及这些数的和。

输入格式:

输入在一行中给出2个整数AB,其中−100≤AB≤100,其间以空格分隔。

输出格式:

首先顺序输出从AB的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

输入样例:

-3 8

输出样例:

  1. -3 -2 -1 0 1
  2. 2 3 4 5 6
  3. 7 8
  4. Sum = 30
  1. #include <stdio.h>
  2. int main(){
  3. int a,b,i;
  4. int sum = 0;
  5. int couter = 0; //用来计数
  6. scanf("%d %d",&a,&b);
  7. for(i=a;i<=b;i++){ //i用来记录输出数字
  8. sum += i;
  9. couter++;
  10. printf("%5d",i); //输出5个字符
  11. if(couter%5 == 0 && i!=b){ //当计数达到5个的时候,就换行
  12. printf("\n");
  13. }
  14. }
  15. printf("\n");
  16. printf("Sum = %d",sum);
  17. return 0;
  18. }

49 最大公约数和最小公倍数

分数 15

作者 张彤彧单位 浙江大学

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(≤1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a,b,i,j;
  5. int max=0;
  6. scanf("%d%d",&a,&b);
  7. for(j=1;j<=a;j++)//求最大公约数
  8. {
  9. if(a%j==0&&b%j==0)//让a和b分别除以j(j从一开始,j有上限要小于等于a或b)
  10. //利用j++,如果a和b能同时除尽j
  11. {
  12. if(max<j)//再判断j是不是小于a或b的最大公约数,不是则赋值最大值
  13. max=j;//这样求出来的max即为最大公约数
  14. }
  15. }
  16. for(i=a;;i++)//求最小公倍数
  17. {
  18. if(i%a==0&&i%b==0)//用大于等于a和b的数i(i大于等于a和b,无上限)分别除以a和b,同时除尽的第一个数即为最小公倍数
  19. break;//然后循环结束
  20. }
  21. printf("%d %d\n",max,i);//最后最大公约数用max表示了
  22. return 0;
  23. }

50 特殊a串数列求和

分数 20

作者 颜晖单位 浙大城市学院

给定两个均不超过9的正整数an,要求编写程序求a+aa+aaa++⋯+aaana)之和。

输入格式:

输入在一行中给出不超过9的正整数an

输出格式:

在一行中按照“s = 对应的和”的格式输出。

输入样例:

2 3

输出样例:

s = 246
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a, n;
  5. int s=0, item=0;//不要忘了初始值
  6. scanf("%d %d", &a, &n);
  7. for (int i = 0; i < n; i++)
  8. {
  9. item = 10 * item + a;
  10. s += item;
  11. }
  12. printf("s = %d",s);
  13. return 0;
  14. }

51 输出闰年

分数 20

作者 陈建海单位 浙江大学

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式:

输入在一行中给出21世纪的某个截止年份。

输出格式:

逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。

输入样例1:

2048

输出样例1:

  1. 2004
  2. 2008
  3. 2012
  4. 2016
  5. 2020
  6. 2024
  7. 2028
  8. 2032
  9. 2036
  10. 2040
  11. 2044
  12. 2048

输入样例2:

2000

输出样例2:

Invalid year!
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int year,t;
  5. scanf("%d",&year);
  6. if(year<=2000||year>2100){
  7. printf("Invalid year!"); //非21世纪
  8. }
  9. else {
  10. for(int i=2001;i<=year;i++){
  11. if(i%4==0&&i%100!=0||i%400==0){ //&&表示且,||表示或
  12. printf("%d\n",i);
  13. }
  14. }
  15. }
  16. if(year<2004&&year>2000){
  17. printf("None");//无闰年
  18. }
  19. return 0;
  20. }

52 统计素数并求和

分数 20

作者 张彤彧单位 浙江大学

本题要求统计给定整数MN区间内素数的个数并对它们求和。

输入格式:

输入在一行中给出两个正整数MN(1≤MN≤500)。

输出格式:

在一行中顺序输出MN区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int count = 0, sum = 0;
  5. int m, n;
  6. int i, j;
  7. scanf("%d %d", &m, &n);
  8. for (i = m; i <= n; i++)//开始在俩个数之间循环
  9. {
  10. for (j = 2; j <= i; j++)//找出能整除的数
  11. {
  12. if (i % j == 0) break;//找到了就打破循环
  13. }
  14. if (j == i) //如果找出的数与本身相等,说明这个数是质数
  15. {
  16. sum += i;
  17. count += 1;
  18. }
  19. }
  20. printf("%d %d", count, sum);
  21. return 0;
  22. }

53 打印沙漏

分数 20

作者 陈越单位 浙江大学

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

  1. *****
  2. ***
  3. *
  4. ***
  5. *****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *

输出样例:

  1. *****
  2. ***
  3. *
  4. ***
  5. *****
  6. 2
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. int i = 0, j = 0, k = 0;
  6. int num = 0,hangshu=0,shengyu=0;
  7. char ch = 0;
  8. scanf("%d %c", &num, &ch);
  9. int temp = (num + 1) / 2;
  10. hangshu = (int)sqrt(temp);//计算上半部分行数
  11. for (i = 0;i < hangshu;i++)
  12. {
  13. for (j = 0;j < i;j++)
  14. {
  15. printf(" ");
  16. }
  17. for (k = 0;k < 2 * (hangshu - i) - 1;k++)
  18. {
  19. printf("%c", ch);
  20. }
  21. printf("\n");
  22. }
  23. for (i = 1;i < hangshu;i++)
  24. {
  25. for (j = hangshu - i - 1;j > 0;j--)
  26. {
  27. printf(" ");
  28. }
  29. for (k = 0;k < 2 * (i + 1) - 1;k++)
  30. {
  31. printf("%c", ch);
  32. }
  33. printf("\n");
  34. }
  35. shengyu = num - (2 * hangshu * hangshu - 1);
  36. printf("%d", shengyu);
  37. return 0;
  38. }

54 找完数

分数 20

作者 陈建海单位 浙江大学

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数mn之间的所有完数。

输入格式:

输入在一行中给出2个正整数mn(1<mn≤10000),中间以空格分隔。

输出格式:

逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:

2 30

输出样例:

  1. 6 = 1 + 2 + 3
  2. 28 = 1 + 2 + 4 + 7 + 14
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a,b,i,j,s,k,m=0;
  5. scanf("%d %d",&a,&b);//输入两个数
  6. for(i=a;i<=b;i++)
  7. {
  8. s=0;
  9. for(j=1;j<i;j++)
  10. {
  11. if(i%j==0)
  12. {
  13. s+=j;
  14. }
  15. }
  16. if(s==i)//判断是否是完数
  17. {
  18. printf("%d = 1",i);//为了简单输出 先把“完数 = 1”打印出来 因为肯定会有1
  19. for(k=2;k<j;k++)//重复操作
  20. {
  21. if(i%k==0)
  22. {
  23. printf(" + %d",k);//注意加号前后面都有 空格
  24. }
  25. }
  26. printf("\n");//换行 否则有两个及两个以上的完数会一行输出
  27. m++;//判断完数个数 方便没有时输出None
  28. }
  29. }
  30. if(m==0)
  31. {
  32. printf("None\n");
  33. }
  34. return 0;
  35. }

55 梅森数

分数 20

作者 颜晖单位 浙大城市学院

形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。

本题要求编写程序,对任一正整数nn<20),输出所有不超过2n−1的梅森数。

输入格式:

输入在一行中给出正整数nn<20)。

输出格式:

按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。

输入样例:

6

输出样例:

  1. 3
  2. 7
  3. 31
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. int n,i,j,k;
  6. int flag=1; //判断是否是素数
  7. scanf("%d",&n);
  8. if(n<2)
  9. printf("None"); //小于2的不存在梅森数
  10. for(i=2;i<=n;i++)
  11. {
  12. flag=1;
  13. k=pow(2,i)-1;
  14. for(j=2;j<k;j++)
  15. {
  16. if(k%j==0) //不是素数
  17. {
  18. flag=0;
  19. break;
  20. }
  21. }
  22. if(flag)
  23. printf("%d\n",k); //梅森数
  24. }
  25. }

56 生成3的乘方表

分数 20

作者 C课程组单位 浙江大学

输入一个非负整数n,生成一张3的乘方表,输出30~3n的值。可调用幂函数计算3的乘方。

输入格式:

输入在一行中给出一个非负整数n

输出格式:

按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。

输入样例:

3

输出样例:

  1. pow(3,0) = 1
  2. pow(3,1) = 3
  3. pow(3,2) = 9
  4. pow(3,3) = 27
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. int n , a ;
  6. scanf("%d",&n) ;
  7. for(int i=0;i<=n;i++){
  8. a=pow(3,i) ;
  9. printf("pow(3,%d) = %d\n",i,a) ;
  10. }
  11. }

57 输出三角形字符阵列

分数 20

作者 颜晖单位 浙大城市学院

本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。

输入格式:

输入在一行中给出一个正整数n(1≤n<7)。

输出格式:

输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:

4

输出样例:

  1. A B C D
  2. E F G
  3. H I
  4. J
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n;
  5. char ch='A';
  6. scanf("%d", &n);
  7. for (int i = 0;i < n;i++) {
  8. for (int j = n-i;j > 0;j--) {
  9. printf("%c ", ch);
  10. ch++;
  11. }
  12. printf("\n");
  13. }
  14. return 0;
  15. }

58 求最大值及其下标

分数 20

作者 C课程组单位 浙江大学

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

输入格式:

输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。

输出格式:

在一行中输出最大值及最大值的最小下标,中间用一个空格分开。

输入样例:

  1. 6
  2. 2 8 10 1 9 10

输出样例:

10 2
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,max,count=0,input,max_count=0;
  5. scanf("%d",&n);
  6. scanf("%d",&max);
  7. while(1==scanf("%d",&input))
  8. for( count++;max<input;max_count=count)max=input;
  9. printf("%d %d",max,max_count);
  10. }

59 将数组中的数逆序存放

分数 15

作者 C课程组单位 浙江大学

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式:

输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式:

在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例:

  1. 4
  2. 10 8 1 2

输出样例:

2 1 8 10
  1. #include<stdio.h>
  2. int main(){
  3. int a[11], i, n;
  4. scanf("%d", &n);
  5. for(i = 1; i <= n; i++){ //将输入数依次赋值给数组a的n个元素;
  6. scanf("%d", &a[i]);
  7. }
  8. for(i = n; i >= 1; i--){
  9. printf("%d", a[i]);
  10. if(i == 1) continue;
  11. printf(" ");
  12. }
  13. return 0;
  14. }

60 选择法排序

分数 20

作者 C课程组单位 浙江大学

本题要求将给定的n个整数从大到小排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

  1. 4
  2. 5 1 7 6

输出样例:

7 6 5 1
  1. #include<stdio.h>
  2. int main(){
  3. int n,temp;
  4. scanf("%d",&n);
  5. int a[n];
  6. for(int i=0;i<n;i++)
  7. {
  8. scanf("%d",&a[i]);
  9. }
  10. for(int i=0;i<n-1;i++)
  11. {
  12. for(int j=i+1;j<n;j++)
  13. {
  14. if(a[j]>a[i]){
  15. temp=a[i];
  16. a[i]=a[j];
  17. a[j]=temp;
  18. }
  19. }
  20. }
  21. printf("%d",a[0]);
  22. for(int i=1;i<n;i++){
  23. printf(" %d",a[i]);
  24. }
  25. return 0;
  26. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/329229
推荐阅读
相关标签
  

闽ICP备14008679号