***自己写的,只是留个记录,有误请指正***
1.计算面积:输入r1,r2,求出圆形垫片的面积。
#define _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define PI 3.14
//定义面积计算函数
float Area_Cal(float r)
{
return PI * r * r;
}
float Area_Cal(float r);
int main()
{
printf("这是一个计算面积:输入r1,r2,求出圆形垫片的面积的程序...\n\n");
float r1, r2;
printf("请输入两个垫片的半径r1,r2: ");
scanf("%f,%f", &r1, &r2);
printf("\n垫片的面积 = %.2f\n", fabs(Area_Cal(r1) - Area_Cal(r2)));
return 0;
}
2.找到10000以内所有完数,其中判断完数的功能用函数实现。 (所谓完数是指它恰好等于除它本身之外的因子之和)
#define _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include <stdio.h>
void IsWanshu()
{
int i, j;
int count = 0, sum;
for (i = 1; i <= 10000; i++) //穷举10000以内的每一个自然数
{
sum = 0; //给求和累加器变量sum赋初值
for (j = 1; j < i; j++) //穷举i的所有可能因子(除它本身之外)
{
if (i % j == 0) //判断j是否是i的一个因子
sum += j; //计算i的所有因子之和(除它本身之外)
}
if (i == sum) //判断自然数n是否为完数
{
printf("%6d", i);
count++;
if (count % 5 == 0) //控制一行五个
printf("\n");
}
}
printf("\n\n10000以内完数的个数为:%d\n", count);
}
int main()
{
printf("这是一个寻找10000以内完数的个数的程序...\n\n");
void IsWanshu();
IsWanshu();
return 0;
}
3.输入两个正整数m,n,求其最大公约数和最小公倍数。
#define _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include<stdio.h>
#include<string.h>
int max_gys(int u, int v);
int min_gbs(int u, int v, int h);
int max_gys(int u, int v) //定义计算最大公约数的函数
{
int temp, r; //r作为余数的记录值
if (u > v)
{
//此处让u,v互换,目的是让较大的u作为被除数,统一使用u/v来计算
temp = u;
u = v;
v = temp;
}
while ((r = u % v) != 0)
{
u = v; //让初数v变成被除数u
v = r; //让余数r变成初数v
}
return v;
}
int min_gbs(int u, int v, int h)
{
return (u * v / h); //此处的h代表最大公约数
}
int main()
{
printf("这是一个使用函数来求最大公约数和最小公倍数的程序....\n\n");
printf("\n请输入需要求解的两个整数u,v: ");
int u, v;
while (2 == scanf("%d,%d", &u, &v))
{
int h = max_gys(u, v);
printf("\n最大公约数为:%d\n", h);
printf("最小公倍数为:%d\n", min_gbs(u, v, h));
printf("\n结束计算请输入q: ");
}
printf("\n计算结束..\n");
return 0;
}
4.一个5位数,判断他是否为回文数。例如12321为回文数。
#define _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include<stdio.h>
//定义回文数判断函数
void Is_huiwen(long n)
{
long ge, shi, qian, wan;
wan = n / 10000;
qian = n % 10000 / 1000;
shi = n % 100 / 10;
ge = n % 10;
if (ge == wan && shi == qian)/*个位等于万位并且十位等于千位*/
printf("这个数是回文数.\n");
else
printf("这个数不是回文数.\n");
}
int main()
{
long x;
printf("请输入一组5位数: ");
scanf("%ld", &x);
Is_huiwen(x);
return 0;
}
5.从键盘键入任意一个正整数,输出该数的逆序数。
#define _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include<stdio.h>
#include<string.h>
//定义逆序函数
void reve_num(int num)
{
printf("\n逆序输出的数为:");
while (num > 0)
{
printf("%d", num % 10);
num = num / 10;
}
printf("\n");
}
void reve_num(int num);
int main()
{
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
reve_num(num);
return 0;
}
6.分析下面程序运行效果。
(1)
#include<stdio.h>
void varfunc()
{
int var = 0;
static int static_var = 0;
printf("\40:var equal %d\n", var);
printf("\40:static var equal %d\n", static_var);
printf("\n");
var++;
static_var++;
}
int main()
{
int i;
for (i = 0; i < 3; i++)
{
varfunc();
}
return 0;
}
运行效果如下:
(2)
#include<stdio.h>
int main()
{
int i, num;
num = 2;
for (i = 0; i < 3; i++)
{
printf("\40:the num equal %d\n", num);
num++;
{
static int num = 1;
printf("\40:the internal block num equal %d\n", num);
num++;
}
}
return 0;
}
运行效果如下: