赞
踩
分数 10
作者 陈建海单位 浙江大学
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
输入样例:
- 7
- 77 54 92 73 60 65 69
输出样例:
1 0 2 3 1
- #include<stdio.h>
- int main()
- {
- int n, N, m, a=0, b=0, c=0, d=0, e=0;
- scanf("%d",&N);
- for(n=0;n<N;n++){
- scanf("%d",&m);
- if(m>=90)
- a++;
- if(m>=80&&m<90)
- b++;
- if(m>=70&&m<80)
- c++;
- if(m>=60&&m<70)
- d++;
- if(m<60&&m>=0)
- e++;
- }
- printf("%d %d %d %d %d",a,b,c,d,e);
- return 0;
- }
分数 10
作者 颜晖单位 浙大城市学院
在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:
按从1至5报数,记下最末一个士兵报的数为1;
再按从1至6报数,记下最末一个士兵报的数为5;
再按从1至7报数,记下最末一个士兵报的数为4;
最后按从1至11报数,最末一个士兵报的数为10;
请编写程序计算韩信至少有多少兵。
输入格式:
本题无输入
输出格式:
输出韩信至少拥有的士兵人数。
- #include<stdio.h>
- int main()
- {
- int a;
- for(a=1;;a++)
- {
- if(a%5==1&&a%6==5&&a%7==4&&a%11==10){
- printf("%d",a);
- break;}
- }
- }
分数 15
作者 陈越单位 浙江大学
对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。
输入格式:
输入在一行中给出一个不超过10的正整数N。
输出格式:
在一行中输出S的值。
输入样例:
3
输出样例:
9
- #include<stdio.h>
- int main()
- {
- int n, s=1, m, S=0;
- scanf("%d",&n);
- for(m=1;m<=n;m++){
- s=s*m;
- S+=s;
- }
- printf("%d",S);
- return 0;
- }
分数 15
作者 徐镜春单位 浙江大学
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
输入格式:
输入在一行中给出正整数N(1<N≤10)。
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
- #include<stdio.h>
- int main(){
- int a, b=1;
- scanf("%d",&a);
- while(a>1){
- a--;
- b=(b+1)*2;
- }printf("%d",b);
- }
分数 15
作者 颜晖单位 浙大城市学院
本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
输入样例:
4 -2 -123 100 0
输出样例:
min = -123
- #include<stdio.h>
- int main()
- {
- int temp, min, i, n;
- scanf("%d",&n);
- for(i=0; i<n; i++)
- {
- scanf("%d",&temp);
- if(i==0){
- min=temp;
- }
- if(min>temp){
- min=temp;
- }
- }
- printf("min = %d",min);
- }
分数 15
作者 陈越单位 浙江大学
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式:
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。
输出格式:
输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。
输入样例:
10 a
输出样例:
- aaaaaaaaaa
- aaaaaaaaaa
- aaaaaaaaaa
- aaaaaaaaaa
- aaaaaaaaaa
- #include<stdio.h>
- int main()
- {
- int n,i,j;
- char a;
- scanf("%d ",&n);
- scanf("%c",&a);
- if(n%2==0) //当n为偶数时
- for(i=1;i<=n/2;i++) //n/2行
- {
- for(j=1;j<=n;j++) //每行n个
- {
- printf("%c",a);
- }
- printf("\n");
- }
- if(n%2!=0) //当n为奇数时
- for(i=1;i<=(n+1)/2;i++) //(n+1)/2行
- {
- for(j=1;j<=n;j++) //每行n个
- {
- printf("%c",a);
- }
- printf("\n");
- }
- return 0;
- }
分数 15
作者 C课程组单位 浙江大学
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
输入格式:
输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。
输出格式:
在一行中输出蠕虫爬出井的时间,以分钟为单位。
输入样例:
12 3 1
输出样例:
11
- #include <stdio.h>
- int main(){
- int N,U,D;
- int min=0;
- scanf("%d %d %d",&N,&U,&D);
- while(N>0){
- if(N>U){
- min +=2;
- }
- else{
- min +=1;
- }
- if(N<=U){
- N = N-U;
- }
- else{
- N = N-U+D;
- }
- }
- printf("%d",min);
- return 0;
- }
分数 15
作者 杨起帆单位 浙大城市学院
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
输入样例:
-3 8
输出样例:
- -3 -2 -1 0 1
- 2 3 4 5 6
- 7 8
- Sum = 30
- #include <stdio.h>
- int main(){
- int a,b,i;
- int sum = 0;
- int couter = 0; //用来计数
- scanf("%d %d",&a,&b);
- for(i=a;i<=b;i++){ //i用来记录输出数字
- sum += i;
- couter++;
- printf("%5d",i); //输出5个字符
- if(couter%5 == 0 && i!=b){ //当计数达到5个的时候,就换行
- printf("\n");
- }
- }
- printf("\n");
- printf("Sum = %d",sum);
- return 0;
- }
分数 15
作者 张彤彧单位 浙江大学
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
- #include<stdio.h>
- int main()
- {
- int a,b,i,j;
- int max=0;
- scanf("%d%d",&a,&b);
- for(j=1;j<=a;j++)//求最大公约数
- {
- if(a%j==0&&b%j==0)//让a和b分别除以j(j从一开始,j有上限要小于等于a或b)
- //利用j++,如果a和b能同时除尽j
- {
- if(max<j)//再判断j是不是小于a或b的最大公约数,不是则赋值最大值
- max=j;//这样求出来的max即为最大公约数
- }
- }
- for(i=a;;i++)//求最小公倍数
- {
- if(i%a==0&&i%b==0)//用大于等于a和b的数i(i大于等于a和b,无上限)分别除以a和b,同时除尽的第一个数即为最小公倍数
- break;//然后循环结束
- }
- printf("%d %d\n",max,i);//最后最大公约数用max表示了
- return 0;
- }
分数 20
作者 颜晖单位 浙大城市学院
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。
输入样例:
2 3
输出样例:
s = 246
- #include <stdio.h>
- int main()
- {
- int a, n;
- int s=0, item=0;//不要忘了初始值
- scanf("%d %d", &a, &n);
- for (int i = 0; i < n; i++)
- {
- item = 10 * item + a;
- s += item;
- }
- printf("s = %d",s);
- return 0;
- }
分数 20
作者 陈建海单位 浙江大学
输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
- 2004
- 2008
- 2012
- 2016
- 2020
- 2024
- 2028
- 2032
- 2036
- 2040
- 2044
- 2048
输入样例2:
2000
输出样例2:
Invalid year!
- #include<stdio.h>
- int main()
- {
- int year,t;
- scanf("%d",&year);
- if(year<=2000||year>2100){
- printf("Invalid year!"); //非21世纪
- }
- else {
- for(int i=2001;i<=year;i++){
- if(i%4==0&&i%100!=0||i%400==0){ //&&表示且,||表示或
- printf("%d\n",i);
- }
- }
- }
- if(year<2004&&year>2000){
- printf("None");//无闰年
- }
- return 0;
- }
分数 20
作者 张彤彧单位 浙江大学
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
- #include <stdio.h>
- int main()
- {
- int count = 0, sum = 0;
- int m, n;
- int i, j;
- scanf("%d %d", &m, &n);
- for (i = m; i <= n; i++)//开始在俩个数之间循环
- {
- for (j = 2; j <= i; j++)//找出能整除的数
- {
- if (i % j == 0) break;//找到了就打破循环
- }
- if (j == i) //如果找出的数与本身相等,说明这个数是质数
- {
- sum += i;
- count += 1;
- }
- }
- printf("%d %d", count, sum);
- return 0;
- }
分数 20
作者 陈越单位 浙江大学
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
- *****
- ***
- *
- ***
- *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
- *****
- ***
- *
- ***
- *****
- 2
- #include<stdio.h>
- #include<math.h>
- int main()
- {
- int i = 0, j = 0, k = 0;
- int num = 0,hangshu=0,shengyu=0;
- char ch = 0;
- scanf("%d %c", &num, &ch);
- int temp = (num + 1) / 2;
- hangshu = (int)sqrt(temp);//计算上半部分行数
- for (i = 0;i < hangshu;i++)
- {
- for (j = 0;j < i;j++)
- {
- printf(" ");
- }
- for (k = 0;k < 2 * (hangshu - i) - 1;k++)
- {
- printf("%c", ch);
- }
- printf("\n");
- }
- for (i = 1;i < hangshu;i++)
- {
- for (j = hangshu - i - 1;j > 0;j--)
- {
- printf(" ");
- }
- for (k = 0;k < 2 * (i + 1) - 1;k++)
- {
- printf("%c", ch);
- }
- printf("\n");
- }
- shengyu = num - (2 * hangshu * hangshu - 1);
- printf("%d", shengyu);
- return 0;
- }
分数 20
作者 陈建海单位 浙江大学
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
输入样例:
2 30
输出样例:
- 6 = 1 + 2 + 3
- 28 = 1 + 2 + 4 + 7 + 14
- #include<stdio.h>
- int main()
- {
- int a,b,i,j,s,k,m=0;
- scanf("%d %d",&a,&b);//输入两个数
- for(i=a;i<=b;i++)
- {
- s=0;
- for(j=1;j<i;j++)
- {
- if(i%j==0)
- {
- s+=j;
- }
- }
- if(s==i)//判断是否是完数
- {
- printf("%d = 1",i);//为了简单输出 先把“完数 = 1”打印出来 因为肯定会有1
- for(k=2;k<j;k++)//重复操作
- {
- if(i%k==0)
- {
- printf(" + %d",k);//注意加号前后面都有 空格
- }
- }
- printf("\n");//换行 否则有两个及两个以上的完数会一行输出
- m++;//判断完数个数 方便没有时输出None
- }
- }
- if(m==0)
- {
- printf("None\n");
- }
- return 0;
- }
分数 20
作者 颜晖单位 浙大城市学院
形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
- 3
- 7
- 31
- #include<stdio.h>
- #include<math.h>
- int main()
- {
- int n,i,j,k;
- int flag=1; //判断是否是素数
- scanf("%d",&n);
- if(n<2)
- printf("None"); //小于2的不存在梅森数
- for(i=2;i<=n;i++)
- {
- flag=1;
- k=pow(2,i)-1;
- for(j=2;j<k;j++)
- {
- if(k%j==0) //不是素数
- {
- flag=0;
- break;
- }
- }
- if(flag)
- printf("%d\n",k); //梅森数
- }
- }
分数 20
作者 C课程组单位 浙江大学
输入一个非负整数n,生成一张3的乘方表,输出30~3n的值。可调用幂函数计算3的乘方。
输入格式:
输入在一行中给出一个非负整数n。
输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。
输入样例:
3
输出样例:
- pow(3,0) = 1
- pow(3,1) = 3
- pow(3,2) = 9
- pow(3,3) = 27
- #include<stdio.h>
- #include<math.h>
- int main()
- {
- int n , a ;
- scanf("%d",&n) ;
- for(int i=0;i<=n;i++){
- a=pow(3,i) ;
- printf("pow(3,%d) = %d\n",i,a) ;
- }
- }
分数 20
作者 颜晖单位 浙大城市学院
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
- A B C D
- E F G
- H I
- J
- #include<stdio.h>
- int main()
- {
- int n;
- char ch='A';
- scanf("%d", &n);
- for (int i = 0;i < n;i++) {
- for (int j = n-i;j > 0;j--) {
- printf("%c ", ch);
- ch++;
- }
- printf("\n");
- }
- return 0;
- }
分数 20
作者 C课程组单位 浙江大学
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
- 6
- 2 8 10 1 9 10
输出样例:
10 2
- #include<stdio.h>
- int main()
- {
- int n,max,count=0,input,max_count=0;
- scanf("%d",&n);
- scanf("%d",&max);
- while(1==scanf("%d",&input))
- for( count++;max<input;max_count=count)max=input;
- printf("%d %d",max,max_count);
- }
分数 15
作者 C课程组单位 浙江大学
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
- 4
- 10 8 1 2
输出样例:
2 1 8 10
- #include<stdio.h>
- int main(){
- int a[11], i, n;
- scanf("%d", &n);
- for(i = 1; i <= n; i++){ //将输入数依次赋值给数组a的n个元素;
- scanf("%d", &a[i]);
- }
- for(i = n; i >= 1; i--){
- printf("%d", a[i]);
- if(i == 1) continue;
- printf(" ");
- }
- return 0;
- }
分数 20
作者 C课程组单位 浙江大学
本题要求将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
- 4
- 5 1 7 6
输出样例:
7 6 5 1
- #include<stdio.h>
- int main(){
- int n,temp;
- scanf("%d",&n);
- int a[n];
- for(int i=0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- for(int i=0;i<n-1;i++)
- {
- for(int j=i+1;j<n;j++)
- {
- if(a[j]>a[i]){
- temp=a[i];
- a[i]=a[j];
- a[j]=temp;
- }
- }
- }
- printf("%d",a[0]);
- for(int i=1;i<n;i++){
- printf(" %d",a[i]);
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。