法133计算机科学课第11周实践题目及参考解答

课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597


Problem  A n以内奇数的平方和【简单循环】  

Description

输入n,求n以内奇数的平方和

Input

整型数n

Output

n以内奇数的平方和(例如,输入7,输出为12+32+52+72=84)

Sample Input

7

Sample Output

84

参考解答:

#include<stdio.h>
int main()
{
    // 注意sum要赋初值
    int n, sum = 0;
    int i;
    scanf("%d",&n);
    for( i=1; i<=n; i+=2 )
    {
        sum = sum + i*i;
    }
    printf("%d",sum);
    return 0;
}


Problem  B 谁去参加竞赛?【简单循环】

Description

学校要举办大学生程序设计竞赛,老师要求期末考试成绩在平均成绩以上的同学都去参赛。谁去参赛?那得先算出平均成绩。

Input

输入若干个0-100间的数表示成绩,为适应不同人数的班级,人数不确定,输入以一个负数结束。(为简单起见,不必对输入数据是否超出100进行限制)

Output

成绩的平均值(输出保留1位小数)

Sample Input

98.5 72.3 67.3 87 54.3 63 78.5 -1

Sample Output

74.4

HINT

C语言中,将printf("%.1f\n",x); 可以令x的值保留1位小数输出。

C++中,cout<<setiosflags(ios::fixed)<<setprecision(1)<<x<<endl;x的值保留1位小数输出,另外,需加头文件#include<iomanip>

参考解答:

#include<stdio.h>
int main()
{
    float score, sum = 0, n=0;
    scanf("%f",&score);
    while(score>=0)
    {
        sum += score;
        n++;
        scanf("%f",&score);
    }
    if(n>0)
        printf("%.1f",sum/n);
    else
        printf("%.1f",0.0);
    return 0;
}


Problem  C 某年某月的天数【多分支】

Description

输入年和月,判断该月有几天?

Input

输入年和月,格式为:年 月

Output

输出该月的天数。

Sample Input

2009 1

Sample Output

31

HINT

注意判断闰年啊

参考解答1:

#include<stdio.h>
int main()
{
    int year, month, days;
    scanf("%d %d", &year, &month);
    switch (month)
    {
    case 1 :
    case 3 :
    case 5 :
    case 7 :
    case 8 :
    case 10 :
    case 12 :
        days = 31;
        break;
    case 4 :
    case 6 :
    case 9 :
    case 11 :
        days = 30;
        break;
    default:  // month == 2
        if( (year%4==0&&year%100!=0)|| (year%400==0) )
            days = 29;
        else
            days = 28;
    }
    printf("%d",days);
    return 0;
}


参考解答2:

#include <stdio.h>
int main()
{
	int year,month,d;
	char c;
	scanf("%d%c%d",&year,&c,&month);
	switch(month)
	{
	  case 12:d=31;break;
	  case 11:d=30;break;
	  case 10:d=31;break;
	  case  9:d=30;break;
	  case  8:d=31;break;
	  case  7:d=31;break;
	  case  6:d=30;break;
	  case  5:d=31;break;
	  case  4:d=30;break;
	  case  3:d=31;break;
	  case  2:d=28;break;
	  case  1:d=31;break;
	}
	if(year%400==0||year%100!=0&&year%4==0&&month==2)
	   d++;
	printf("%d\n",d);
	return 0;
}



Problem  D 帮警长数一数【循环、分支简单综合】

Description

黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的样本数目。 

Input

血型序列(A/B/O/CC代表AB型血,输入以X结束) 

Output

各种血型的数量 

Sample Input

ABCAOCOAOOBX

Sample Output

A:3

B:2

O:4

AB:2

参考解答:

#include<stdio.h>
int main()
{
    int a=0, b=0, ab=0, o=0;
    char blood;
    scanf("%c", &blood);
    while(blood!='X')
    {
        switch (blood)
        {
        case 'A' :
            a++;
            break;
        case 'B' :
            b++;
            break;
        case 'C' :
            ab++;
            break;
        case 'O' :
            o++;
            break;
        }
        scanf("%c", &blood);
    }
    printf("A:%d\n",a);
    printf("B:%d\n",b);
    printf("O:%d\n",o);
    printf("AB:%d\n",ab);
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值