您的位置:首页 > 编程语言 > C语言/C++

C语言成长学习题(八)

2015-12-07 00:03 453 查看
三十一、编写程序,用公式∏/4=1-1/3+1/5-1/7+...,求∏的近似值,直到最后一项的绝对值小于10-4为止。

#include <stdio.h>
#include <math.h>

void main(void)
{
int sign = 1, i = 1;
float next = 1.0, pi, sum = 0.0;

while (fabs (next) >= 1e-4)
{
sum = sum + next;
sign = -sign;
i = i + 2;
next = (float)sign / i;
}
pi = sum * 4;
printf("pi = %f\n", pi);
}


结果:

pi = 3.141397

  fabs(x)是库函数,其功能是求x的绝对值。

三十二、编写用人机对话形式进行加、减、乘、除运算的程序。用户没输入一次运算数和运算符,系统输出响应的结果,当输入的运算符为“#”时结束循环。

#include <stdio.h>
#include <conio.h>

void main(void)
{
int i = 0, flag = 0;
float a, b, result;
char sym;

clrscr();
printf("请输入第一题,用3#3退出.\n");
scanf("%f%c%f", &a, &sym, &b);
while (sym != '#')
{
switch (sym)
{
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/':
if (b == 0)
flag = 1;
else
result = a / b;
break;
default: flag = 2;
}
if (flag == 0)
{
printf(%f%c%f = %f\n", a, sym, b, result);
i++;
}
else if (flag == 1)
printf("除数为0!\n");
else if (flag == 2)
printf("%c是非法运算符!\n", sym);
printf("请输入第%d题,用3#3退出.\n", i);
scanf("%f%c%f", &a, &sym, &b);
}
}


结果:

请输入第1题,用3#3退出.

2*3.5

2.000000*3.5000000 = 7.000000

请输入第2题,用3#3退出.

3/0

除数是0!

请输入第2题,用3#3退出.

5.5&4.7

&是非法字符!

请输入第2题,用3#3退出.

3#3

三十三、将从键盘输入一串字符(用#结束输入)按如下规则进行转换:

    (1)如果输入的字符为大写字母,则先转换为对应的小写字母。

    (2)将a转换为c,b转换为d,...,x转换为z,y转换为a,z转换为b。

    (3)其它字符不转换

#include <stdio.h>

void main(void)
{
char ch;

printf("Input data: ");
do
{
ch = getchar();
if (ch >= 'A' && ch <= 'Z')
ch = ch + 32;
if (ch >='a' && ch <='z')
ch = ch + 2;
if (ch > 'z')
ch = ch - 36;
putchar(ch);
}while (ch != '#');
}


结果:

Input data: UfYr'q 2 yLb 3?#

what's 2 and 3?#

三十四、判断从键盘输入的自然数(大于1),是不是素数。

#include <stdio.h>

void main(void)
{
int i, a;

printf("Input a(>1): ");
scanf("%d", &a);
for (i = 2; i <= a - 1; i++)
if (a % i == 0) break;
if (i > a-1)
printf("%d is a prime number.\n", a);
else
printf("%d is not a prime number.\n", a);
}


结果:

(1)Input a(>1): 11

  11 is a prime number.

(2)Input a(>1): 15

  15 is not a prime number.

三十五、求1!+2!+3!+...+20!的值。

#include <stdio.h>

void main(void)
{
int n;
float fac = 1.0, sum = 0.0;

for (n = 1; n <= 20; n++)
{
fac = fac * n;
sum = sum + fac;
}

printf("sum = %e\n", sum);
}


结果:

sum = 2.56133e+018
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: