c语言之打印图形

合集下载

玫瑰花c语言程序

玫瑰花c语言程序

编写一个简单的C语言程序来打印玫瑰花图案可能有点复杂,因为玫瑰花图案通常需要使用一些图形库或特殊的字符来实现。

在文本控制台中,要绘制复杂的图案可能需要使用特殊的库,如ncurses。

以下是一个简单的示例,使用基本的ASCII字符来近似表示玫瑰花:
```c
#include <stdio.h>
int main() {
printf(" @@@@\n");
printf(" @@@@@@\n");
printf("@@@@@@@@\n");
printf(" |||\n");
printf(" |||\n");
printf(" |||\n");
return 0;
}
```
这只是一个非常简单的表示,因为在文本控制台中要绘制出逼真的玫瑰花图案是相当困难的。

如果您想要更复杂和逼真的图案,您可能需要考虑使用图形库,如OpenGL或SDL,或者在图形环境中运行的其他工具和语言。

请注意,使用特殊字符来绘制艺术图案在纯文本环境中有其限制,而在图形环境中可以更容易地实现。

用C语言输出各种图形

用C语言输出各种图形

输出各种图形一、软件开发目得利用C程序输出各种图形二、数据结构采用数组、函数三、软件功能说明四、软件验收标准1。

有较为美观简洁大方得菜单,能保证用户方便、直观、快捷得熟悉并使用软件得各项功能。

注意:要求每执行一个具体得功能之后,程序将重新显示菜单。

2.有严密正确得数据验证功能与数据处理功能,能够实现各功能模块。

3。

系统要有一定得可靠性、稳定性.五、实现代码1#include<stdio、h>2 #include <stdlib、h>3#include 〈string、h>4#define N 1005char Number[N][N];6 //录入输出图形函数7 void Scanf_print(int k)8{9 int i;10charnum[N];11for(i=0;i<N;i++)12{13 if(k==1)14{15 gets(Number[i]);16 }17else18{19 printf(”%s",Number[i]);20 //printf(”\n");21}22if(strlen(Number[i])==0)23 break;24}2526 }27//文件操作函数28 int Files(char *name,char c)29{30 FILE*fp=NULL;31 int i;32charC[4];33 C[0]=c;34 C[1]='\0’;35 strcat(name,"、txt");36 fp=fopen(name,C);3738 if(fp==NULL)39 {40return—1;41 }4243for(i=0;i<N;i++)44 {4546if(c=='w’)47{48 if(strlen(Number[i])==0)49 break;50 fputs(Number[i],fp);51 fputc('\n',fp);52 }53 else if(c==’r')54 {55 fgets(Number[i],N,fp);56 }57 }58 fclose(fp);59return0;60}61int Filep(char*name,int k)62{63 FILE *fp=NULL;64inti;65charR[N];66 fp=fopen("name、txt”,”a+”);67if(fp==NULL)68{69 return-1;70}71if(k==0)72{73fputs(name,fp);74 fputs("”,fp);75 }76else77{7879 fgets(R,N,fp);80 printf(”%s\n”,R);8182 }83 fclose(fp);84return 0;85}86 void Interface()87 {88 printf("******************** 主菜单******************************\n");89 printf(”程序说明:\n");90 printf(”1,请用户先录入图形,再点击保存 \n");91 printf("2,若录入后没有点击保存,又进行录入,第一次录入得将被覆盖\n”);92 printf("**********************************************************\n");93 printf(”********************1、录入图形*********************\n");94 printf(”********************2、保存图形*********************\n");95printf("********************3、查瞧图形*********************\n");96 printf("******************** 4、退出*********************\n");97 printf("**********************************************************\n”);98 }99 int main()100{101102 int t=1,n,k,i;103char Name[20];104 while(t)105 {106 system(”cls”);107Interface();108 printf("请从1~4中选择、、、\n");109 scanf("%d",&n);110 system("cls”);111switch(n)112{113 case1:114 Scanf_print(1);115 printf("请设计图形(若一行都无元素,回车后设计完成)!\n\n");116 Scanf_print(1);117printf(”\n\n录入成功、、、");118system(”pause");119break;120case 2:121 printf("请为这个图形取一个名字:");122scanf("%s",&Name);123Filep(Name,0);//存入名字124 Files(Name,’w');125printf("\n\n 保存成功!\n\n\n”);126system(”pause");127break;128case3:129 for(i=1;i<N;i++)130 {131 strcpy(Number[i]," ”);132 }133 printf(”***********文件已存图形得名称****************\n\n\n”);134 Filep('no',1);135 printf("\n\n\n*********************************************\n\n\n”);136printf("请输入查瞧图形得名字:”);137scanf("%s”,&Name);138k=Files(Name,'r’);139 if(k==0)140{141printf("\n");142 Scanf_print(0);143 printf("\n");144 }145 else146 printf("\n\n 输入得名字未找到,请输入以上框中有得名字、、、\n\n");147 system("pause");148 break;149case4:t=0;break;150default:151 printf("输入非法字符,请输入1,2,3,4四个整数之一!");152 system(”pause");break;153 }154 }155 system("cls”);156 printf("感谢您得使用,再见!\n\n");157return0;158}六、运行说明1、点击运行后得界面2、输入1并回车后3、设计一个三角形,设计完成后回车即显示设计完成4、回车后回到主界面5、输入2回车之后,为这个图形取名为“三角形",重复以上操作, 我又分别录入了名字为心、心中心、心线等图形6、完成后回车回到主界面,输入3回车之后,会提示已录入得所有图形名称,回复名称之后回车即可查瞧图形7、返回主界面后,若输入4回车8、若在主界面输入除1,2,3,4以外得字符,会出现以下提示。

