目录
//求一组数中正整数的个数即其算数平均值(continue的用法)
//打印星型图案进阶
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 5; i++)//控制前5行
{
if (i % 2 == 0)//控制偶数行
{
int m = -i + 5;
int n = 2 * i - 1;
for (; m > 0; m--)
{
printf(" ");
}
for (; n > 0; n--)
{
printf("*");
}
printf("\n");
}
if (i % 2 == 1)//控制奇数行
{
int m = -i + 5;
int n = 2 * i - 1;
for (; m > 0; m--)
{
printf(" ");
}
for (; n > 0; n--)
{
printf("^");
}
printf("\n");
}
}
for (i = 6; i <= 9; i++)//控制后4行
{
if (i % 2 == 0)//控制偶数行
{
int m = i - 5;
int n = - 2 * i + 19;
for (; m > 0; m--)
{
printf(" ");
}
for (; n > 0; n--)
{
printf("*");
}
printf("\n");
}
if (i % 2 == 1)//控制奇数行
{
int m = i - 5;
int n = -2 * i + 19;
for (; m > 0; m--)
{
printf(" ");
}
for (; n > 0; n--)
{
printf("^");
}
printf("\n");
}
}
}
//打印指定月份的日历
这个小程序很有意思,但是有点难度,主要是这里面的day含义不清,容易把人绕进去(我不会说我就是其中一个的!!)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int month = 0;
int week = 0;
int maxday = 0;
int day = 0;//day在整个工程中没有实际意义,或者说有很多不同的意义
printf("请输入月份:");
scanf("%d", &month);
printf("本月一号是周几:");
scanf("%d", &week);//此为一个月的第一天是星期几
printf("本月一共有多少天:");
scanf("%d", &maxday);
printf("\n————————— %2d 月 ———————\n", month);//相当于打印菜单
printf("\n 日 一 二 三 四 五 六\n");
++week;
if (week == 8)//如果第一天是星期日,加一等于8,根据日历可知在第一列
{
day = week = 1;
}
else
{
day = week;
}
while (day-- > 1)//如果第一天是星期日,则前面不需要空格
{
printf(" ");
}
day = 1;//空格打印完后再将day赋值为1,表示一个月的第一天
while (day <= maxday)
{
printf("%6d", day++);//先打印day,再将day++
if (++week == 8)//先将week++,再判断是否相等
{
printf("\n");//打印完一周后换行
week = 1;
}
}
printf("\n");
return 0;
}
//百元买百鸡
公鸡5元/只,母鸡3元/只,小鸡1元3只,求公鸡,母鸡,小鸡各几只。
这种题目如果单纯使用三个循环加上穷举法的话的确很简单,但是要计算大约103万次,算法效率太低。我们注意到,公鸡5元/只,母鸡3元/只,也就是说公鸡最多20只,母鸡最多33只,而小鸡就是100-公鸡-母鸡,这样一来,程序便简化多了。鸡兔同笼问题,客人握手问题,选手分组名单问题,排列组合问题都可以用此方法解决哦~
注:可能不止一种答案
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int cook = 0;
int hen = 0;
int chi = 0;
for (cook = 1; cook < 20; cook++)
{
for (hen = 1; hen < 33; hen++)
{
chi = 100 - cook - hen;
if (cook * 5 + hen * 3 + chi / 3.0 == 100)
{
printf("公鸡 %d 只,母鸡 %d 只,小鸡 %d 只\n", cook, hen, chi);
}
}
}
return 0;
}
//将一个正整数分解成质因子的连乘积
这个道理是懂得透透的了,但自己不一定会写呜呜呜,要熟能生巧啊!!
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int n = 0;
int i = 2;//i不能从3开始,要照顾到下面的n % i
printf("请输入一个整数:");
scanf("%d", &n);
printf("%d=", n);
do
{
if (i >= n)//即n=0,1,2时
{
printf("%d\n", n);
break;//跳出do-while循环
}
if (n % i == 0)//一个数的最小因子就是2
{
printf("%d*", i);
n = n / i;
}
else
{
i++;
}
} while (i <= n);
return 0;
}
//求一组数中正整数的个数即其算数平均值(continue的用法)
这题真的不难,但是有好多小坑,我改了好久才完全没错(蓝瘦香菇……)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
int sum = 0;
int num = 0;
printf("请输入10个整数:");
for (i = 0; i < 10; i++)
{
scanf("%d",&num);
if (num <= 0)
{
continue;//是负数直接跳到for循环的判断部分
}
count++;
sum = sum + num;
}
printf("总共有%d个正整数,其总和为%d,其算数平均值为%f\n", count, sum, (float)sum / count);//重点!!
return 0;
}
下一章<数组>,咱们不见不散!!