一、百钱买百鸡
描述:鸡翁一,值钱五;鸡母一,值钱三;三鸡雏,值钱一;百钱买百鸡,问鸡翁,鸡母,鸡雏各几何?
#include <stdio.h>
#include <stdlib.h>
void func();
int main() {
printf("start coding..\n");
func();
exit(0);
}
void func() {
int cocks;//公鸡
int hens; //母鸡
int chicks = NUM - cocks - hens;//鸡雏
for (cocks = 1; cocks < NUM; cocks++) {
for (hens = 1; hens < NUM - cocks; hens++) {
chicks = NUM - cocks - hens;
if (cocks * 5 + hens * 3 + chicks / 3 == NUM) {
printf("cocks = %d ", cocks);
printf("hens = %d ", hens);
printf("chicks = %d\n", chicks);
}
}
}
}
二、打印钻石图形
#include <stdio.h>
#include <stdlib.h>
void diamonds();
int main() {
printf("start coding..\n");
diamonds();
exit(0);
}
void diamonds() {
int row = 15, half, i, j;
//打印钻石上半部分
half = row / 2 + 1;
for (i = 1; i <= half; i++) {
//打印空格
for (j = 1; j <= half - i; j++) {
printf(" ");
}
//打印星号
for (j = 1; j <= 2 * i -1; j ++) {
printf("*");
}
printf("\n");
}
//打印钻石下半部分
for (i = 1; i < half; i++) {
//打印空格
for (j = 1; j <= i; j ++) {
printf(" ");
}
//打印星号
//for (j = 1; j <= 2 * (half -i - 1) + 1; j++) {
for (j = 1; j <= (2 * half - 2 * i - 1); j++) {
printf("*");
}
printf("\n");
}
}
三、斐波那契数列
描述:如式子,fibonacci: 1 1 2 3 5 8 13 21 ...
方法一:
#include <stdio.h>
#include <stdlib.h>
int fib(int);
int main() {
printf("start coding..\n");
int n;
int ret;
int i = 0;
printf("please input numbers for int: \n");
ret = scanf("%d",&n);
if (ret != 1) {
fprintf(stderr, "input error!");
exit(0);
}
printf("%d\n", n);
for (i = 1; i <= n; i++)
printf("%d ", fib(i));
printf("\n");
exit(0);
}
int fib(int n) {
if (n == 1 || n == 2) return 1;
return fib(n - 1) + fib(n - 2);
}
方法二:
#include <stdio.h>
#include <stdlib.h>
void fibonacci(void);
int main() {
printf("start coding..\n");
fibonacci(); exit(0);
}
void fibonacci(void) {
int i;
int fib[10] = {1, 1};
for (i = 2; i < 10; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
for (i = 0; i < 10; i++) {
printf("%d ", fib[i]);
}
printf("\n");
//return ;
}
四、投资问题
描述:投资问题:A以每年10%的单利息投资了100美元,B以每年5%的复合利息投资了100美元。编写一个程序,计算需要多少年B的投资总额才会超过A的投资总额,并且显示出来到那个时刻为止,两个人各自的资产总额是多少?
#include <stdio.h>
#include <stdlib.h>
void invest();
int main() {
printf("start coding..\n");
invest();
exit(0);
}
void invest() {
int n = 1;//期数
float iA = 0.10f;//A利率
float iB = 0.05f;//B利率
float p = 100.0f;//A本金
float lA;//A利息
float lB;//B利息
float amtA;//A总金额
lA = p * iA * n;
amtA = p + lA;
lB = p * pow((1 + iB), n);
printf("for before, lB = %f\n", lB);
printf("for before, amtA = %f\n", amtA);
for (; lB < amtA; ++n) {
lA = p * iA * n;
amtA = p + lA;
lB = p * pow((1 + iB), n);
}
printf("投资%d年,B的资产超过A的资产\n", n);
printf("A的资产总额:%f\n", amtA);
printf("B的资产总额:%f\n", lB);
}
五、九九乘法表
#include <stdio.h>
#include <stdlib.h>
void multiplication_table();
int main() {
printf("start coding..\n");
multiplication_table();
exit(0);
}
void multiplication_table() {
int i = 1, j = 1;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) {
printf("%d x %d = %d\t", j, i, i * j);
}
printf("\n");
}
}
六、求水仙花数
描述:个位的立方+十位的立方+百位的立方=这个三位数本身
#include <stdli.h>
#include <stdlib.h>
void func();
int main() {
printf("start coding..\n");
func();
exit(0);
}
void func() {
int low_num = 100;
int high_num = 999;
for (low_num = 100; low_num <= high_num; low_num++) {
int g = low_num % 10;
int s = (low_num / 10) % 10;
int b = low_num / 100;
if (low_num == g * g * g + s * s * s + b * b * b) {
printf("narcissus = %d\n", low_num);
}
}
}
七、求质数
描述:只能被1和本身整除的数称为质数
#include <stdio.h>
#include <stdlib.h>
void func();
int main() {
func();
exit(0);
}
void func() {
int i = 0;
int sqr = 0;
int j, count;
for (i = 3; i <= 1000; i+=2) {
//sqr = sqrt(i) + 1;
//printf("我开平方等于:%d\n", sqr);
for (j = 2; j * j <= i/*j <= sqr*/; j++) {
count++;
if (i % j == 0) {
break;
}
}
if (j * j > i) {
printf("%d ", i);
}
}
printf("\n");
printf("loop number is %d\n", count);
}