c语言用循环输出空心矩形

c语言用循环输出空心矩形

c语言用循环输出空心矩形在C语言中,我们可以使用循环语句来输出各种图形,其中包括空心矩形。

空心矩形是指由一些边框组成的矩形,中间部分为空白,没有填充物。

下面我们就来详细介绍如何使用循环语句输出空心矩形。

我们需要了解空心矩形的特点。

空心矩形的边框由四条直线组成,分别是上边框、下边框、左边框和右边框。

我们可以使用循环语句逐行输出这四条边框。

下面是一个示例代码,用于输出一个5行7列的空心矩形:```#include <stdio.h>int main() {int rows = 5; // 矩形的行数int cols = 7; // 矩形的列数for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {if (i == 0 || i == rows - 1 || j == 0 || j == cols - 1) {printf("*");} else {printf(" ");}}printf("\n");}return 0;}```在上述代码中,我们使用了两个嵌套的循环语句。

外层循环控制行数,内层循环控制列数。

通过判断当前的行数和列数,我们可以确定是否需要输出边框的星号字符。

在内层循环中,我们使用了条件判断语句。

当行数为0或者为最后一行,或者列数为0或者为最后一列时,我们输出星号字符。

否则,我们输出空格字符。

通过逐行逐列的输出字符,我们最终可以得到一个空心矩形。

根据需要,你可以修改`rows`和`cols`的值来改变矩形的大小。

除了这种简单的空心矩形,我们还可以通过嵌套循环和条件判断语句来输出更加复杂的图形。

例如,我们可以通过增加条件判断语句的条件,来输出带有空心内部的矩形,或者其他形状的图案。

总结起来,循环语句是在C语言中输出各种图形的常用方法之一。

打印螺旋方阵c语言

打印螺旋方阵c语言

打印螺旋方阵c语言打印一个螺旋方阵,是C语言中常见的一个面试题,在处理图像处理时也常常用到。

实现这个算法需要注意一些细节,下面我来为大家解释一下如何写出一个高质量的螺旋方阵。

