#include<stdio.h> #include<math.h> main( ) { double y; int x,m; for(y=10;y>=-10;y--) //圆的半径为10 { m=2.5*sqrt(100-y*y);//计算y对应的列坐标m,2.5是屏幕纵横比调节系数,因为屏幕的行距大于列距,不进行调节显示出来的是椭圆 for(x=1;x<30-m;x++)printf(" ");//图形左侧空白控制 printf("*"); //圆的左侧 for(;x<30+m;x++)printf(" "); //圆的空心部分控制 printf("*/n"); //圆的右侧 } } /* -------------------------------------------------------------------------------------------- ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** Process returned 256 (0x100) execution time : 0.688 s Press any key to continue. -------------------------------------------------------------------------------------------- */ 思考题:实现函数y=x²的图形与圆的图形叠加显示。 解答:#include <stdio.h> #include <math.h> #define R 10 #define LINE 62 #define HIGHT 20 int main() { double y; int layer,x,m,n; for( layer=HIGHT; layer>=-R; --layer) { y=layer; m=(int)(2.5*sqrt(R*R-y*y)); n=(int)( 5*sqrt(y)); for(x=0; x<LINE; ++x) { if(y>=0) { if(y>R) { if (x==31+n || x==31-n) printf("$"); else printf(" "); } else { if ((x==31+m && x==31+n)|| (x==31-m && x==31-n)) printf("+"); else if (x==31+m || x==31-m) printf("*"); else if (x==31+n || x==31-n) printf("$"); else printf(" "); } } else { if (x==31+m || x==31-m) printf("*"); else printf(" "); } } printf("/n"); } return 0; } /* output: --------------------------------------------------------------------------- $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ * $ $ * * $ $ * * $ $ * * $ + + *$ $* * $ $ * * $ $ * * $ $ * * $ $ * * $ * * * * * * * * * * * * * * * * * * * * Process returned 0 (0x0) execution time : 0.141 s Press any key to continue. ----------------------------------------------------------------------------- */