怎样用C语言编写个爱心图象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用C语言编写个爱心图象相关的知识,希望对你有一定的参考价值。
求救!
创建一个心形图案需要的最长字符串,充分利用printf函数输出字符串的丰富控制功能,按心形图案每行所需长度和位置,对所创建的字符串进行截断并在所需位置上输出,最后在屏幕上形成由字符组成的心形图案。//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void)
char a[]="I love you I love you I love you I l";
printf("\\n\\n\\n");
printf("%*.*s\\n",58,21,"_*=_ _=*_");
printf("%*.*s\\n",61,25,"I love yo u I love!");
printf("%*.*s\\n",63,29,"I love you I l ove you I love");
printf("%*.*s\\n",65,33,a);//在屏幕第65个字符处开始输出字符串a的前33个字符,其他各句意义相同
printf("%*.*s\\n",66,35,a);
printf("%*.*s\\n",66,35,a);
printf("%*.*s\\n",65,33,a);
printf("%*.*s\\n",64,31,a);
printf("%*.*s\\n",63,29,a);
printf("%*.*s\\n",61,25,a);
printf("%*.*s\\n",59,21,a);
printf("%*.*s\\n",57,17,a);
printf("%*.*s\\n",55,13,a);
printf("%*.*s\\n",53,9,a);
printf("%*.*s\\n",51,5,a);
printf("%*.*s\\n",50,3,a);
printf("%*.*s\\n",49,1,a);
return 0;
参考技术A 倒心:
#include<stdio.h>
#include<math.h>
void main()
int a,b,c;
for(a=1;a<=6;a++)
for(b=1;b<=6-a;b++)
printf(" ");
for(c=1;c<=2*a-1;c++)
if(a<5&&(c==1||c==2*a-1)||(a==5&&(c==2||c==5||c==8))||a==6&&(c==4||c==5||c==7||c==8))
printf("\3");
else printf(" ");
printf("\n");
双心:
#include<stdio.h>
#include<math.h>
void main()
int a,b,c;
for(a=1;a<=6;a++)
for(b=1;b<=6-a;b++)
printf(" ");
for(c=1;c<=2*a-1;c++)
if(a<5&&(c==1||c==2*a-1)||(a==5&&(c==2||c==5||c==8))||a==6&&(c==4||c==5||c==7||c==8))
printf("\3");
else printf(" ");
printf("\n");
for(a=1;a<=6;a++)
for(b=1;b<=a;b++)
printf(" ");
for(c=1;c<=11-2*a;c++)
if(a>1&&(c==1||c==11-2*a)||a==1&&(c==2||c==5||c==8))
printf("\3");
else printf(" ");
printf("\n");
正心:
#include<stdio.h>
#include<math.h>
void main()
int a,b,c;
printf(" \3\3 \3\3\n");
for(a=1;a<=6;a++)
for(b=1;b<=a;b++)
printf(" ");
for(c=1;c<=11-2*a;c++)
if(a>1&&(c==1||c==11-2*a)||a==1&&(c==2||c==5||c==8))
printf("\3");
else printf(" ");
printf("\n");
参考技术B 最简单的就是用Printf语句输出一个。本回答被提问者采纳 参考技术C 双层循环就可以了
不过最简单的楼上的兄弟已经说了
怎样用C语言编写这个程序
有一个5*5的表格,将1,2,3,4四个数填入到这25个小格中,其中1可以放在任何小格中,2必须和1相邻,3必须和1,2都相邻,4则要和1,2,3,都相邻,怎样填写这些数字才能够使这个表格里所有数字的和最大
高手在哪啊,高手,求高手指点。
#include "conio.h"
#include "dos.h"
typedef struct
int x;
int y; //二维坐标
int value; //每4进制位的值
int near_flag;
/*权值,
二进制:000
第1位是1表示已经与0相连
第2位是1表示已经与1相连
第3位是1表示已经与2相连
例:
110 :表示与2和1相连,但是不与0相连
111 :表示与0,1,2都相连
001 :表示与0相连,与1,2不相连
*/
xy_value;
xy_value num[26];
/* 判断权位,确定相连的数是否符合 */
jdg_flag()
int i;
for(i=0;i<25;i++)
switch (num[i].value)
case 3: if( num[i].near_flag != 6) return 0; else break;
case 2: if(( num[i].near_flag& 3)!= 3) return 0; else break;
case 1: if(( num[i].near_flag& 1)!= 1) return 0; else break;
return 1;
flag()//初始化权位
int i;
int x,y;
for(i=0;i<25;i++)
x=num[i].x;
y=num[i].y;
if((x-1)>=0) //如果越界,则越界的那边不给予权值
num[i].near_flag|=(1<<(num[(x-1)*5+y].value));
if((x+1)<=4)
num[i].near_flag|=(1<<(num[(x+1)*5+y].value));
if((y-1)>=0)
num[i].near_flag|=(1<<(num[(y-1)+x*5].value));
if((y+1)<=4)
num[i].near_flag|=(1<<(num[(y+1)+x*5].value));
/* 增加1 */
addnum(int i)
num[i].value+=1;
if(num[i].value==4)
num[i].value=0;
i=addnum(i+1);
return i;
main()
int i,sumbuff=0,sum=0;
int x,y;
for( i= 0; i< 26; i++)//初始化结构体
num[i].value= 0;
num[i].x= (int)(i/ 5); //初始化坐标
num[i].y= i% 5;
while( num[25].value== 0)
addnum(0); //0表示从第一位开始
flag();
if(!jdg_flag())
for(i=0;i<25;i++)
num[i].near_flag&=0; /*由于不符合条件,必须消除消权*/
continue;
for( i=0; i<25; i++)
sumbuff+=num[i].value; //能运算到这,说明符合条件.求和
if(sumbuff>sum)//输出目前得到的 满足条件的 最大和的 矩阵
for(x=0;x<5;x++)
for(y=0;y<5;y++)
printf("%d ",num[x*5+y].value);
printf("\n");
sum=sumbuff;
printf("now sum is:%d\n",sum);
printf("\n");
sumbuff=0;
for(x=0;x<5;x++)
for(y=0;y<5;y++)
printf("%d ",num[x*5+y].value);
printf("\n");
这是最笨的方法,一个个比较。。我跑半个小时了 - -!
一共有1000多万亿种,3G CPU,每秒30亿次浮点型运算。假设每次比较一次需要一个浮点型的话,需要100小时左右!那么。。。这个算法 将摇摇无期。。。 跑上一年我都不觉得奇怪。。
算法,基本没有。
1.当成二维坐标。
2.赋值结构体的时候,我是弄成类似25位的4进制数。每个结构体中的value为每位的数值。
26位为循环用的标志位。每次循环,4进制数,增加一。正好可以遍历所有的数。
额。。我写成的是 0,1,2,3四个数字填。
20:54--------------------------
目前情况是这样的:
3 2 1 0 1
1 0 2 2 3
3 2 2 1 2
2 1 0 0 0
0 0 0 0 0
now sum is:28 参考技术A 我目前所想到的,不一定完全正确
第一步:5*5的空格中每个空格初始化为1
第二步:把每个空格中的数字1再+1试试,符合2必须和1相邻条件则加一
然后每行就是21212,21212,21212,21212,21212
然后以此类推 参考技术B 每个格的上下左右是相邻,左上角左下角,右上角右下角,算不算相邻?我试试看能不能编出来追问
只有上下左右才算相邻
参考技术C 这个我以前解过,和一个很有名的堆房子手机游戏city bloxx的部分内容一样。这个的数学论证方法在这:club。tech。163。com/bbs/mobile_0s22/92272018。html (把。改成.) 参考技术D 你的相邻是什么意思?斜着的(比如左上角算不)算么???一个格子旁边有8个,是最接近的那4个还是8个都可以?追问
只有最近的4个方向才可以
第5个回答 2011-08-29 int i;int sum;
for(i=1;i<=10;i++)
sum = sum + i;
手头没用C++ 大概这个意思
以上是关于怎样用C语言编写个爱心图象的主要内容,如果未能解决你的问题,请参考以下文章