int i,j;
for(i=1;i<=9;i++) {
for(j=1;j<=i;j++) {
printf(\ putchar(' '); }
putchar('\\n'); } }
12.输入一串数字,直到输入一个0为止,统计(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负数的平均值(原题有误,误为一串字符)。 #include
int a,n=0,m=0,ps=0,ns=0;
printf(\ do {
scanf(\ if(a>0) {
ps+=a; n++; }
else if(a<0) {
ns+=a; m++; }
}while(a!=0); ps/=n; ns/=m;
printf(\ printf(\}
13.一个整数等于该数所有因子之和,则称该数是一个完数。例如,6和28都是完数。因为6=1+2+3,28=1+2+4+7+14。输出1000以内的所有完数。 #include
int i,j,s;
for(i=1;i<1000;i++) {
s=1;
for(j=2;j<=i/2;j++) {
if(i%j==0)
s+=j; }
if(s==i) //是完数输出各因数 {
printf(\ for(j=2;j<=i/2;j++) {
if(i%j==0)
printf(\ }
printf(\ } } }
14.编写程序,按下列公式计算e的值(精度为1.0e-6)。
e?1?1111????? 1!2!3!n! #include
void main() {
int i=1; long t=1; double e=1.0; do {
t*=i; e+=1.0/t; i++;
}while(1.0/t>1.0e-6); printf(\}
32
15.用二分法求方程2x-4x+3x=0 在(-10,10)附近的根(二分法:先找到a、b,使f(a)、f(b)异号,说明在区间(a,b)内一定有零点,然后求f((a+b)/2)<0,则在区间((a+b)/2,b)内有零点,按上述方法再求盲从该区间中点的函数值,通过每次把f(x)的零点所在的小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即
是方程的根)。
2
分析:方程可以写为x(2x-4x+3)=0,可以知道0是f(x)的零点,是一个根,另外两个根都
22
是(2x-4x+3)的零点,若x<=0,f(x)= (2x-4x+3)>0,在程序中从0求使f(x)变号的x值。f(0)=3,且二次系数a=2>0,开口向上,没有其它的零点,所以题目是没有其它的解的。
实验5 循环结构程序设计 6.程序填空。
⑴求出100以内的整数中最大的可被13整除的数是哪一个数。 #include
int i;
for(i=100;i>0;i--) {
if(i==0)break; }
printf(\ return 0; }
⑵以下程序用“辗转相除法”来求两个正整数的最大公约数,请填空。 #include
int m,n,r; do {
printf(\ scanf(\ }while(m<=0||n<=0); do {
r=m%n;m=n;n=r; }while(r!=0); printf(\ return 0; }
⑶以下程序打印如下图案,程序运行后输入4给变量n,请填空。
#include
int i,j,n;
printf(\ scanf(\&n); for(i=1;i<=n;i++) //控制输出前年n行 {
for(j=1;j<=10;j++)putchar(S);
for(j=1;j<=n-i;j++)putchar(S);//每行的启始空格越来越少 for(j=1;j
for(i=1;i<=n-1;i++) //控制输出后n-1行 {
for(j=1;j<=10;j++)putchar(S);
for(j=1;j<=i;j++)putchar(S); //每行的启始空格越来越多 for(j=1;j<(n-i)*2;j++)putchar('*');//每行的'*'越来越少 putchar('\\n'); } }
注:各星号之间带空格:
程序如下:
#include
int i,j,n;
printf(\ scanf(\
for(i=1;i<=n;i++) //控制输出前n行 {
for(j=1;j<=10;j++)putchar(S);
for(j=1;j<=n-i;j++){putchar(S);putchar(S);}//每行的启始空格越来越少 for(j=1;j
for(i=1;i<=n-1;i++) //控制输出后n-1行 {
for(j=1;j<=10;j++)putchar(S);
for(j=1;j<=i;j++){putchar(S);putchar(S);}//每行的启始空格越来越多 for(j=1;j<(n-i)*2;j++){putchar('*');putchar(' ');}//每行的'*'越来越少 putchar('\\n'); } }
7.编程。 ⑴求:
?k??k111001002
#include
int i,k;