【解】输入x,按公式计算y。这可用一个嵌套的if语句分段判断并计算出y的值。然后输出y值。程序如下:
# include<stdio.h>
main()
{ int x,y;/*变量定义*/
printf(”输入一个整数”);
scanf(”%d”,&x);
if( x<=l) y=X;
else if(x<10)y=2*x-l;
else y=3*X-11;
printf(”y=%d\ n”, y);
}
4.编一个程序,输入三个单精度数,输出其中最小数。
【解】设最小数存于变量min中,为求三个数中的最小数,可分以下多步完成,先预置min为x,然后分别将其余两个数逐一与min比较,当它们中的某个值比存于min中的值更小时,就用它们更新min。写出程序如下:
# include
main()
{ float X,y,Z,min;/*变量定义*/
printf("输入三个单精度浮点数");
scanf("%f%f%f", &x,&y,&Z);
min =x;
if(min>y) min= y;
if(min>Z) min=Z;
printf("浮点数%f,%f,%f中的最小值是%f\n",X,y,Z,min);
}
5.编一个程序,求出所有各位数字的立方和等于1099的3位数。
【解】找出所有各位数字的立方和等于1l99的3位整数。 3位整数是100至999范围内的整数,设分别用a,b,c存储3位数的百位、十位和个位的数字,程序用三重循环求出a,b,c的立方和为1099的3位数a*100+b*10+c。程序如下:
# include
main()
{ int a,b, c;/*变量定义*/
for(a=1; a<=9;a++)
for(b=0; b<=9; b++)
for(c=0;c<=9;c++)
if(a*a*a+b*b*b+c*c*c==1099)
printf("%d\n",(10*a+b)*10+c);
}
若用一个变量i表示3位数,循环体将3位数变量i分拆出它的百位、十位和个位共3个数字,然后判这三个数字的立方和是否是1099,若是就输出该变量的值。程序如下:
# include
main()
{ int i,a,b, c;/*变量定义*/
for (i=100;i<=999;i++) {
a=i/100;
b=(i0)/10; /*或b=(i/10)%l0*/
c=i;
if(a*a*a+b*b*b+c*c*c==1099)
printf("%d\n", i);
}
}
6.编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。
【解】输入10个整数,统计其中正数、负数和零的个数。程序引入3个计数器变量,用于统计大于以小于0和等于0的整数的个数。开始时,这3个计数器都置0,然后用循环逐一输入10个整数,并判定当前输入的整数是大于0,或小于0,或等于0,并按判定结果累加相应计数器。最后,程序输出这3个计数器的值。程序如下:
# include
main()
{ int i,d,n,z,p;/*变量定义*/
n=Z=p=0;
for(i=1;i<=10;i++) {
print(" 输入第%d个整数", i);
scanf("%d",&d);
if(d<0)n++;
else if(d>0)p++;
else z++;
}
printf("负数有%d个,正数有%d个,零有%d个。\n",n,p,z);
}
7.编程序,按下列公式计算e的值(精度为1e-6):
e=1+1/1!+1/2!+1/3!+…+1/n!+…
【解】按e的幂级数展开式计算e的值。这是典型的求级数和计算问题。通常采用逐项计算,并累计的方法。计算新的项时,可用上一轮循环计算出的项,这能提高程序的效率。循环直至当前项的值小于精度要求结束。程序如下:
# include
main()
{ double e,t,i;/*变量定义*/
e=0.0;t=1.0;i=1.0;
while(t>=1.0e-6) {
e+=t;
t/= i;
i+= 1.0;
}
printf(”e=%.6f\n”, e);
}
8.编程序,按下列公式计算y的值(精度为1e-6):
y=∑1/r*r+1
【解】按所给公式计算数列的和。类似上一小题的解,逐项计算并累计。程序如下:
# include
main()
{ double y,r,t;/*变量定义*/
y=0.0;r=1.0;
while((t=1.0/(r*r+1.0))>=1.0e-6) {
y+=t;
r+=1.0;
}
printf("y=%.6f\n", y);
}
9.编一个程序显示ASCII代码0x20至ox6f的十进制数值及其对应字符。
【解】显示ASCII代码为十六进制0x20至ox6f的字符的十进制代码值与其字符。程序可用一个循环,让变量i顺序地取0X20至OX6f的值,并逐一输出其十进制代码和对应的字符,程序如下:
# include
main()
{ int i,k=0;
for(i=0x20; i<=0x6f;i++) {
if(k++== O)/*每行十个*/
printf("\n");
printf("=(%C)", i,i);
}
printf("\n");
}
10.用三种循环语句分别编写程序显示1至100的平方值。
【解】用三种循环语句分别编写显示1至100的平方值的程序。直接写出3个程序如下:
(1) 用输循环实现的程序
# include
main() /*用for循环*/
{ int i,k=0;
for(i=l;i<=100;i++) {
if(k++%5==0) /*每行五个*/
printf("\n");
printf("=*==]",i,i,i*i);
}
printf("\n");
}
(2) 用while循环实现的程序
# include
main() /*用 while循环*/
{ int i,k=0 ;
i=1;
while(<=100){
if(k++%5==0)/*每行五个*/
printf("\n");
printf("=*==]", i,i,i*i);
1++;
}
printf("\n");
}
(3) 用do-while循环实现的程序
# include
main() /*用do-while循环*/
{ int i, k=0 ;
i=1;
do{
if(k++%5==0) /*每行五个*/
printf("\n");
printf("=*==]",i,i,i*i);
1++;
} while(<=100);
printf("\n");
}
责任编辑:小草