程序员的世界杯

#博球一看,记录疯狂!CSDN与你共观世界杯#
卡塔尔世界杯正如火如荼的进行,就在今晚半决赛即将打响,阿根廷与克罗地亚,法国与摩洛哥,大战即将上演,梅老板带领的阿根廷能否冲入决赛,最终弥补个人版图中唯一缺少的属于世界杯的那一块?克罗地亚作为加时赛之王能否再次上演以弱胜强,逆袭到底?姆皇带领的法国战车能否卫冕成功?作为本节世界杯最大黑马的北非之王摩洛哥能否一黑到底?

这些都是看点,但是这和程序员的我有什么关系呢?

#include <stdio.h>

int main(int argc, char **argv)
{
	printf("The World Cup has nothing to do with me!\n\r");
	return 0;
}

虽然事实如此但是作为程序员怎么也要强行挽尊,参与到世界杯中来,这不先给各位看官画个球:

#include <stdio.h>

void picture()
{
	float x,y,a;
	for(y=1.3;y>-1.3;y-=0.1)
	{	
		for(x=-1.5;x<1.5;x+=0.04)
		{
			a=x*x+y*y-1;      
			putchar(a*a*a-x*x*y*y*y<=0.0?'*':' ');
		}

		putchar('\n');
	}
}

int main()
{
	picture();
	return 0;
}

在这里插入图片描述

这个球好看吗?哈哈哈,不好意思各位看官,球画错了。。。是时候表演真正的技术了,话不多说,我们上代码:

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

#pragma pack(1)  

typedef struct {
	unsigned char bfType[2];
	unsigned int bfSize;
	unsigned short bfReserved1;
	unsigned short bfReserved2;
	unsigned int bfOffBits;
}bitmapFileHeader;

typedef struct {
	unsigned int biSize;
	int biWidth;
	int biHeight;
	unsigned short biPlanes;
	unsigned short biBitCount;
	unsigned int biCompression;
	unsigned int biSizeImage;
	int biXPixPerMeter;
	int biYPixPerMeter;
	unsigned int biClrused;
	unsigned int biClrImportant;
}bitmapInfoHeader;

int main(){
	FILE *fp,*fp_txt;
	if((fp=fopen("/fwork4/lihuan/temp/zuqiu.bmp","rb"))==NULL){
		perror("can not open file!");
		return -1;
	}
	
	bitmapFileHeader bfHeader;
    printf("bfHeader is %d\r\n",sizeof(bitmapFileHeader));
	fread(&bfHeader,14,1,fp);
	bitmapInfoHeader biHeader;
    printf("biHeader is %d\r\n",sizeof(bitmapInfoHeader));
	fread(&biHeader,40,1,fp);

	int imSize=biHeader.biSizeImage;
	int width=biHeader.biWidth;
	int height=biHeader.biHeight;
	int bitCount=biHeader.biBitCount;
    printf("imSize %d,width %d,height %d,bitCount %d\r\n", imSize, width, height, bitCount);

	fseek(fp,bfHeader.bfOffBits,SEEK_SET);
    printf("bfOffBits is %d", bfHeader.bfOffBits);

	unsigned char*imageData=(unsigned char*)malloc(imSize*sizeof(unsigned char));
	fread(imageData,imSize*sizeof(unsigned char),1,fp);

	int lineBytes=(bitCount*width+31)/32*4;//单行需要的字节数,会有填充
    printf("line Byte is %d\r\n", lineBytes);
	int i,j,k;
	int colour;
	/*modify by mianchaodahai0902*/
	for(i=0;i<height;i++){
		for(j=0;j<lineBytes;j++){
			colour=*(imageData+lineBytes*i+j);
            for(k=0;k<8;k++)
            {
             colour >>=k;
             if(((colour & 0x01))== 1)
                 printf(".");
             else
                 printf(" ");
            }
		}
		printf("\r\n");
	/*modify by mianchaodahai0902*/
	}
	
	free(imageData);
	fclose(fp);
	return 0;
}

打印效果如下:
在这里插入图片描述
这里也放一下原图,大家感受下差距:
在这里插入图片描述
上面代码的原理就是先解析输入bmp格式图片,然后将它显示出来,这里的图片我选取的都是单色位图,需要将普通图片使用工具转换一下,然后对于单像素图1输出点,0输出空格,程序运行时将打印输出先重定位到一张txt上面,然后再缩小txt看全局的图,不然你很难看清楚输出的是什么。

再来一张梅老板的画像,可惜单色图失真有点严重,大家将就着看吧:
在这里插入图片描述
回到世界杯的话题上,我实际还是比较喜欢魔笛带领的克罗地亚,与梅球王带领的阿根廷,两队即将开战,只有一个能继续冲向决赛,在这个被定义为诸神黄昏的世界杯中,不断有真神转身远去,无论是苏亚雷斯,内马尔,还是C罗,都逃不过岁月这把刀,正所谓没有人永远18岁,但永远有人18岁,这便是竞技体育的残酷与魅力吧。足球诗人贺伟曾说过:“我想真正的成熟,应该不是追求完美,而是直面自己的缺憾,这才是生活的本质。罗曼罗兰曾经说过,这个世上只有一种真正的英雄主义,那就是认清生活的真相,并且仍然热爱它”。
好了,魔笛与梅西两位真神对决,只能有一位继续朝前走,谁才是能留到最后的真神?我们拭目以待!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值