案例一:打印1-100的奇数
(分别使用for循环和while循环实现)
for循环实现:
int main()
{
int i = 1;
for (i = 1; i < 100; i++)
{
if (i % 2 == 1)
printf("%d ", i);
}
return 0;
}
while循环实现:
int main()
{
int i = 1;
while (i<100)
{
if (i % 2 == 1)
printf("%d ", i);
i++;
}
return 0;
}
案例二:输入一组成绩,除去最高分,除去最低分,求平均分
(此代码中一组共6个成绩)
#define N 6 //define 定义宏,定义N为6
int main()
{
int i;
float score, max = 0, min = 100, sum = 0;
for (i = 1; i <= N; i++)
{
printf("请输入成绩%d:", i);
scanf("%f", &score);
if (score > max)
max = score;
if (score < min)
min = score;
sum += score;
}
printf("平均分为:%0.2f",(sum - max - min) / (N - 2));
return 0;
}
运行结果:
案例三:输入一组数字,倒序输出
#define N 9 //define 定义宏,定义N为9
int main()
{
int a[N]; //定义一个数组a
int i = 0, j;
printf("请输入%d个数字\n", N);
for (i; i < N; i++)
{
printf("请输入第%d个数字:", i+1);
scanf("%d", &a[i]);
}
printf("倒序输出结果为");
for(j = N - 1; j >= 0; j--)
printf("%d", a[j]);
return 0;
}
运行结果:
案例四:实现Fibonacci数列
(1 1 2 3 5 8 13 ...每个数都等于前两个数相加之和)
要求:输出前20项并且每五项换行一次
int main()
{
int fib[20]; //定义一个数组名为fib的数组
fib[0] = 1, fib[1] = 1; //定义数组的第一个元素和第二个元素数值为1
int i,j;
for (i = 2; i < 20; i++)
fib[i] = fib[i - 1] + fib[i - 2];
for (j = 0; j < 20; j++)
{
printf("%d\t", fib[j]);
if (fib[j] % 5 == 0) //利用Fibonacci数列特性来实现换行
printf("\n");
}
return 0;
}
运行结果:
案例五:求三角形面积
提示:
1、三角形的面积公式 area=s(s-a)(s-b)(s-c)的开平方根,s=(a+b+c)/2
2、sqrt() 为开平方根函数
3、调用数学函数时需要导入#include <math.h>
代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, s, area; //float定义单精度浮点型,因为数值有可能是小数
printf("请输入三角形三边:");
scanf("%f %f %f", &a, &b, &c); //获取三角形的三边长度,分别为a,b,c
if (a + b > c && a + c > b && c + b > a) //判断三角形是否成立的条件:两边之和大于第三边
{
s = (a + b + c) / 2.0;
area = sqrt(s*(s - a)*(s - b)*(s - c));
printf("面积为:%7.2f", area); //%7.2f指的是结果保留小数点前7位数,小数点后2位数
}
else
{
printf("输入三边数值错误!"); //若输入的数值不符合三角形的要求,则运行该代码块
}
return 0;
}
运行结果:
案例六:关于while循环的实际运用
代码含义:如果输入的字符无错误,则打印输入的字符
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
getchar():用于从计算机终端获取一个无符号字符,getchar()函数只能接收一个字符
putchar():输出指定表达式的值所对应的字符,putchar()函数只能输出一个字符
EOF:如果到达文件末尾或发生读错误,则返回 EOF
运行结果:
实际运用1:只输出数字
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
运行结果:
实际运用2:清除缓存区
int main()
{
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password);
printf("请确认密码(Y/N):");
//使用getchar()清理缓存区
int tmp;
while (tmp = getchar() != '\n') //将缓存区的回车清除
{
;
}
int ch = getchar();
if (ch == 'Y')
printf("输入成功\n");
else
{
printf("输入失败\n");
}
return 0;
}
运行结果: