64,644
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <math.h>
int main()
{
double y;
int x,k1,k2;
for(y=1;y>=-1;y-=0.1)
{
k1=acos(y)*10;
k2=asin(y)*10;
if(k1<k2&&k2>=0)
{
for(x=1;x<k1;x++)
printf(" ");
printf("*");
for(x=k1+1;x<k2;x++)
printf(" ");
printf("*");
for(;x<30-k2;x++)
printf(" ");
printf("*");
for(;x<62-k1;x++)
printf(" ");
printf("*\n");
}
else if(k2<k1&&1<=k2&&k2<=15)
{
for(x=1;x<k2;x++)
printf(" ");
printf("*");
for(x=k2+1;x<k1;x++)
printf(" ");
printf("*");
for(;x<30-k2;x++)
printf(" ");
printf("*");
for(x=30-k2;x<62-k1;x++)
printf(" ");
printf("*\n");
}
else if(k1<(30-k2)&&(30-k2)<(62-k1)&&-15<=k2&&k2<=-1)
{
for(x=1;x<k1;x++)
printf(" ");
printf("*");
for(;x<31-k2;x++)
printf(" ");
printf("*");
for(;x<62-k1;x++)
printf(" ");
printf("*");
for(;x<61+k2;x++)
printf(" ");
printf("*\n");
}
else if((62-k1)<(31-k2)&&-15<=k2&&k2<=-1)
{
for(x=1;x<k1;x++)
printf(" ");
printf("*");
for(;x<62-k1;x++)
printf(" ");
printf("*");
for(;x<31-k2;x++)
printf(" ");
printf("*");
for(;x<61+k2;x++)
printf(" ");
printf("*\n");
}
}
return 0;
}
#include <windows.h>
#include <stdio.h>
void ConPrint(char *CharBuffer, int len);
void ConPrintAt(int x, int y, char *CharBuffer, int len);
void gotoXY(int x, int y);
void ClearConsole(void);
void ClearConsoleToColors(int ForgC, int BackC);
void SetColorAndBackground(int ForgC, int BackC);
void SetColor(int ForgC);
void HideTheCursor(void);
void ShowTheCursor(void);
int main(int argc, char* argv[])
{
HideTheCursor();
ClearConsoleToColors(15, 1);
ClearConsole();
gotoXY(1, 1);
SetColor(14);
printf("This is a test...\n");
Sleep(5000);
ShowTheCursor();
SetColorAndBackground(15, 12);
ConPrint("This is also a test...\n", 23);
SetColorAndBackground(1, 7);
ConPrintAt(22, 15, "This is also a test...\n", 23);
gotoXY(0, 24);
SetColorAndBackground(7, 1);
return 0;
}
//This will clear the console while setting the forground and
//background colors.
void ClearConsoleToColors(int ForgC, int BackC)
{
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
//Get the handle to the current output buffer...
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
//This is used to reset the carat/cursor to the top left.
COORD coord = {0, 0};
//A return value... indicating how many chars were written
//not used but we need to capture this since it will be
//written anyway (passing NULL causes an access violation).
DWORD count;
//This is a structure containing all of the console info
// it is used here to find the size of the console.
CONSOLE_SCREEN_BUFFER_INFO csbi;
//Here we will set the current color
SetConsoleTextAttribute(hStdOut, wColor);
if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
{
//This fills the buffer with a given character (in this case 32=space).
FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
//This will set our cursor position for the next print statement.
SetConsoleCursorPosition(hStdOut, coord);
}
}
//This will clear the console.
void ClearConsole()
{
//Get the handle to the current output buffer...
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
//This is used to reset the carat/cursor to the top left.
COORD coord = {0, 0};
//A return value... indicating how many chars were written
// not used but we need to capture this since it will be
// written anyway (passing NULL causes an access violation).
DWORD count;
//This is a structure containing all of the console info
// it is used here to find the size of the console.
CONSOLE_SCREEN_BUFFER_INFO csbi;
//Here we will set the current color
if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
{
//This fills the buffer with a given character (in this case 32=space).
FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
//This will set our cursor position for the next print statement.
SetConsoleCursorPosition(hStdOut, coord);
}
}
//This will set the position of the cursor
void gotoXY(int x, int y)
{
//Initialize the coordinates
COORD coord = {x, y};
//Set the position
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//This will set the forground color for printing in a console window.
void SetColor(int ForgC)
{
WORD wColor;
//We will need this handle to get the current background attribute
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
//We use csbi for the wAttributes word.
if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
{
//Mask out all but the background attribute, and add in the forgournd color
wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
SetConsoleTextAttribute(hStdOut, wColor);
}
}
//This will set the forground and background color for printing in a console window.
void SetColorAndBackground(int ForgC, int BackC)
{
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
//Direct console output
void ConPrint(char *CharBuffer, int len)
{
DWORD count;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), CharBuffer, len, &count, NULL);
}
//Direct Console output at a particular coordinate.
void ConPrintAt(int x, int y, char *CharBuffer, int len)
{
DWORD count;
COORD coord = {x, y};
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hStdOut, coord);
WriteConsole(hStdOut, CharBuffer, len, &count, NULL);
}
//Hides the console cursor
void HideTheCursor()
{
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if(GetConsoleCursorInfo(hStdOut, &cciCursor))
{
cciCursor.bVisible = FALSE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
//Shows the console cursor
void ShowTheCursor()
{
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if(GetConsoleCursorInfo(hStdOut, &cciCursor))
{
cciCursor.bVisible = TRUE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#define W 80
#define H 20
char s[W][H];
double x,y;
int i,j,i1;
void main() {
for (j=0;j<H;j++)
for (i=0;i<W;i++)
s[i][j]=' ';
i1=0;
for (x=0.0;x<=359.0;x+=1.0) {
i=(int)(x*W/360.0);
if (i<0) i=0;
if (i>W-1) i=W-1;
y=sin(x*M_PI/180.0);
j=(int)(H/2-(H/2-1)*y);
if (j<0) j=0;
if (j>H-1) j=H-1;
if (i1!=i) {
s[i][j]='*';
i1=i;
}
}
printf("sin\n");
for (j=0;j<H;j++) {
for (i=0;i<W;i++) {
printf("%c",s[i][j]);
}
printf("\n");
}
for (j=0;j<H;j++)
for (i=0;i<W;i++)
s[i][j]=' ';
i1=0;
for (x=0.0;x<=359.0;x+=1.0) {
i=(int)(x*W/360.0);
if (i<0) i=0;
if (i>W-1) i=W-1;
y=cos(x*M_PI/180.0);
j=(int)(H/2-(H/2-1)*y);
if (j<0) j=0;
if (j>H-1) j=H-1;
if (i1!=i) {
s[i][j]='*';
i1=i;
}
}
printf("cos\n");
for (j=0;j<H;j++) {
for (i=0;i<W;i++) {
printf("%c",s[i][j]);
}
printf("\n");
}
}
//sin
//
// *************
// ** **
// ** **
// ** **
// ** **
// * *
// ** **
// * *
// * **
// * *
// * *
// ** **
// * *
// ** **
// ** **
// ** **
// ** **
// ****** ******
// *
//cos
//
// ****** ******
// ** **
// ** **
// ** **
// ** **
// * *
// ** **
// * *
// * *
// ** **
// * *
// ** **
// * *
// ** **
// ** **
// ** **
// ** **
// ****** ******
// *
const int maxn=80,x_pi=20;
const auto pi =acos(-1.0);
char line[maxn+1];
inline int rad2x(double rad){
return rad/pi *x_pi;
}
void fill_star(int x0,int x1){
for(;x0<maxn;x0+=2*x_pi) if(x0>=0) line[x0] ='*';
for(;x1<maxn;x1+=2*x_pi) if(x1>=0) line[x1] ='*';
}
int main()
{
for(auto y=1.0;y>=-1.0;y-=0.2){
memset(line,' ',maxn);
auto a=asin(y),b=acos(y);
fill_star(rad2x(a),rad2x(pi-a));
fill_star(rad2x(b),rad2x(-b));
cout<<line<<endl;
}
return 0;
}