精华内容
下载资源
问答
  • C语言 打印图案

    2016-09-27 21:11:39
    打印类似菱形图案 * *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** *
    #define _CRT_SECURE_NO_WARNINGS 1
    #include"stdio.h"
    
    
    int main()
    {
    	int lines = 0;
    	printf("Please enter the lines:");
    	scanf("%d", &lines);//lines位图案上半部的行数
    	int i = 0;
    
    	for (i = 0; i < lines; i++)
    	{
    		int j = 0;
    		for (j = 0; j < lines - 1 - i; j++)
    		{
    			printf(" ");
    		}
    		for (j = 0; j <2 * i + 1; j++)
    		{
    			printf("*");
    		}
    		printf("\n");
    	}
    
    	for (i = lines - 1; i > 0 ; i--)
    	{
    		int j = 0;
    		for (j = 0; j < lines - i; j++)
    		{
    			printf(" ");
    		}
    		for (j = 0; j < 2 * i - 1; j++)
    		{
    			printf("*");
    		}
    		printf("\n");
    	}
    		system("pause");
    		return 0;
    }

    展开全文
  • 普通的爱心图案#include #include int main(){float y, x, a;for (y = 1.5f;y > -1.5f;y -= 0.1f){for (x = -1.5f;x < 1.5f;x += 0.05f){a = x*x + y*y - 1;putchar(a*a*a - x*x*y*y*y <= 0.0f ? '*' : ' '...

    普通的爱心图案

    #include

    #include

    int main()

    {

    float y, x, a;

    for (y = 1.5f;y > -1.5f;y -= 0.1f)

    {

    for (x = -1.5f;x < 1.5f;x += 0.05f)

    {

    a = x*x + y*y - 1;

    putchar(a*a*a - x*x*y*y*y <= 0.0f ? '*' : ' ');

    }

    putchar('\n');

    }

    return 0;

    }

    效果图

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    带花纹的爱心图案

    #include

    #include

    int main()

    {

    float y, x, z,f;

    for (y = 1.5f;y > -1.5f;y -= 0.1f)

    {

    for (x = -1.5f;x < 1.5f;x += 0.05f)

    {

    z = x*x + y*y - 1;

    f = z*z*z - x*x*y*y*y;

    putchar(f <= 0.0f ? ".:-=+*#%@"[(int)(f*-8.0f)] : ' ');

    }

    putchar('\n');

    }

    getchar();

    return 0;

    }

    效果图

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    3D爱心

    #include

    #include

    #include

    #include

    float f(float x, float y, float z) {

    float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;

    return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;

    }

    float h(float x, float z) {

    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)

    if (f(x, y, z) <= 0.0f)

    return y;

    return 0.0f;

    }

    int main() {

    HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE);

    _TCHAR buffer[25][80] = { _T(' ') };

    _TCHAR ramp[] = _T(".:-=+*#%@");

    for (float t = 0.0f;; t += 0.1f) {

    int sy = 0;

    float s = sinf(t);

    float a = s * s * s * s * 0.2f;

    for (float z = 1.3f; z > -1.2f; z -= 0.1f) {

    _TCHAR* p = &buffer[sy++][0];

    float tz = z * (1.2f - a);

    for (float x = -1.5f; x < 1.5f; x += 0.05f) {

    float tx = x * (1.2f + a);

    float v = f(tx, 0.0f, tz);

    if (v <= 0.0f) {

    float y0 = h(tx, tz);

    float ny = 0.01f;

    float nx = h(tx + ny, tz) - y0;

    float nz = h(tx, tz + ny) - y0;

    float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);

    float d = (nx + ny - nz) * nd * 0.5f + 0.5f;

    *p++ = ramp[(int)(d * 5.0f)];

    }

    else

    *p++ = ' ';

    }

    }

    for (sy = 0; sy < 25; sy++) {

    COORD coord = { 0, sy };

    SetConsoleCursorPosition(o, coord);

    WriteConsole(o, buffer[sy], 79, NULL, 0);

    }

    Sleep(33);

    }

    }

    效果图,运行时会动起来

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    网上看到的,觉得很好看,转来收藏着

    展开全文
  • 错误怎么看,为什么出错?![图片](https://img-ask.csdn.net/upload/201609/27/1474905674_253966.png)
  • 在VC++6.0中用应用程序向导(AppWizard)生成的单文档或多文档程序提供了对打印功能的实现,但遗憾的是如果对自动生成的框架程序不做任何改进,打印出来的文档或图形和屏幕上的显示相比就会特别小。为什么会这样呢?...

    在VC++6.0中用应用程序向导(AppWizard)生成的单文档或多文档程序提供了对打印功能的实现,但遗憾的是如果对自动生成的框架程序不做任何改进,打印出来的文档或图形和屏幕上的显示相比就会特别小。为什么会这样呢?

    本文对这种现象的原因和MFC的打印机制进行了深入的分析,并提出了一种特别简单的方法,在原有的程序中只需加入几行代码就能解决这一问题,实现所见即所得的打印。

    首先,分析MFC的打印机制,把原理弄清楚了,就不难明白现象形成的原因和提出解决办法。MFC应用程序的核心是文档对象以及相关的视图窗口的概念,即CDocument类和CView类的构成和关系,简单地说CDocument类负责数据的生成和储存,CView类负责数据的显示和用户交互。输出到屏幕和输出到打印机都是数据的显示,实质上是一样的,所以打印功能也是由CView类来实现的。

    在CView类中由应用程序向导自动生成的源代码提供了一个OnDraw(CDC* pDC)的函数,通过重载这个函数,利用它提供的pDC(设备上下文)指针,可以在屏幕上显示各种图形和数据。CView类的打印是通过OnPrint(CDC* pDC, CPrintInfo* pInfo)这个函数实现的,应用程序向导自动生成的源代码中没有这个函数的框架,而这个函数对打印的实现就是简单地调用OnDraw(CDC* pDC)这个函数,把打印机的设备上下文指针pDC传递给OnDraw(CDC* pDC)函数。

    可见CView类对输出到屏幕和输出到打印机的处理都是一样的,只是换了一个设备上下文而已,那么为什么输出到打印机的图像特别小呢?

    这与VC采用的缺省的坐标映射方式MM_TEXT有关,这种方式的好处是用户图形坐标和设备的象素完全一致。但是在屏幕的象素大小为800*600时,每逻辑英寸包含的屏幕象素为96,而打印机的点数却要多好几倍,如当打印机为HP LaserJet 6L时每逻辑英寸包含的打印机点数为600,也就是说打印机的清晰度比屏幕要高得多。

    这样的后果就是在屏幕上显示出来的满屏图像在打印出来的纸上却只有一点点大,怎么解决这个问题呢?一种简单的方法就是转换坐标映射方式,使得打印时采用的坐标比例比显示时采用的坐标比例相应地大若干倍,就可以解决这一问题。

    下面将给出详细的方法。

    注意到CView类在进行显示和打印之前都会调用virtual void OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL )这个虚拟成员函数来准备设备上下文,我们可以在CView类中重载这个虚拟成员函数,进行坐标转换。

    首先用VC的ClassWizard实现对OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL )函数的重载,ClassWizard生成的源代码如下:

    void CTempView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)

    { // TODO: Add your specialized code here and /or call the base class

    CView::OnPrepareDC(pDC, pInfo);

    }

    我们只需在源代码中加入以下几行代码即可,如下:

    void CPrintSameView::OnPrepareDC

    (CDC* pDC, CPrintInfo* pInfo)

    { CView::OnPrepareDC(pDC, pInfo);

    pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式

    CSize size = CSize(800, 560);

    pDC->SetWindowExt(size);

    //确定窗口大小 //得到实际设备每逻辑英寸的象素数量 int xLogPixPerInch = pDC->

    GetDeviceCaps(LOGPIXELSX);

    int yLogPixPerInch = pDC- >GetDeviceCaps(LOGPIXELSY);

    //得到设备坐标和逻辑坐标的比例 long xExt = (long)size.cx * xLogPixPerInch/96 ;

    long yExt = (long)size.cy * yLogPixPerInch/96 ;

    pDC->SetViewportExt((int)xExt, (int)yExt);

    //确定视口大小 }

    如上所示,首先将坐标映射方式改变为MM_ANISOTROPIC方式,即各向异性的意思,在这种坐标方式下,X轴和Y轴的逻辑单位可以进行任意的缩放。改变坐标映射方式后,就要确定窗口大小和视口大小,注意窗口大小就是我们在屏幕上所见的尺寸,而视口大小则是实际设备,如打印机等,和显示器设备每逻辑英寸的象素数量比较所得的比例尺寸。通过函数得到显示器和打印机每逻辑英寸的象素数量,然后对视口大小进行相应的缩放,就可以使得屏幕上的显示和打印机的输出是一致的了。

    这样,只通过几行简单的代码,我们就实现了所见即所得的打印。

    展开全文
  • C语言打印各种图案合集

    千次阅读 2020-11-21 10:57:29
    C语言打印菱形图案 题目描述:​ 输入一个正整数 n,并输出一个菱形,这个菱形有 2n−1 行,第一行有 2 个字母 A,之后的 n−1 行每行字母 A 的数量会递增 2 个,后面的 n+1 行至 2n−1 行,每行字母 A 的数量会递减...

    1.C语言打印菱形图案

    题目描述:​

    输入一个正整数 n,并输出一个菱形,这个菱形有 2n−1 行,第一行有 2 个字母 A,之后的 n−1 行每行字母 A 的数量会递增 2 个,后面的 n+1 行至 2n−1 行,每行字母 A 的数量会递减 2 个,同时,我们需要在每行前输出一定数量的空格,以保证菱形居中,注意末尾不要有多余的输出。

    输入格式:

    		输入一个正整数 n。(0<n<40)
    

    输出格式:

    样例输入:2
    
    样例输出: 
    				AA
    			   AAAA
    			    AA
    样例输入:3
    
    样例输出:
    				  AA
    				 AAAA
    				AAAAAA
    				 AAAA
    				  AA
    

    案例分析:

    首先菱形有2n-1行,在这里我们先只看前n行,先实现前n行的打印,然后后面对称输出即可。
    分析:第1行有2个字母A,第2行4个,第3行6个,第j行就有2j个,仔细观察会发现第j行会先打印 n - j 个空格,然后在打印2j个字母 A ,最后换行,这样这一行的输出就完成了。

    前n行输出打印实现:

    #include<stdio.h>
    int main(){
    	int n;
    	int i,j,k; 
    	scanf("%d",&n);//输入n
    	for(i = 1; i <= n; i++){//表示从第1行到第n行
    		for(j = 1; j <= n-i; j++){//从第1列开始,这一行需要打印 n-i 个空格 
    			printf(" ");
    		}
    		for(k = 1; k <= 2*i; k++){//实现打印每一行需要打印的字符数量
    			printf("A");
    		}
    		printf("\n");//每打印完成一行则换行
    	}
    	return 0;
    }
    

    运行结果:

    在这里插入图片描述

    n+1–2*n-1行的打印实现:

    我们会发现第k行打印的空格数量为 k - n,每一行需要打印的字符数量则为 2*n - 2*(i - n)个//这里是从第n+1行开始,每一行都比第n行少了2*(i-n)个字符。
    

    n+1行—2*n行打印实现代码:

    for(i = n+1; i <= 2*n-1; i++){//表示从第n+1--2*n+1行
    	for(j = 1; j <= i-n; j++){//从第一列开始,打印 i - n 个空格	
    		printf(" ");
    	}
    	for(k = 1; k <= 4*n-2*i; k++){//打印每一行的字符数量
    		printf("A");
    	}
    	printf("\n");//每打印一行换行
    }
    

    总代码实现:

    #include<stdio.h>
    int main(){
    	int n;
    	int i,j,k; 
    	scanf("%d",&n);//输入n
    	for(i = 1; i <= n; i++){//表示从第1行到第n行
    		for(j = 1; j <= n-i; j++){//实现每一行需要打印的空格数量
    			printf(" ");
    		}
    		for(k = 1; k <= 2*i; k++){//实现打印每一行需要打印的字符数量
    			printf("A");
    		}
    		printf("\n");//每打印完成一行则换行
    	}
    	for(i = n+1; i <= 2*n-1; i++){//表示从第n+1--2*n+1行
    		for(j = 1; j <= i-n; j++){//从第一列开始,打印 i - n 个空格	
    			printf(" ");
    		}
    		for(k = 1; k <= 4*n-2*i; k++){//打印每一行的字符数量
    			printf("A");
    		}
    		printf("\n");//每打印一行换行
    	}
    	return 0;
    }
    

    运行结果:

    在这里插入图片描述

    2.打印沙漏型图案

    题目描述:

    输入一个正整数 n,并输出一个沙漏形,这个沙漏形有 2n+1 行,第一行有 2n+1 个字母,其中前 n+1 个字符是从 A 开始依次递增的,而后 n 个字符是由第 n+1 个字符开始依次递减的。之后的 n行每行会少头尾两个字母。再之后的 n 行则正好是前 n 行反过来输出的结果。注意末尾不要有多余的输出。

    输入: 输入一个正整数 n(0<n<26)

    输出:按照样例输出

    样例输入:

      2 
    

    样例输出:

     ABCBA  
      BCB  
       C 
      BCB 
     ABCBA
    

    案例分析:

    首先我们分析每一行的字符数 ,第一行有2n+1个字符,之后每一行都会比自己所在行的上一行少两个字符,所以第k行比第一行少了 (k-1) * 2 个字符,第k行就会有2n-1-2*(k-1) 个字符;
    然后,第一行打印了0个空格,第二行1个,三行2个,…第k行就是k-1个;
    其次就是打印的字符从什么开始,第一行从‘A’,第二行‘B’,…第k行就是 A+(k-1); ( k < 27)

    代码实现:

    for(i = 0; i <= n; i++){
    		for(j = 1; j <= k-1; j++){
    			printf(" ");
    		}//打印每一行的空格数量
    		for(j = k-1; j <= n; j++){
    			printf("%c",symbol+j);
    		}//打印每一行前n个字符
    		for(j = n-1; j >= k-1; j-- ){
    			printf("%c",symbol+j);
    		}//打印每一行(n+1)-(2*n+1)个字符
    		printf("\n");//打印一行换行
    		k++;
    	}
    

    运行结果:

    在这里插入图片描述

    (n+1)-(2*n+1)行代码实现:

    k = n;
    for(i = 2; i <= n+1; i++){//后面只有n-1行代码,把第n+1行看成第2行,从这一行开始
    	for(j = 1; j <= k-1; j++){
    		printf(" ");//k=n,第k行比第n行少机就打印几个空格
    	}
    	for(j = k-1; j <= n; j++){
    		printf("%c",symbol+j);//打印每一行的前n个字符
    	}
    	for(j = n-1; j >= k-1; j--){
    		printf("%c",symbol+j);//打印每一行(n+1)-(2*n+1)个字符
    	}
    	printf("\n");
    	k--;
    }
    

    总代码:

    #include<stdio.h>
    int main(int argc,char *argv[]){
    	int n;
    	int i,j,k = 1;
    	char symbol = 'A';
    	scanf("%d",&n);
    	for(i = 0; i <= n; i++){
    		for(j = 1; j <= k-1; j++){
    			printf(" ");
    		}
    		for(j = k-1; j <= n; j++){
    			printf("%c",symbol+j);
    		}
    		for(j = n-1; j >= k-1; j-- ){
    			printf("%c",symbol+j);
    		}
    		printf("\n");
    		k++;
    	}
    	k = n;
    	for(i = 2; i <= n+1; i++){
    		for(j = 1; j <= k-1; j++){
    			printf(" ");
    		}
    		for(j = k-1; j <= n; j++){
    			printf("%c",symbol+j);
    		}
    		for(j = n-1; j >= k-1; j--){
    			printf("%c",symbol+j);
    		}
    		printf("\n");
    		k--;
    	}
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    最后创作不易,记得点赞收藏哦!
    在这里插入图片描述

    展开全文
  • c语言打印菱形图案

    千次阅读 多人点赞 2020-08-09 12:35:13
    1.打印空心菱形 #include<stdio.h> int main() { int n,i,m,j,k; scanf("%d", &n); m = (n + 1) / 2; for (i = 1; i <= n; i++) //一行一行的循环打印 { if (i <= m) //分两种情况,上半...
  • C语言打印星型图案

    千次阅读 2020-05-25 18:17:25
    打印三角形 左三角:打印八行,每一行的“*****”个数为2*i-1 int i, j; for (i = 1; i <= 8; i++) { for (j = 1; j <= 2 * i - 1; j++) printf("*"); printf("\n"); } 右三角:打印八行,每一行的...
  • C语言打印菱形图案

    千次阅读 2019-07-17 19:52:58
    #include int get_rhombus(int i, int top) { int n = 1; int o_i = i; for(o_i; o_i (top - 1) / 2; o_i++) //空格个数为 (高度 - 1)/ 2 个 { printf(" ");... //打印菱形 return 0; }
  • C语言打印三角形图案

    千次阅读 2019-11-25 14:44:45
    1.打印 $ $$ $$$ $$$$ $$$$$ $$$$$$ #include <stdio.h> int main(void){ const int ROWS = 6; int i,j; for (i=0;i<ROWS;i++){ for (j=0;j<=i;j++){ printf("$"); } printf("\n"); } ...
  • c语言打印*图案

    千次阅读 2021-02-28 14:47:17
    打印出以下图案 * * * * * * * * * * * * * * * * #include <stdio.h> int main(void) { int a,b,c,t; { int i,j; for(i=1;i<=5;i++) { for(j=1;j<=20-i;j++) printf(" "); for(j=1;j<=2*i...
  • C语言打印棱形图案

    2021-08-17 09:05:51
    我们可以使用C语言中的循环打印一个棱形图案,如下图 这种题目就是判断行、列、每一行的空格数、每一行的*数的数量规律,我们可以在纸上稍微算一下,分上下两部分打印,此时思路就清晰很多! 1.我们打印任意行:...
  • 偶然看到很多人在问关于星型打印图案的算法,今天我们就一起学习讨论一下。其实这个问题比较简单的,初级的时候只需要用for循环就可以实现,后期的话学习了坐标就更简单了,闲话少说,上主题:input a ...
  • 打印X型 运行结果: 代码实现: 分析:此题与上题的区别在于打印'*'号的位置不同,编程时要找出应打印'*'号的位置和两个循环变量i、j以及行数n的关系 int n = 0; printf("Please Enter n:\n"); scanf("%d", &n); for...
  • C语言打印一个菱形图案!

    万次阅读 多人点赞 2018-10-12 16:31:36
    在屏幕上输出以下图案: 拿到这种题目其实是比较容易的,简单的来说就是找规律!,这个菱形每一行是由多个空格和星号组成 第一行:6个空格,1个星号 第二行:5个空格,3个星号 第三行:4个空格,5个星号 以此类推,假设...
  • 以下代码实现了在C语言打印特殊图案的解决方法。需要的朋友参考下
  • 最美C语言情书(输出心形图案).doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!11.90 积分/***C语言心形图案***/# include # include int main ( void ){ ...
  • [学习笔记]用C语言打印任意一个菱形图案 仿真使用VScode进行编写编译 思路:运用顶点到中心点的距离进行设计。 废话不多说上代码! 代码如下: #include <stdio.h> int main() { int removing_num,line_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,807
精华内容 1,122
关键字:

c语言打印图案

c语言 订阅