C语言成长学习题(八)

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

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 void main(void)
 5 {
 6     int sign = 1, i = 1;
 7     float next = 1.0, pi, sum = 0.0;
 8 
 9     while (fabs (next) >= 1e-4)
10     {
11         sum = sum + next;
12         sign = -sign;
13         i = i + 2;
14         next = (float)sign / i;
15     }
16     pi = sum * 4;
17     printf("pi = %f\n", pi);
18 }    

 

结果:

pi = 3.141397

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

 

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

 1 #include <stdio.h>
 2 #include <conio.h>
 3 
 4 void main(void)
 5 {
 6     int i = 0, flag = 0;
 7     float a, b, result;
 8     char sym;
 9 
10     clrscr();
11     printf("请输入第一题,用3#3退出.\n");
12     scanf("%f%c%f", &a, &sym, &b);
13     while (sym != '#')
14     {
15         switch (sym)
16         {
17             case '+': result = a + b; break;
18             case '-': result = a - b; break;
19             case '*': result = a * b; break;
20             case '/':
21                 if (b == 0)
22                     flag = 1;
23                 else
24                     result = a / b;
25                 break;
26             default: flag = 2;
27         }
28         if (flag == 0)
29         {
30             printf(%f%c%f = %f\n", a, sym, b, result);
31             i++;
32         }
33         else if (flag == 1)
34             printf("除数为0!\n");
35         else if (flag == 2)
36             printf("%c是非法运算符!\n", sym);
37         printf("请输入第%d题,用3#3退出.\n", i);
38         scanf("%f%c%f", &a, &sym, &b);
39     }
40 }

 

结果:

请输入第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)其它字符不转换

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     char ch;
 6     
 7     printf("Input data: ");
 8     do
 9     {
10         ch = getchar();
11         if (ch >= 'A' && ch <= 'Z')
12             ch = ch + 32;
13         if (ch >='a' && ch <='z')
14             ch = ch + 2;
15         if (ch > 'z')
16             ch = ch - 36;
17         putchar(ch);
18     }while (ch != '#');
19 }

 

结果:

Input data: UfYr'q 2 yLb 3?#

what's 2 and 3?#

 

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

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int i, a;
 6     
 7     printf("Input a(>1): ");
 8     scanf("%d", &a);
 9     for (i = 2; i <= a - 1; i++)
10         if (a % i == 0) break;
11     if (i > a-1)
12         printf("%d is a prime number.\n", a);
13     else
14         printf("%d is not a prime number.\n", a);
15 }

 

结果:

(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!的值。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int n;
 6     float fac = 1.0, sum = 0.0;
 7 
 8     for (n = 1; n <= 20; n++)
 9     {
10         fac = fac * n;
11         sum = sum + fac;
12     }
13 
14     printf("sum = %e\n", sum);
15 }

 

结果:

sum = 2.56133e+018

posted @ 2015-12-07 00:03  zer-o  阅读(494)  评论(0编辑  收藏  举报