例题1.3:
求N(例如100)以内自然数的和,并输出结果。
【分析】
该问题可以用等差数列求和公式,也可用(for,while,do…while循环累加),对这个例题还可加以修改,用(函数递归)的方法进行累加,实现倒序累加。
源码:
#include<stdio.h>
int plus(N);
int main()
{
int i = 1,sum = 0,N;
printf("Please enter N number :\n");
scanf("%d",&N);
/* while(i <= N)
{
sum = sum + i;
i++;
}*/
sum=plus(N);
printf("Sum.of integers 1-%d: %d\n",N,sum);
return 0;
}
int plus(N)
{
if(N == 1)
{
return 1;
}
else
{
return plus(N-1) + N;
}
}
测试1:
测试2:
相仿例题1.3:
本题要求编写程序,计算交错序列 1- 2 3 \frac{2}{3} 32+ 3 5 \frac{3}{5} 53- 4 7 \frac{4}{7} 74+ 5 9 \frac{5}{9} 95- 6 11 \frac{6}{11} 116+… 的前N项之和,结果保留三位小数
【分析】
通过观察交错序列,可以发现分子都为(1,2,3…N)的等差数列,分母呈(1,3,5,7,9…2N-1)的等差数列。同时,每个分式的符号呈(1,-1,1…)的等比数列,公比为-1。
源码:
#include<stdio.h>
int main()
{
int m = 1,N,b = 1;
double sum = 0;
double temp ,i;
printf("Please enter N:\n");
scanf("%d", &N);
for(i = 1.0; i <= N; i++)
{
temp = b * (i/m); //在i/m中必须保证有一边是小数
sum += temp;
b = -b;
m += 2;
}
printf("%.3f \n", sum);
return 0 ;
}
注意:
在做题过程中注意浮点型的值,特别是在i/m中必须保证有一边是小数,否则在输出结果时系统会四舍五入。
测试1:
测试2:
例题1.6:
用C编程输出一个九九乘法表。
【分析】
本例题只需要运用镶套(for循环)语句即可达到目的
源码:
#include<stdio.h>
int main()
{
printf(" Multiplication Table \n");
int i, j;
for(i = 1;i <= 9; i++)
{
for(j = 1; j <= i; j++)
{
printf("%d*%d=%d \t",i,j,i*j);
}
printf("\n");
}
}
/*
int main()
{
printf(" Multiplication Table \n");
for(int i = 1;i <= 9; ++i)
{
for(int j = 1;j < i; ++j)
{
printf("\t");
}
for(int j = i;j <= 9; ++j)
{
printf("%d \t", i*j);
}
printf("\n");
}
}*/
输出如下:
相仿例题1.6:
请使用嵌套语句输出金字塔形状与平行四边形形状。
【分析】
用嵌套语句输出金字塔形状与平行四边形形状,要考虑3点:
- 首先要控制输出三角形与平行四边形的行数,
- 其次控制三角形与平行四边形的空白位置,
- 最后是将其显示。
源码:
#include<stdio.h>
int addone();
int addone()
{
int i ,j ,k ,a;
printf("please enter triangle line : \n");
scanf("%d" ,&a);
for(i = 1;i <= a ;i++)
{
for(j = 1;j <= a-i ;j++)
{
printf(" ");
}
for(k =1;k <= 2*i-1 ;k++) //如果把 i 改为 a 则为平行四边形
{
printf("*");
}
printf("\n");
}
}
int main()
{
int i ,m ,s ,b;
printf("please enter parallelogram line : \n");
scanf("%d" ,&i);
for(m = 1 ;m <= i ;m++)
{
for(s=1 ;s <= i-m ;s++)
{
printf(" ");
}
for(b = 1 ;b <= 2*i-1 ;b++) //important
{
printf("*");
}
printf("\n");
}
printf("\n");
addone();
return 0;
}
测试1:
测试2: