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"); } |