C語言實(shí)現(xiàn)繪制余弦曲線
1.要求
在屏幕上用"*"顯示0°~360°的余弦曲線cos(x)曲線。
2.問題分析與算法設(shè)計(jì)
如果在程序中使用數(shù)組,這個(gè)問題十分簡單。但若規(guī)定不能使用數(shù)組,問題就變得不容易了。
關(guān)鍵在于余弦曲線在0°~360°的區(qū)間內(nèi),一行中要顯示兩個(gè)點(diǎn);而對(duì)一般的顯示器來說,只能按行輸出,即:輸出第一行信息后,只能向下一行輸出,不能再返回到上一行。為了獲得本題要求的圖形就必須在一行中一次順序輸出兩個(gè)"*"。
為了同時(shí)得到余弦函數(shù) cos ( x )圖形在一行上的兩個(gè)點(diǎn),考慮利用 cos ( x )的左右對(duì)稱性。將屏幕的行方向定義為 x ,列方向定義為 y ,則0°~180°的圖形與180°~360°的圖形是左右對(duì)稱的。若定義圖形的總寬度為62列,計(jì)算出 x 行0°~180°時(shí) y 點(diǎn)的坐標(biāo) m ,那么在同一行與之對(duì)稱的180°~360°的 y 點(diǎn)的坐標(biāo)就應(yīng)為62- m 。程序中利用反余弦函數(shù) acos 計(jì)算坐標(biāo)( x , y )的對(duì)應(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時(shí)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.運(yùn)行

到此這篇關(guān)于C語言實(shí)現(xiàn)繪制余弦曲線的文章就介紹到這了,更多相關(guān)C語言繪制余弦曲線內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt實(shí)現(xiàn)TCP客戶端和服務(wù)器通訊程序
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)TCP客戶端和服務(wù)器通訊程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C++實(shí)現(xiàn)關(guān)機(jī)功能詳細(xì)代碼
大家好,本篇文章主要講的是C++實(shí)現(xiàn)關(guān)機(jī)功能詳細(xì)代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)打印到紙張
關(guān)于Qt打印內(nèi)容到紙張,網(wǎng)上的辦法非常多,比如有些直接用painter繪制,逐步控制分頁打印。本文介紹的方法則是將內(nèi)容作為html設(shè)置到文檔對(duì)象,再調(diào)用文檔對(duì)象的print方法傳入QPrinter對(duì)象打印,感興趣的同學(xué)可以了解一下2022-01-01
OpenCV基于稠密光流實(shí)現(xiàn)視頻跟蹤詳解
這篇文章主要為大家詳細(xì)介紹了OpenCV如何基于稠密光流實(shí)現(xiàn)視頻跟蹤功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02

