C语言编程小练习
1.1降序输出1~30中的所有偶数。
#include<stdio.h>
int main(void)
{
int i;
int a = 2;
for(i = 30; i>0; i--)
if (i % a ==0)
printf("%3d", i);
return 0;
}
1.2求1*2*3……*10的值。
#include<stdio.h>
int main(void)
{
int i, mul;
mul = 1;
for (i = 1; i <= 10; i++)
mul *= i;
printf("%d", mul);
return 0;
}
1.3求1! + 2! + 3! +……+10!的值。
1 #include<stdio.h>
2 int main(void)
3 {
4 int i, mul, mul2;
5 mul = 1;
6 mul2 = 0;
7 for (i = 1; i <= 10; i++) {
8 mul = mul * i;
9 mul2 += mul;
10 }
11 printf("%d", mul2);
12 return 0;
13 }
1.4根据用户输入的正整数a(1-9)和正整数n,求a + aa + aaa……+a….aa(n个a)的值,例如当用户输入的正整数为6时,n为5时,6 + 66 +666 +6666 + 66666 = 74070 。
1 #include<stdio.h>
2 int main(void)
3 {
4 int a, n, i, t, sum;
5 sum = 0;
6 t = 0;
7 printf("请用空格间隔输入a和n:");
8 scanf("%d %d",&a, &n);
9 for (i = 1; i<=n; i++) {
10 t = t * 10 + a;
11 sum += t;
12 }
13 printf("sum = %d\n", sum);
14 return 0;
15 }
1.5根据用户输入的正整数n,求1 + 1/3 + 1/5 + ……的前n项之和。
1 #include<stdio.h>
2 int main(void)
3 {
4 int i,a, n;
5 double sum = 0;
6 scanf("%d", &n);
7 for (i = 1, a = 1; i <= n;i++, a +=2)
8 sum += 1.0/a;
9
10 printf("sum = %lf\n", sum);
11 return 0;
12 }
1.6根据用户输入的正整数n,求1 - 1/2 + 1/3 - 1/4 + (−1)n+1 ( − 1 ) n + 1 /n的值。
1 #include<stdio.h>
2 int main(void)
3 {
4 int i, j, n;
5 double sum = 0;
6 scanf("%d", &n);
7 for (i = 1 ; i <= n; i++) {
8 if ( i % 2)
9 sum +=1.0 / i;
10 else
11 sum -= 1.0 / i;
12 }
13 printf("sum = %f\n", sum);
14 return 0;
15 }
1.7求2/1 + 3/2 + 5/3 + 8/5 + ……的前n项之和。
1 #include<stdio.h>
2 int main(void)
3 {
4 int i ,n, f1, f2, f3 ;
5 f1 = 1;
6 f2 = 1;
7 f3 = 0;
8 double sum = 0;
9 printf("Please enter integer :");
10 scanf("%d", &n);
11 for (i =1; i <= n; i++) {
12 f3 = f1 + f2;
13 f1 = f2;
14 f2 = f3;
15 sum += (double)f2 / f1;
16 }
17 printf("sum = %lf\n", sum);
18 return 0;
19 }
1.8求1 - 2/3 + 3/5 - 4/7 + 5/9 - 6/11 …… 的前n项之和。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 int i, j, n;
6 double sum = 0;
7 scanf("%d", &n);
8 for (i = 1, j = 1; i <= n; j += 2, i++) {
9 if ( i % 2)
10 sum += (double)i / j;
11 else
12 sum -= (double)i / j;
13
14 }
15 printf("%lf\n", sum);
16 return 0;
17 }
1.9求数列1,2,3,5,8,13,21,34,……中第n项的值。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 int i, n, f1, f2, f3, sum;
6 scanf("%d", &n);
7 f1 = 1;
8 f2 = 1;
9 f3 = 1;
10 for (i = 2; i <= n; i++) {
11 f3 = f2 + f1;
12 f1 = f2;
13 f2 = f3;
14 }
15 printf("%d\n", f3);
16 return 0;
17 }
1.10输出数列0,1,2,3,6,11,20,37,68,……的前n项,每行输出5项。(每行输出多少项可自行调整)。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 int i, n, f1, f2, f3, f4;
6 printf("Please enter integer n(n >= 4):");
7 scanf("%d", &n);
8 f1 = 0;
9 f2 = 1;
10 f3 = 2;
11 printf("%8d%8d%8d", f1, f2 ,f3);
12 for ( i = 4 ; i <= n; i++) {
13 f4 = f1 + f2 + f3;
14 printf("%8d", f4);
15 if ( i % 5 == 0 )
16 printf("\n");
17 f1 = f2;
18 f2 = f3;
19 f3 = f4;
20 }
21 return 0;
22 }
1.11输入15个字符,统计其中英文字母、数字字符、空格和其他字符的个数。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 char ch;
6 int i, a, b,c, n ;
7 a = 0;
8 b = 0;
9 c = 0;
10 n = 0;
11 printf("Please input 15 characters:");
12 for (i = 1; i <= 15; i++) {
13 scanf("%c", &ch);
14 if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
15 a++;
16 else if (ch >= '0' && ch <= '9')
17 b++;
18 else if (ch == ' ')
19 c++;
20 else
21 n++;
22 }
23 printf("letters = %d\n", a);
24 printf("numbers = %d\n", b);
25 printf("spaces = %d\n", c);
26 printf("others = %d\n", n);
27
28 return 0;
29 }
1.12输出2000~2100年之间所有的闰年。每行输出5项(可自行调整)。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 int year;
6 int a = 0;
7 for (year = 2000; year <=2100; year ++){
8 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
9 printf("%5d", year);
10 a++;
11 if(a % 5 ==0)
12 printf("\n");
13 }
14 }
15 return 0;
16 }