前言:下面这些习题主要来源于苏小红编写的《C语言程序设计一书》。在平时写练习时的部分练习记录,练习还没写完🤠,还在连载中.....
目录
1.利用4/Π公式求Π
# include <stdio.h>
# include <math.h>
main()
{
double answer;
int item, sign;
answer = 0;
item = sign = 1;
while (fabs(1.0/item) >= 1e-4)
{
answer += (double) sign/item;
item += 2;
sign = -sign;
}
printf("pi=%f\n", 4 * answer);
}
2.输出绝对值
#include <stdio.h>
main()
{
int number, n;
n = 1;
printf("输入一个实数:");
scanf("%d", &number);
if (number >= 0)
printf("该数的绝对值为:%d\n", number);
else
printf("该数的绝对值为%d\n", -number);
}
3.判断奇偶
# include <stdio.h>
main()
{
int number;
printf("输入一个整数:");
scanf("%d", &number);
if (number&1 == 1)
printf("%d 是奇数\n", number);
else
printf("%d 是偶数\n", number);
}
4.求存钱获取利润
# include <stdio.h>
# include <math.h>
main()
{
int year;
float bon;
double sum, rate;
printf("输入需要储存的金额:");
scanf("%f", &bon);
printf("输入需要储存的年限:");
scanf("%d", &year);
switch (year)
{
case 1: rate = 0.0225;
break;
case 2: rate = 0.0243;
break;
case 3: rate = 0.027;
break;
case 5: rate = + 0.0288;
break;
case 8: rate = + 0.03;
break;
default : printf("为设有该年限。\n");
}
sum = bon * pow(1+rate, year);
printf("合计:%f\n", sum);
}
5.判断是否为闰年
# include <stdio.h>
main()
{
int year;
printf("Enter year:");
scanf("%d", &year);
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
printf("%d is a leap year!\n", year);
else
printf("%d is not a leap year\n", year);
}
6.大小写字母转换
#include <stdio.h>
main()
{
int i = 0;
int dif = 'a' - 'A';
char chr;
printf("Enter a key:");
scanf("%c", &chr);
printf("转换前/不转换 : %c \t ASCLL:%d\n", chr, chr);
if(chr >= 'a' && chr <= 'z')
{
chr -= dif;
printf("转换后 : %c \t ASCLL:%d\n", chr, chr);
}
else if(chr >= 'A' && chr <= 'Z')
{
chr += dif;
printf("转换后 : %c \t ASCLL:%d\n", chr, chr);
}
}
7.判断字符类型
# include <stdio.h>
# include <stdlib.h>
main()
{
char chr;
printf("Enter a key:");
chr = getchar();
if (chr >= '0' && chr <= '9')
printf(" %c 是 数字\n", chr);
else if (chr >= 'A' && chr <= 'Z')
printf("%c 是大字母\n", chr);
else if (chr >= 'a' && chr <= 'z')
printf(" %c 是小写字母\n", chr);
else
printf("%c 是其他字符\n", chr);
}
8.五分制成绩
# include <stdio.h>
# include <stdlib.h>
main()
{
float score;
printf("Enter score:");
scanf("%f", &score);
if (score >= 0 && score < 60)
printf("对应等级:E\n");
else if (score >= 60 && score < 70)
printf("对应等级:D\n");
else if (score >= 70 && score < 80)
printf(printf("对应等级:C\n"));
else if (score >= 80 && score < 90)
printf(printf("对应等级:B\n"));
else if (score >= 90 && score <= 100)
printf(printf("对应等级:A\n"));
}
9.判断体重
# include <stdio.h>
# include <math.h>
main()
{
float height, weight, t;
printf("Enter your height:");
scanf("%f(m)", &height);
printf("Enter your weight:");
scanf("%f(kg)", &weight);
t = weight / pow(height, 2);
if (t < 18)
printf("低体重\n");
else if (t >= 18 && t < 25)
printf("正常体重\n");
else if (t >= 25 && t < 27)
printf("超重体重\n");
else if (t >= 27)
printf("肥胖\n");
}
10.实现生产翻倍所花时间
# include <stdio.h>
main()
{
int year;
double addrate, sum, product;
product = 1000000;
sum = 0;
printf("输入增长率:");
scanf("%lf", &addrate);
for (year = 0; sum < 2*product; year++)
sum += product * (1 + addrate);
printf("需要%d年\n", year);
}
//计算pi近似值
# include <stdio.h>
# include <math.h>
main()
{
int i, count, sign;
double sum, term;
sign = 1;
sum = count = 0;
for (i = 1; fabs(term) >= 1e-5; i+=2)
{
term = (double)sign / i;
sum += term;
sign = -sign;
count += 1;
}
printf("pi:%f\n", sum*4);
printf("%d\n", count);
}
11.求e的近似值
# include <stdio.h>
# include <math.h>
main()
{
long i, count, n;
double sum, term;
count = 0;
n = sum = 1;
for (i = 1; fabs(term) >= 1e-5; i++)
{
n *= i;
term = (double)1/n;
sum += term;
count += 1;
}
printf("e:%f\n", sum);
printf("count%d\n", count);
}
12.判断是否为水仙花数
# include <stdio.h>
# include <math.h>
main()
{
int number, a, b, c;
printf("输入一个三位数整数:");
scanf("%d", &number);
a = number / 100;
b = (number - a*100) / 10;
c = number - a*100 - b*10;
if (pow(a, 3) + pow(b, 3) + pow(c, 3) == number)
printf("%d 是水仙花数\n", number);
else
printf("%d 不是水仙花数\n", number);
}
13.求m阶乘值
# include <stdio.h>
main()
{
int i, m;
long sum, n, term;
m = 1;
term = 1;
sum = 0;
printf("Enter n:");
scanf("%d", &n);
for (i = 1; sum < n; i++)
{
term *= i;
sum += term;
}
printf("m = %d\n", i - 2);
}
14.正数和
# include <stdio.h>
main()
{
int number, sum;
sum = 0;
printf("Enter some number(enter 0 to end input)\n");
while (number != 0)
{
printf("Enter a number:");
scanf("%d", &number);
if (number >0)
sum += number;
}
printf("all positive number sum is %d\n", sum);
}
14.马克思男女小孩用餐付钱求人数问题
# include <stdio.h>
main()
{
int child, women, man, count;
count = 0;
for (man = 1; man <= 15; man++)
{
for (women = 1; women <= 23; women++)
{
child = 30 - man - women;
if (man*3 + women*2 + child == 50)
{
printf("man:%d\nwomen:%d\nchild:%d\n", man, women, child);
printf("-------------------------\n");
count += 1;
}
}
}
printf("共%d种结果\n", count);
}
15.鸡兔同笼问题(两重for循环)
# include <stdio.h>
main()
{
int chicken, rabbit, count;
count = 0;
for (rabbit = 1; rabbit <= 95; rabbit++)
{
for (chicken = 1; chicken <= 98; chicken++)
{
if (rabbit*4 + chicken*2 == 386 && rabbit + chicken == 98)
{
printf("rabbit:%d\nchicken:%d\n", rabbit, chicken);
printf("-------------------------\n");
count += 1;
}
}
}
printf("共%d种结果\n", count);
}
16.鸡兔同笼问题(一重for循环)
# include <stdio.h>
main()
{
int chicken, rabbit, count;
count = 0;
for (rabbit = 1; rabbit <= 95; rabbit++)
{
chicken = 98 - rabbit;
if (rabbit*4 + chicken*2 == 386 && rabbit + chicken == 98)
{
printf("rabbit:%d\nchicken:%d\n", rabbit, chicken);
printf("-------------------------\n");
count += 1;
}
}
printf("共%d种结果\n", count);
}
17.百元买白鸡
# include <stdio.h>
main()
{
int g, m, x, count;
count = 0;
for (g = 1; g <= 19; g++)
{
for (m = 1; m <= 32; m++)
{
x = 100 - m - g;
if ((g*5 + m*3 + x/3 == 100) && (x % 3 == 0))
{
printf("公鸡:%d\n母鸡:%d\n小鸡:%d\n", g, m, x);
printf("-------------------------\n");
count += 1;
}
}
}
printf("共%d种结果\n", count);
}
18.百元换成10元5元1元,换50张问题
# include <stdio.h>
main()
{
int a, b, c, count;
count = 0;
for (a = 1; a <= 5; a++)
{
for (b = 1; b <= 10; b++)
{
c = 50 - a - b;
if (a*10 + b*5 + c == 100)
{
printf("十元张数:%d\n五元张数:%d\n一元张数:%d\n", a, b, c);
printf("-------------------------\n");
count += 1;
}
}
}
printf("共%d种结果\n", count);
}
19.输出乘法表
# include <stdio.h>
main()
{
int i, j;
for (i = 1; i <= 9; i++)
printf("%4d", i);
printf("\n");
for (i = 1; i <= 9; i++)
printf(" -");
printf("\n");
for (i = 1; i <= 9; i++)
{
printf("\n");
for (j = i; j <= i*9; j += i)
printf("%4d", j);
}
printf("\n");
}
20.富豪换钱问题
# include <stdio.h>
main()
{
//解法一:p_f = 0.01 * pow(2, 30) f_p = 30 * 100000
int i;
float f_p, p_f;
f_p = 100000;
p_f = 0.01;
for (i = 2; i <= 30; i++)
{
f_p += 100000;
p_f *= 2;
}
printf("富豪给陌生人:%f元\n陌生人给富豪:%f元\n", f_p, p_f);
}
21.找车牌
# include <stdio.h>
# include <math.h>
main()
{
// a1,a2,a3,a4分别表示千位数,百位数,十位数,个位数
int a1, a2, a3, a4, n, i;
for (i = 32; i <= 99; i++)
{
n = pow(i, 2);
a1 = n / 1000; // 利用整除求千位数
a2 = (n - a1*1000) / 100; // 先将千位数去除(减去)后计算百位数
a3 = (n - a1*1000 - a2*100) / 10;
a4 = n - a1*1000 - a2*100 - a3*10;
if ((a1 == a2 && a3 == a4) && (a1 != a3)) // 带入条件1,2判断
printf("该车牌号为:%d\n", n);
}
}
22.礼炮问题
//解法一
# include <stdio.h>
# include <math.h>
main()
{
// 初始化变量和标记值flaga~c
int a, b, c;
int number;
int flaga, flagb, flagc;
a = b = c = 0;
number = 0;
// ABC三艘军舰放完礼炮各需要5*21秒,6*21秒,7*21秒
while (c <= 21*7) // 因为c不断增1且到达21*7所需时间最晚,所以做循环结束条件
{
if (a <= 21*5)
{
a += 1;
if (a % 5 == 0)
flaga = 1; // flaga标记当前是否是鸣炮时刻
else
flaga = 0;
}
if (b <= 21*6)
{
b += 1;
if (b % 6 == 0)
flagb = 1;
else
flagb = 0;
}
if (c <= 21*7)
{
c += 1;
if (c % 7 == 0)
flagc = 1;
else
flagc = 0;
}
printf("%d\t%d\t%d\n", flaga, flagb, flagc);
if (flaga + flagb + flagc != 0) // 可以听到一次炮声,计数变量+1
number += 1;
}
printf("观众可以听见%d声礼炮\n", number);
}
//解法二
#include<stdio.h>
main()
{
int number, i;
number = 0;
for(i = 0; i < 21*7 ; i++)
{
if(i % 5 == 0 && i <= 21*5)
{
number++;
continue;
}
if(i % 6 == 0 && i <= 21 * 6)
{
number++;
continue;
}
if(i % 7 == 0)
{
number++;
}
}
printf("观众可以听见%d声礼炮\n", number);
}
23.二维矩阵转置
# include <stdio.h>
main()
{
int i, j;
int num1[2][3] = {{1,2,3},{4,5,6}};
int num2[2][3];
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
num2[j][i] = num1[i][j];
printf("%d", num1[i][j]);
}
printf("\n");
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
{
printf("%d", num2[i][j]);
}
printf("\n");
}
}
24.互换最大最小元素位置
# include<stdio.h>
main()
{
int num[10], temp, i, max, min;
max = 0;
min = 0;
printf("enter num[10]:");
for (i = 0; i < 10; i++)
scanf("%d", &num[i]);
for(i = 1; i < 10; i++)
{
if(num[max] < num[i])
max=i;
if(num[min] > num[i])
min=i;
}
printf("\n");
temp = num[max];
num[max] = num[min];
num[min] = temp;
for(i = 0; i < 10; i++)
printf("%-3d", num[i]);
}
25.找出3个字符串中最大字符串
# include<stdio.h>
# include <string.h>
main()
{
char s1[3][10];
char string[10];
int i;
printf("enter s1[3][10]:");
for (i = 0; i < 3; i++)
gets(s1[i]);
if (strcmp(s1[0], s1[1]) > 0)
strcpy(string, s1[0]);
else
strcpy(string, s1[1]);
if (strcmp(s1[2], string) > 0)
strcpy(string, s1[2]);
printf("max:%s\n", string);
}