首先,让我们来了解一下什么是螺旋方阵。

螺旋方阵是由自然数在方格中依次填充而成的一种矩阵,通常被用于数学问题的研究,例如,数学家Euler在研究算数平方和时曾提到螺旋方阵。

那么,如何实现螺旋方阵呢?在C语言中,我们可以使用二维数组和一个循环来实现(以下代码仅为参考):```c#include<stdio.h>void printMatrix(int n){int i,j,nCount=0;int aMatrix[100][100]={0};for (i=0;nCount<n*n;i++){for (j=i;j<n-i;j++) //填充上行aMatrix[i][j]=++nCount;for (j=i+1;j<n-i;j++) //填充右列aMatrix[j][n-i-1]=++nCount;for (j=n-i-2;j>=i;j--) //填充下行aMatrix[n-i-1][j]=++nCount;for (j=n-i-2;j>i;j--) //填充左列aMatrix[j][i]=++nCount;}for (i=0;i<n;i++) //输出二维数组 {for (j=0;j<n;j++)printf("%4d ",aMatrix[i][j]);printf("\n");}}int main(){int n;printf("请输入矩阵的大小(1~100):\n");scanf("%d",&n);printMatrix(n);return 0;}```下面我们来逐行解释一下上面的代码:1. 定义函数printMatrix,函数传入参数n表示矩阵的大小。

第二讲 用printf()打印简单字符图案

第二讲   用printf()打印简单字符图案
分析
#include <stdio.h>
void main( )
{
printf(“* * * * * * * *\n”);
printf(“*
*\n”); /*2个*号中间有6个空格*/
printf(“*
*\n”); /* 同上 */
printf("* * * * * * * *\n");
}
上面这个平面图形是非常 简单的,特别是中间两行左右 两个字符 ” “ 相隔很近, 中间的空格只有6个。
000000
0
0
0
0
0
0
0Hale Waihona Puke 000000000
88
88
8888888888
8
88
8
8888888888
88
88
88
作业练习
A
AA
AA
AA
AAAAAA
A
A
A
A
A
A
作业
大部分构成,一是编译预处理命令,应该写在程序的
最前面;
二是函数,可能有多个,但只能有一个主函数。
回顾
函数由函数名所在的行以及用一对大括号括起的函数
体组成。
模仿练习
Printf函数
• 现在请同学们模仿上例,在纸上写一个向屏幕 输出文字:“C语言其实很简单!!!”的程 序。
开始 新课程
#include <stdio.h> main( )
在程序中的printf语句里面的字符串末尾都有一个\n (反斜杠和n)。
这种用反斜杠开头后跟一个或多个字符组成的复合字符, 在C语言中称为转义字符(即在一些普通字符前加一个反斜 杠,使普通字符的含意转变了)。

一个打印菱形图案的C语言程序

一个打印菱形图案的C语言程序

