#博球一看,记录疯狂!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岁,这便是竞技体育的残酷与魅力吧。足球诗人贺伟曾说过:“我想真正的成熟,应该不是追求完美,而是直面自己的缺憾,这才是生活的本质。罗曼罗兰曾经说过,这个世上只有一种真正的英雄主义,那就是认清生活的真相,并且仍然热爱它”。
好了,魔笛与梅西两位真神对决,只能有一位继续朝前走,谁才是能留到最后的真神?我们拭目以待!!!