2022秋 - C实验A类 –实验3 循环结构I

7-1 奇偶分家

给定N个正整数,请统计奇数和偶数各有多少个?

输入格式:

输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。

输出格式:

在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。

输入样例:

9
88 74 101 26 15 0 34 22 77

输出样例:

3 6

代码段:

#include <stdio.h>

int main()
{
    int n,j=0,o=0,temp,dp;
    scanf("%d\n",&n);
    for(int i=1;i<=n;i++)
    {
        temp=0;
        scanf("%d ",&temp);
        dp=temp%2;
        if(dp==0)
            o++;
        else j++;
    }
    printf("%d %d",j,o);
}

7-2 求交错序列前N项和

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,结果保留三位小数。

输入样例:

5

输出样例:

0.917

代码段:

#include <stdio.h>

int main()
{
    int i,sign=-1,n;
    float sum=0,temp;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sign=-sign;
        temp=0;
        temp=sign*i/(2*i-1.0);
        sum=sum+temp;
    }
    printf("%.3f",sum);
}

7-3 寻找250

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式:

输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。

输出格式:

在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。

输入样例:

888 666 123 -233 250 13 250 -222

输出样例:

5

 代码段:

#include <stdio.h>

int main()
{
    int i,count,temp;
    while(1)
    {
        scanf("%d",&temp);
        count++;
        if(temp==250)
        {
            printf("%d",count);
            break;
        }
    }
}

7-4 最大公约数和最小公倍数

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

输入格式:

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

输出格式:

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

输入样例:

511 292

输出样例:

73 2044

代码段:

#include <stdio.h>

int main()
{
    int m,n,a=0,b;
    scanf("%d %d",&n,&m);
    for(int i=m;i>=1;i--)
    {
        if(m%i==0&&n%i==0)
        {
            a=i;
            break;
        }
    }
    if(a==0)
        b=m*n;
    if(a!=0)
        b=(m/a)*n;
    printf("%d %d",a,b);
}

7-5 统计字符

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:

输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

代码段:

#include <stdio.h>
int main(void)
{
	char c;
	int i, letter = 0, blank = 0, digit = 0, other = 0;
	for (i = 0; i < 10; i++)
	{
		c = getchar();
		if (c >= '0' && c <= '9')
			digit++;
		else if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
			letter++;
		else if (c == ' ')
			blank++;
		else if (c == '\n')
			blank++;
		else
			other++;
	}
	printf("letter = %d, blank = %d, digit = %d, other = %d", letter, blank, digit, other);
	return 0;
}

7-6 大笨钟

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。

下面就请你写个程序,根据当前时间替大笨钟敲钟。

输入格式:

输入第一行按照hh:mm的格式给出当前时间。其中hh是小时,在00到23之间;mm是分钟,在00到59之间。

输出格式:

根据当前时间替大笨钟敲钟,即在一行中输出相应数量个Dang。如果不是敲钟期,则输出:

Only hh:mm.  Too early to Dang.

其中hh:mm是输入的时间。

输入样例1:

19:05

输出样例1:

DangDangDangDangDangDangDangDang

输入样例2:

07:05

输出样例2:

Only 07:05.  Too early to Dang.

代码段:

#include <stdio.h>

int main()
{
    int h,m,t,i;
    scanf("%d:%d",&h,&m);
    t=h*60+m;
    if(t<=720)
        printf("Only %02d:%02d.  Too early to Dang.",h,m);
    if(t>720)
    {
        int count,remain;
        count=(t-720)/60;
        remain=t%60;
        if(remain!=0)
        {
            for(i=1;i<=count+1;i++)
                printf("Dang");
        }
        if(remain==0)
        {
            for(i=1;i<=count;i++)
                printf("Dang");
        }
    }
}

7-7 统计选票

某次选举的共有三人参选,试编写程序根据输入的选票值,统计三人各自的得票数和废票数,并输出投票结果。统计规则如下:

  • 选票值为1表示选Tom
  • 选票值为2表示选Jerry
  • 选票值为3表示选Spike
  • 选票值为0或4表示为废票
  • 若3人票数均不大于废票数,则选举结果无效

输入格式:

在一行中依次输入所有选票的值,之间用空格间隔,输入-1则表示输入结束。

输出格式:

在第一行中按如下格式输出票数统计结果。

Tom = 得票数 Jerry = 得票数 Spike = 得票数 Invalid = 废票数

若选举无效,则在第二行中输出

Election invalid!

输入样例1:

3 1 2 1 1 3 3 2 1 2 3 3 2 1 1 3 2 0 1 4 -1

输出样例1:

Tom = 7 Jerry = 5 Spike = 6 Invalid = 2

输入样例2:

3 0 4 0 1 2 0 4 3 2 3 1 1 3 2 0 0 4 -1

输出样例2:

Tom = 3 Jerry = 3 Spike = 4 Invalid = 8
Election invalid!

代码段:

#include <stdio.h>

int main()
{
    int i,n,a=0,b=0,c=0,d=0;
    for(i=1;;i++)
    {
        scanf("%d",&n);
        if(n==1)
            a++;
        if(n==2)
            b++;
        if(n==3)
            c++;
        if(n==4||n==0)
            d++;
        if(n==-1)
            break;
    }
    printf("Tom = %d Jerry = %d Spike = %d Invalid = %d\n",a,b,c,d);
    if(a<=d&&b<=d&&c<=d)
        printf("Election invalid!");
}

7-8 降价提醒机器人

小 T 想买一个玩具很久了,但价格有些高,他打算等便宜些再买。但天天盯着购物网站很麻烦,请你帮小 T 写一个降价提醒机器人,当玩具的当前价格比他设定的价格便宜时发出提醒。

输入格式:

输入第一行是两个正整数 N 和 M (1≤N≤100,0≤M≤1000),表示有 N 条价格记录,小 T 设置的价格为 M。

接下来 N 行,每行有一个实数 Pi​(−1000.0<Pi​<1000.0),表示一条价格记录。

输出格式:

对每一条比设定价格 M 便宜的价格记录 P,在一行中输出 On Sale! P,其中 P 输出到小数点后 1 位。

输入样例:

4 99
98.0
97.0
100.2
98.9

输出样例:

On Sale! 98.0
On Sale! 97.0
On Sale! 98.9

代码段:

#include <stdio.h>

int main()
{
    int n,m;
    float price;
    scanf("%d %d\n",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%f\n",&price);
        if(price<m)
            printf("On Sale! %.1f\n",price);
    }
}

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

Snooker No. eight

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值