一个打印菱形图案的C语言程序1.空心l菱形/*fileType: .cfileNmae: diamond 空心菱形author: xiaobingdate:2012年11月08日21点*/#include <stdio.h>int main(void){int i,j,k;//上半空心菱形for(i=1;i<=10;i++){ //控制行数10行for(k=10;k>i;k--){ //第一行9空格1* i=2 8空格2*printf(" ");}//当i=1时由第25行代码输出*if(i == 1){}else{printf(" *");}//空心空格个数打印0 2 4 6 16个for(j=1;j<2*i-2;j++){printf(" ");}printf(" *");printf("\n");}//下空心菱形for(i=1;i<=9;i++){ //去掉最长行只有9行//空格增多1 2 3 (9)for(k=1;k<=i;k++){printf(" ");}//最后一行*号由代码43行执行if(i == 9){}else{printf(" *");}//空心空格个数打印15 13 ....1 注意空格是15开始1结束for(j=1;j<=17-2*i;j++){ //i=9时候打印0个空格printf(" ");}printf(" *"); //打印每行后出现的*printf("\n"); //换行}}2.实心菱形总结了一下://这是做简单的,不考虑任何算法,傻X#include <stdio.h>int main(){printf(" *\n ***\n *****\n*******\n *****\n ***\n *\n");}最简短的程序估计就是这个了//C版本的:#include <stdio.h>int main(){int i = 0;for (; i < 9; i ++){printf("%*s\n",((i < 5) ? (i + 5) : (13 - i)),"*********" + ((i < 5) ? (8 - 2*i) : (2*i - 8)));}return 0;}//C++版本的:#include <iostream>using namespace std;int main(){for (int i = 0; i < 9; i ++){cout << " " + ((i < 5) ? i : (8 - i))<< "*********" + ((i < 5) ? (8 - 2*i) : (2*i - 8)) << endl;}return 0;}//双重嵌套再循环#include <stdio.h>#include <math.h>void main(){int n,i,j;printf("n=");scanf("%d",&n);for(i=0;i<(n*2+1);i++){for(j=0;j<fabs(i-n);j++) printf(" ");for(j=0;j<(2*(n-fabs(i-n))+1);j++) printf("*");printf("\n");}}//再来,统一求和判断,不分上下#include<stdio.h>void main(){int i,j,n;printf("n=?\n");scanf("%d",&n);for(i=0; i<2*n+1; i++){for(j=0; j<2*n+1; j++){if( i+j>=n && i+j<=3*n && i-j>=-n && i-j<=n ) printf("*");else printf(" ");}printf("\n");}}//正负判断方法#include<stdio.h>#include<math.h>#define N 5void main(){int i,j;for(i=-N;i<=N;i++){for(j=-N;j<=N;j++){if(abs(i)+abs(j)<=N)printf("*");elseprintf(" ");}printf("\n");}getchar();}。

C语言-打印字符图形

C语言-打印字符图形

打印字符图形例1 用for循环编程画出下列图形:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM分析:该图形一共有10行,每一行增加一个字符,所以,应循环10次,每次输出一行,其循环模式为:for( i=1;i<=10;i++){输出第i行换行}“输出第i行”是在for循环中的一个小循环。

每次执行“输出第i行”,其长度都是不一样的,但长度的变化正好与循环变量i同步,故可以依赖于i。

注意到第i行的M字符数与i的关系。

行 i M数1 1 12 2 23 3 34 4 4…10 10 10所以,可以得到“输出第i行”的循环为:for(j=1;j<=i;j++)printf(“%c”,’M’)完整的程序如下:#include <stdio.h>main(){int i,j;for(i=1;i<=10;i++){for(j=1;j<=i;j++)printf("%c",'M');printf("\n"); }}说明:对付这种字符图形,一般用两重循环,外循环遍历所有行,内循环遍历行中每个字符。

例2 输出下列图形:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM分析:该图形一共有10行,这次要考虑每行中,先输出若干个空格,所以,其外循环为:for( i=1;i<=10;i++){输出若干个空格输出若干M换行}下面列出在第i行,其空格数,M数与i的关系为:行i 空格数 M数1 0 192 1 173 2 154 3 13…10 9 1即第i行的空格数为i-1个,M个数为21-2i。

即在第i行输出空格和输出M字符的内循环分别为:for(j=1;j<=i-1;j++)printf(“”);for(k=1;k<=21-2i;k++)printf(“%c”,’M’);合起来,构成一个完整程序如下:#include <stdio.h>main(){ int i,j,k;for(i=1;i<=10;i++){for(j=1;j<=i-1;j++)printf(" ");for(k=1;k<=21-2*i;k++)printf("%c",'M');printf("\n");}}例3 输出下列图形:AABCABCDEABCDEFGABCDEFGHIABCDEFGHIJKABCDEFGHIJKLMABCDEFGHIJKLMNOABCDEFGHIJKLMNOPQABCDEFGHIJKLMNOPQRS分析:该图形一共有10行,这次要考虑每行中,先输出若干个空格,所以,其外循环为:for( i=1;i<=10;i++){输出若干个空格输出若干字符换行}如果要输出A起头依序的n(n<27)个字母,可以为:for(ch='A';ch<'A'+n;++ch)printf("%c",ch);下面分析每一行中的空格数与字符数与第i行之间的关系着手:行i 空格数字符数1 9 12 8 33 7 54 6 7…10 0 19即第i行的空格数据为10-i个,字符数为2i-1。

