三十一、编写程序,用公式∏/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
原文:http://www.cnblogs.com/zero-jh/p/5024835.html