前言
全部习题
还有的是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也可以省略花括号,在执行的时候,只执行了第一条语句。
注意:是一条语句,不是一行。用分号;表示一条语句
- 还是推荐使用宏,如果功能不是非常的复杂这个时候应该首先宏
- 在for()内定义变量,当多次使用变量时更安全
- 还要注意一点:注意数组的下标
二.第一题
第一个问题,怎么表示 三位数,可以这样 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又是什么,不要慌下一个文章你就清楚了