第一题:
在终端的界面上输出:__-__-__-__ 1秒过后,
变成 1_-__-__-__ 再1秒过后,
变成 12-__-__-__ 依此类推 经过8秒,
最终变成 12-34-56-78
\b 是printf里面,光标向左移动的转义符
int main(int argc, const char *argv[])
{
printf("__-__-__-__");
fflush(stdout);
for(int i=0;i<11;i++)
{
printf("\b");
}
fflush(stdout);
sleep(1);
printf("1");
fflush(stdout);
sleep(1);
printf("2-");
fflush(stdout);
sleep(1);
printf("3");
fflush(stdout);
sleep(1);
printf("4-");
fflush(stdout);
sleep(1);
printf("5");
fflush(stdout);
sleep(1);
printf("6-");
fflush(stdout);
sleep(1);
printf("7");
fflush(stdout);
sleep(1);
printf("8");
fflush(stdout);
printf("\n");
return 0;
}
第二题: 将一张bmp图片的大小更改成原来的4倍,宽度和高度都要对应的变成原来的2倍,多出来的像素点用黑色填充
int main(int argc, const char *argv[])
{
FILE* fp = fopen("./1.bmp","r+");
//获取原有高宽
int width = 0,hight = 0;
fseek(fp,18,SEEK_SET);
fread(&width,4,1,fp);
fread(&hight,4,1,fp);
//写入新的高宽
width = width*2;
hight = hight*2;
fseek(fp,18,SEEK_SET);
fwrite(&width,4,1,fp);
fwrite(&hight,4,1,fp);
printf("文件像素格式: %d * %d\n",width,hight);
//改变图片
fseek(fp,3993174,SEEK_SET);
int w = width/2;
int h = hight/2;
unsigned char bgr[3] = {0,0,0};
for(int i=width/2;i<width;i++)
{
for(int j=0;j<hight;j++)
{
fwrite(bgr,3,1,fp);
}
}
for(int i=0;i<width/2;i++)
{
for(int j=hight/2;j<hight;j++)
{
fwrite(bgr,3,1,fp);
}
}
fclose(fp);
return 0;
}