C 语言练习实例 DAY18


前言

全部习题
还有的是C Primer Plus中的,会有标注的


一、该程序目标:计算每年总降水量,年平均降水量,月平均降水量(C Primer Plus)

#include <stdio.h>
#define YEARS 5
#define MONTHS 12
int main()
{
	const float rain[YEARS][MONTHS] =
	{
		{1.2, 1.3, 2.5, 5.9, 7.3, 1.2, 3.2, 5.5, 3.6, 2.9, 1.8, 2.9},
		{3.4, 1.5, 6.3, 4.5, 8.5, 1.4, 3.1, 5.4, 2.6, 2.1, 3.8, 2.1},
		{4.3, 5.4, 7.5, 3.5, 3.4, 2.4, 1.1, 4.2, 2.9, 4.4, 2.4, 5.9},
		{2.3, 4.5, 5.4, 6.5, 5.5, 5.4, 3.1, 1.4, 1.6, 3.6, 4.8, 1.2},
		{2.5, 4.5, 1.4, 5.4, 6.7, 3.1, 2.4, 3.1, 4.2, 2.1, 2.1, 4.1},
	};
	printf("YEAR     RAINALL\n");
	int month, year;
	float total , subtot ;
	for (year = 0, total = 0;year < YEARS;year++)
	{
		for (month = 0, subtot = 0;month < MONTHS; month++)
		subtot += rain[year][month];
		printf("%4d %10.2f\n", 2010 + year, subtot);
		total += subtot;
	}
	printf("\n年平均降水量%.2f", total / YEARS);
	printf("\n每个月的平均降水量:\n\n");
	printf(" Jan Feb Mar Apr May Jun Ju1 Aug Sep Oct Nov Dec\n");
	for (month = 0 ;month < MONTHS;month++)
	{
		for (year = 0, subtot = 0;year < YEARS; year++)
		subtot += rain[year][month];
		printf(" %.1f", subtot / YEARS);
	}
	return 0;
}

一些问题

说实话,第一次见到不带{}的for循环,看了一些文章,不仅for可以不带{}就连if,while也可以省略花括号,在执行的时候,只执行了第一条语句。
注意:是一条语句,不是一行。用分号;表示一条语句

  1. 还是推荐使用宏,如果功能不是非常的复杂这个时候应该首先宏
  2. 在for()内定义变量,当多次使用变量时更安全
  3. 还要注意一点:注意数组的下标

二.第一题

在这里插入图片描述

第一个问题,怎么表示 三位数,可以这样 a*100+b*10+c
第二个问题,怎么表示 互不相同且不重复的数字,

#include <stdio.h>
int main()
{
	int i = 0;
	for (int b = 1;b < 5;b++)//用循环把全部结果写出来
			for (int s = 1; s < 5;s++)
					for (int g = 1; g < 5; g++)
						if (b != s && s != g && b != g)
						{
							printf("%d\n", b * 100 + s * 10 + g);//判断三位都不同
							i++;
						}
	printf("共有%d个不同的数", i);
	return 0;
}

运行正确:

在这里插入图片描述

一个统计单词的程序

1.判断是不是字母

判断是不是字母

在这里插入图片描述

主要讲解getchar()函数

getchar() —读取单个字符的函数
注意:此时是读取单个字符
如果想要读取多个字符用到 gets()函数

#include<stdio.h>
int main()
{
    char a;
    while ((a = getchar()) != EOF)
    {
        getchar();
        if ((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z'))
            printf("%c is an alphabet.\n", a);
        else
            printf("%c is not an alphabet.\n", a);
    }
    return 0;
}

千万不要写成 a<=‘a’<=z,这句话是有语法错误的

在这里插入图片描述

这里你可能有许多问题,比如getchar()是什么,OEF又是什么,不要慌下一个文章你就清楚了

如果您发现文章有错误请与我留言,感谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马职音人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值