C语言打印图形

C语言打印图形
for(j=1;j<=n;j++)printf("*");
printf("\n");}}
1-3. 编程,输入n值,输出如下例(n=4)所示的图形:
*
***
*****
*******
————
main()
{int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)printf(" ");
******
**** 当 n=4 时
————
main()
{int i,j,k,n;
printf("\nInput n=");
scanf("%d",&n);
for(i=1;i<=2*n-1;i++)
{if(i<=n)k=i;else k=2*n-i;
for(j=1;j<=n-k;j++)printf(" ");
for(j=1;j<=2*k-2+n;j++)printf("*");
printf("\n");}}
1-9. 编程,输入n值,输出如下例(n=4)所示的图形:
****
*
*
****
————
main()
{
int i,j,n;
printf("\nInput n=");
scanf("%d",&n);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符图形
例1:*号图形(打印行数n由键盘输入)
分析(2)号图形:
从第1行打印到第n行,打印第i行时(i从1~n),首先打印n-i 个空格;接着打印i个*号;换行; 分析:(6)号图形:
打印第i行(i 从1~n)时,首先打印i-1个空格;接着打印2(n-i)+1个*号;换行;
#include "stdio.h"
void main(){ /*打印(2)号图形*/
int n,i,j;
printf("Input n=");
scanf("%d",&n);
for (i = 1;i <= n;i++) {
for (j = 1;j <= n-i;j++)
putchar(' ');
for (j=1;j<=i;j++)
putchar('*');
printf("\n");
}
}
例2:打印如下数字方阵(打印行数n可输入)
1 2 3 4 5
2 2
3
4 5
3 3 3
4 5
4 4 4 4 5
5 5 5 5 5
(1)
特点:每行主对角线之前打印行号,主对角线之后打印列号
#include "stdio.h"
void main(){
int i,j,n;
printf("Input n =");
scanf("%d",&n);
for (i = 1;i <= n;i++) {
for (j = 1;j <= i;j++)
printf("%4d",i);
for (j = i + 1;j <= n;j++)
printf("%4d",j);
printf("\n");
}
}
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
(2)
特点:每行主对角线之前从行号打到n;主对角线之后从1打到行号-1
#include "stdio.h"
void main(){
int i,j,n;
printf("Input n=");
scanf("%d",&n);
for(i = 1;i <= n;i++) {
for(j = i;j <= n;j++)
printf("%4d",j);
for(j = 1;j <= i-1;j++)
printf("%4d",j);
printf("\n");
}
}
思考:图形位置向屏幕左边移动m列,以及图形位置放在屏幕中央该怎么办?例3:打印n阶杨辉三角形(n由键盘输入)
分析:杨辉三角形的第i行(i从0~n)是i次二项式(x+y)i 的展开系数
递推法计算组合数
#include "stdio.h"
void main(){
int c,n,i,j;
printf("Input n =");
scanf("%d",&n);
for (i = 0;i <= n;i++) {
for (j = 0;j < n-i;j++)
printf("%4c",' ');
c = 1;
for (j = 0;j <= i;j++) {
printf("%4d",c);
printf("%4c",' ');
c = c * (i - j) / (j + 1);
/*可以写成c *= (i - j) / ( j + 1)吗?*/ }
printf("\n");
}
}。

相关文档
最新文档