116 输出两个数中的最大值
设计一个求最大值的函数,在屏幕上输入两个数,输出其中的最大值。
int max(int a, int b)
{
int temp;
//此处可以改为:temp = a > b? a:b;
if(a > b)
{
temp = a;
}
else
{
temp = b;
}
return temp;
}
main()
{
int a, b, c;
scanf("%d%d", &a, &b);
c = max(a, b);
printf("max = %d\n", c);
printf("\n");
}
117 判断素数
编写一个判断素数的函数,实现输入一个整数,使用判断素数的函数进行判断!
将判断素数的代码模块化,更容易移植
int sprime(int x)
{
int i, flag = 1;
for(i = 2; i <= x / 2; i++)
{
if(x % i == 0)
{
flag = 0;
}
}
return flag;
}
main()
{
int x;
scanf("%d", &x);
if(sprime(x))
{
printf("该数是素数\n");
}
else
{
printf("该数不是素数\n");
}
printf("\n");
}
118 递归解决年龄问题
有5个人坐一起,问等5个人多大?他说比第4个人大2岁,问第4个人,他说比第三人大2岁,问第3个人,他说比第二人大2岁,问第2个人,他说比第一人大2岁,问最后一人,他说是10岁,编写程序,当输入第几个人时求出其对应年龄。
首先要明确递归要有一个最终界限,不然就会无止尽执行下去,这里的界限就是第一个时,年龄为10;,这样就采取倒推方式,来进行编写代码。
int age(int n)
{
int m;
if(n == 1)
{
m = 10;
}
else
{
m = age(n - 1) + 2;
}
return m;
}
main()
{
int n, m;
scanf("%d", &n);
m = age(n);
printf("第%d个,age = %d", n, m);
printf("\n");
}
119 递归解决分🐟问题
A,B,C,D,E5个人在某天捕鱼,第二天A第一个醒来,把🐟分成5份,丢掉一个,拿走自己一份。B第二个醒来,把🐟分成5份,丢掉一个,拿走自己一份。C,D,E也是如此,请问至少补几条🐟??
int total(int n)
{
static int i = 0;
if(n == 1)
{
do
{
i++;
}while(i % 5 == 0);
return (i + 1);
}
else
{
int t;
do
{
t = total(n - 1);
}while(t % 4 != 0);
return (t / 4 * 5 + 1);
}
}
main()
{
int fish;
fish = total(5);
printf("fish = %d", fish);
printf("\n");
}
120 小数分离
利用数学函数实现以下功能:从键盘中输入一个小数,将其分解为整数部分和小数部分,并将其显示在屏幕上。
使用modf()函数将小数分解,将分解出的小数部分作为函数返回值赋给value,整数部分赋值给tail
main()
{
float num;
double value, tail;
scanf("%f", &num);
tail = modf(num, &value);
printf("%f %f", value ,tail);
printf("\n");
}
121 求任意数的n次幂
利用数学函数,实现以下功能:从键盘中输入底数及次幂,求出从该次幂开始的连续5个结果,要求每次次幂数加1。
#include <stdio.h>
void main()
{
int d;
int t;
int i;
scanf("%d", &d);
scanf("%d", &t);
for(i = t; i < t + 5; i++)
{
printf("%f\n", pow(d, i));
}
}
122 固定格式输出当前时间
编程实现将当前时间用以下形式输出:
星期 月 日 小时:分:秒 年
头文件<time.h> 声明一些处理日期与时间的类型和函数
struct tm:用于保存日历时间的各个构成部分
time_t time(time_t tp):
char asctime(const struct tm *tp):
struct tm *localtime(const time_t *tp)
方式一:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
time_t p;
time(&p);
printf("%s", asctime(localtime(&p)));
}
方式二:
#include <stdio.h>
// #include <stdlib.h>
#include <time.h>
void main()
{
struct tm *p;
time_t local;
local = time(NULL);
p = localtime(&local);
printf("tm_year = %d\n", p->tm_year + 1900);
printf("tm_mon = %d\n", p->tm_mon + 1 );
printf("tm_mday = %d\n", p->tm_mday);
printf("tm_hour = %d\n", p->tm_hour);
printf("tm_min = %d\n", p->tm_min);
printf("tm_yday = %d\n", p->tm_yday);
//printf("%s", asctime(localtime(&p)));
}
123 设计函数计算学生平均身高
输入学生数并逐个输入学生的身高,然后输出身高的平均值
#include <stdio.h>
void main()
{
int i;
int n;
int a[100];
int sum =0;
float avg = 0;
printf("需要学生数:");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for(i = 0; i < n; i++)
{
sum += a[i];
}
printf("sum = %d", sum);
avg = sum / n;
printf("avg = %f", avg);
}
124 求数组元素中的最小值
从键盘中输入数组元素的个数(不大于20),根据输入的个数相应个数的数值,并显示出输入数值中的最小值。
#include <stdio.h>
void main()
{
int i;
int n;
int a[100];
int min;
printf("输入个数:");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
min = a[0];
for(i = 1; i < n; i++)
{
if(a[i] < min)
{
min = a[i];
}
}
printf("min = %d", min);
}
125 打印 1 ~ 5 的阶乘
在屏幕输出1 ~ 5 的阶乘数
#include <stdio.h>
void func(int n)
{
int sum = 1, i;
for(i = 1; i <= n; i++)
{
sum = i * sum;
}
printf("%d ! = %d\n", n, sum);
}
void main()
{
int i;
for(i = 1; i <= 5; i++)
{
func(i);
}
}
126 求最大公约数和最小公倍数
设计2个函数,分别计算2个整数的最大公约数和最小公倍数,并在主函数中将结果输出
最大公约数:
辗转相除法:用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。
最小公倍数:
最小公倍数=两数的乘积/最大公约(因)数;
#include <stdio.h>
int gcd(int a, int b)
{
int c;
c = a % b;
if(c == 0)
{
return b;
}
else
{
gcd(b, c);
}
}
int lcm(int a, int b, int c)
{
return (a * b) / c;
}
void main()
{
int a, b, c, d;
scanf("%d %d", &a, &b);
if(a > b)
{
c = gcd(a, b);
}
else
{
c = gcd(b, a);
}
d = lcm(a, b, c);
printf("最大公约数%d\n", c);
printf("最小公倍数%d", d);
}