C語言實現(xiàn)繪制余弦曲線
1.要求
在屏幕上用"*"顯示0°~360°的余弦曲線cos(x)曲線。
2.問題分析與算法設(shè)計
如果在程序中使用數(shù)組,這個問題十分簡單。但若規(guī)定不能使用數(shù)組,問題就變得不容易了。
關(guān)鍵在于余弦曲線在0°~360°的區(qū)間內(nèi),一行中要顯示兩個點;而對一般的顯示器來說,只能按行輸出,即:輸出第一行信息后,只能向下一行輸出,不能再返回到上一行。為了獲得本題要求的圖形就必須在一行中一次順序輸出兩個"*"。
為了同時得到余弦函數(shù) cos ( x )圖形在一行上的兩個點,考慮利用 cos ( x )的左右對稱性。將屏幕的行方向定義為 x ,列方向定義為 y ,則0°~180°的圖形與180°~360°的圖形是左右對稱的。若定義圖形的總寬度為62列,計算出 x 行0°~180°時 y 點的坐標(biāo) m ,那么在同一行與之對稱的180°~360°的 y 點的坐標(biāo)就應(yīng)為62- m 。程序中利用反余弦函數(shù) acos 計算坐標(biāo)( x , y )的對應(yīng)關(guān)系。
使用這種方法編出的程序短小精練,體現(xiàn)了一定的技巧。
3.程序
3-1.源碼
001_cos.c · cProgram/100Example - 碼云 - 開源中國 (gitee.com)
/******************************************************************* * > File Name: 001_cos.c * > Author: fly * > Mail: XXXXXXXX@icode.com * > Create Time: 2020年06月01日 星期一 09時24分59秒 ******************************************************************/ #include <stdio.h> #include <math.h> #include "debug.h" void test_acos(void) { double x = 0.0; double y = 0.0; int m = 0; for(x= -1.0; x<=1.0; x+=0.1) { y = acos(x); m = y * 10; printf("x = %f, y = %f[%d]\n", x, y, m); } } void printf_cos(void) { printf("========Draw Cos(x)========\n"); double x = 0.0, y = 0.0; int m, n; for(y = 1.0; y >= -1.0; y-=0.1) { x = acos(y); m = x * 10; //printf("(%f, %f)%d\n", x,y,m); for(n = 0; n <=m; n++) printf(" "); printf(RED"*"NONE); for(; n<62-m; n++) printf(" "); printf(RED"*\n"NONE); } } int main(int argc, char* argv[]) { DBG_PRINTF("Hello, world !\n"); //test_acos(); printf_cos(); return 0; }
#ifndef __DEBUG_H__ #define __DEBUG_H__ #include <string.h> #define DBG_PRINTF_FUNC (1) #define DBG_PRINTF_SWITCH (1) // color debug #define NONE "\e[m" #define BLACK "\e[0;30m" #define RED "\e[0;31m" #define GREEN "\e[0;32m" #define YELLOW "\e[0;33m" #define BLUE "\e[0;34m" #ifdef DBG_PRINTF_FUNC #define DBG_PRINTF(fmt, args...) \ do{\ printf("<<FILE:"BLUE"%s"NONE" LINE:"RED"%d"NONE" FUNC:"GREEN"%s"NONE">>", \ strrchr(__FILE__, '/')?strrchr(__FILE__, '/')+1:__FILE__, __LINE__, __FUNCTION__);\ printf(fmt, ##args);\ }while(0) #else #define DBG_PRINTF(fmt, args...) #endif /* DBG_PRINTF_FUNC */ #endif /* __DEBUG_H__ */
3-2.makefile
SRC = ${wildcard *.c} BIN = ${patsubst %.c, %, $(SRC)} CFLAGS = -g -Wall #INC = -lm LIBS = -lm all:$(BIN) $(BIN):%:%.c $(CC) -o $@ $< $(CFLAGS) $(LIBS) clean: $(RM) a.out $(BIN) .PHONY:all clean
4.運行
到此這篇關(guān)于C語言實現(xiàn)繪制余弦曲線的文章就介紹到這了,更多相關(guān)C語言繪制余弦曲線內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)數(shù)據(jù)打印到紙張
關(guān)于Qt打印內(nèi)容到紙張,網(wǎng)上的辦法非常多,比如有些直接用painter繪制,逐步控制分頁打印。本文介紹的方法則是將內(nèi)容作為html設(shè)置到文檔對象,再調(diào)用文檔對象的print方法傳入QPrinter對象打印,感興趣的同學(xué)可以了解一下2022-01-01