15.1
#include<stdio.h>
#include<string.h>
int toint(char*);
int main(void)
{
printf("%d",toint("0011100"));
return 0;
}
int toint(char*p)
{
int l=strlen(p);
int i,j,sub,total;
for(i=0,total=0;i<l;i++)
{
for(j=0,sub=1;j<i;j++)
sub*=2;
total+=(p[l-i-1]-48)*sub;
}
return total;
}
15.2
#include<stdio.h>
#include<string.h>
int toint(char*);
void tostring(unsigned);
int main(int num,char **p)
{
int i,j;
i=toint(p[1]);
j=toint(p[2]);
tostring(i);
tostring(~i);
tostring(j);
tostring(~j);
tostring(i&j);
tostring(i|j);
tostring(i^j);
return 0;
}
int toint(char*p)
{
int l=strlen(p);
int i,j,sub,total;
for(i=0,total=0;i<l;i++)
{
for(j=0,sub=1;j<i;j++)
sub*=2;
total+=(p[l-i-1]-48)*sub;
}
return total;
}
void tostring(unsigned t)
{
int l=sizeof(int)*8;
int i;
for(i=0;i<l;i++)
{
if(i%8==0)printf(" ");
printf("%d",(1u<<l-1-i&t)>>l-i-1);
}
puts("");
}
15.3
#include<stdio.h>
int open(int);
int main(void)
{
printf("%d",open(31));
return 0;
}
int open(int i)
{
int l=sizeof(int)*8;
int j,k;
k=0;
for(j=0;j<l;j++)
if((1u<<j&i)>>j==1)
k++;
return k;
}
15.4
#include<stdio.h>
int main(void)
{
printf("%d",ifopen(8,2));
return 0;
}
int ifopen(int num,int position)
{
if((1u<<position&num)>>position==1)
return 1;
return 0;
}
15.5
#include<stdio.h>
int rotate(unsigned,int);
int main(void)
{
printf("%u",rotate(1,31));
return 0;
}
int rotate(unsigned x,int num)
{
int i;
for(i=0;i<num;i++)
{
if((1u<<31&x)>>31==1)
{
x<<=1;
x+=1;
}
else
x<<=1;
}
return x;
}
15.6
#include<stdio.h>
struct font
{
unsigned id:8;
unsigned size:7;
unsigned alignment:2;
unsigned bold:1;
unsigned italic:1;
unsigned underline:1;
};
void menu(void);
int main(void)
{
char c;
char *p[3]=
{
"left",
"center",
"right"
};
struct font fuck={1,12};
puts("ID SIZE ALIGNMENT B I U");
printf("%d %d %s %s %s %s",
fuck.id,fuck.size,p[fuck.alignment],fuck.bold?"on":"off",fuck.italic?"on":"off",fuck.underline?"on":"off");
puts("");
puts("");
menu();
scanf(" %c",&c);
while(getchar()!='\n')
;
while(c!='q')
{
switch(c)
{
case 'a':
puts("Select alignment:");
puts("l)left c)center r)right");
scanf(" %c",&c);
while(getchar()!='\n')
;
switch(c)
{
case 'l':
fuck.alignment=0;
break;
case 'c':
fuck.alignment=1;
break;
case 'r':
fuck.alignment=2;
break;
default:
puts("wrong");
break;
}
break;
case 'b':
fuck.bold=1;
break;
case 'f':
{
int f;
printf("Enter the font number (0-255): ");
scanf(" %d",&f);
fuck.id=f&255;
while(getchar()!='\n')
;
break;
}
case 'i':
fuck.italic=1;
break;
case 's':
{
int f;
printf("Enter the font size (0-127): ");
scanf(" %d",&f);
fuck.size=f&127;
while(getchar()!='\n')
;
break;
}
case 'u':
fuck.underline=1;
break;
default:
puts("wrong");
break;
}
puts("");
puts("ID SIZE ALIGNMENT B I U");
printf("%d %d %s %s %s %s",
fuck.id,fuck.size,p[fuck.alignment],fuck.bold?"on":"off",fuck.italic?"on":"off",fuck.underline?"on":"off");
puts("");
menu();
scanf(" %c",&c);
while(getchar()!='\n')
;
}
puts("Bye!");
return 0;
}
void menu(void)
{
puts("f)change font s)change size a)change alignment");
puts("b)toggle bold i)toggle italic u)toggle underline");
puts("q)quit");
}
15.7
#include<stdio.h>
#define id 12
#define idmask 255
#define size 5
#define sizemask 127
#define alignment 3
#define alignmentmask 3
#define bold 2
#define mask 1
#define italic 1
#define underline 0
void menu(void);
int main(void)
{
unsigned long fuck=0;
char c;
char *p[3]=
{
"left",
"center",
"right"
};
fuck|=1u<<id;
fuck|=12u<<size;
puts("ID SIZE ALIGNMENT B I U");
printf("%d %d %s %s %s %s",
(fuck&idmask<<id)>>id,(fuck&sizemask<<size)>>size,p[(fuck&alignmentmask<<alignment)>>alignment],
(fuck&mask<<bold)?"on":"off",(fuck&mask<<italic)?"on":"off",(fuck&mask<<underline)?"on":"off");
puts("");
puts("");
menu();
scanf(" %c",&c);
while(getchar()!='\n')
;
while(c!='q')
{
switch(c)
{
case 'a':
puts("Select alignment:");
puts("l)left c)center r)right");
scanf(" %c",&c);
while(getchar()!='\n')
;
switch(c)
{
case 'l':
fuck&=~(alignmentmask<<alignment);
break;
case 'c':
fuck&=~(alignmentmask<<alignment);
fuck|=1u<<alignment;
break;
case 'r':
fuck&=~(alignmentmask<<alignment);
fuck|=2u<<alignment;
break;
default:
puts("wrong");
break;
}
break;
case 'b':
fuck|=1u<<bold;
break;
case 'f':
{
int f;
printf("Enter the font number (0-255): ");
scanf(" %d",&f);
fuck&=~(idmask<<id);
fuck|=(f&255)<<id;
while(getchar()!='\n')
;
break;
}
case 'i':
fuck|=1u<<italic;
break;
case 's':
{
int f;
printf("Enter the font size (0-127): ");
scanf(" %d",&f);
fuck&=~(sizemask<<size);
fuck|=(f&127)<<size;
while(getchar()!='\n')
;
break;
}
case 'u':
fuck|=1u<<underline;
break;
default:
puts("wrong");
break;
}
puts("");
puts("ID SIZE ALIGNMENT B I U");
printf("%d %d %s %s %s %s",
(fuck&idmask<<id)>>id,(fuck&sizemask<<size)>>size,p[(fuck&alignmentmask<<alignment)>>alignment],
(fuck&mask<<bold)?"on":"off",(fuck&mask<<italic)?"on":"off",(fuck&mask<<underline)?"on":"off");
puts("");
menu();
scanf(" %c",&c);
while(getchar()!='\n')
;
}
puts("Bye!");
return 0;
}
void menu(void)
{
puts("f)change font s)change size a)change alignment");
puts("b)toggle bold i)toggle italic u)toggle underline");
puts("q)quit");
}
分享到:
相关推荐
C Primer Plus 第五版第九章答案,自己编写可以成功运行
( C Primer Plus(第五版)中文版课后编程题全解,非常全,亲测可用
C Primer Plus(第五版)中文版.txt fhnfdjjy
c primer plus 第五版课后习题答案
c++ primer plus 第五版课后习题答案
C Primer Plus第6版编程练习答案.pdf
C Primer Plus第五版中文版是全球最经典的C语言教程,(包括PDF,书中源码,习题解答)。由于资格的原因,分4个RAR上传,都要下载。
C++PrimerPlus第五版习题参考答案
C Primer Plus(第五版)中文版,学习C语言必备,讲的特别详细
c入门必看的c primer plus ,其课后练习题也是很不错的。
c primer plus 第六版 中文版 源代码+勘误+习题答案,从官方处获得,因为官网需注册很麻烦,所以索性上传,与大家分享。 共三部分,针对第六版,含课后习题,源代码,书中勘误。
《C Primer Plus》第六版 第十一章编程练习答案,亲测编译通过
在这里下载了C Primer Plus(第五版)中文版可惜没有书签,就用OCR获取了书签生成了用 PdgCntEditor 1.07a 可以使用的格式共大家自行添加书签。不过原书是加密的不能编辑还有借助解密工具PDF Password Remover v3.0 。...
c++ primer plus 课后编程练习的完整答案 PDF文件.
本书是c++ primer plus第五版的源代码,以及好多高手的编程心路沥程,不得不看!! 听君一席话胜读十年书!
《C++ Primer Plus第6版中文版》学习笔记(第十章) 红字内容是有疑问或者没把握的。 绿字部分是比较重要,或者经过确认的
通过学习《C Primer Plus(第五版)中文版》,你将奠定坚实的C编程基础。 与以前的版本一样,作者的目标仍旧是为读者提供一本入门性、条理清晰、见解深刻的C语言教程。作者把编程概念和C语言的细节很好地融合在一起...
C++Primer Plus(第6版)中文版编程练习答案--第四章.pdf
C Primer Plus (第五版)中文版——第 8 章 编程练习参考程序
C Primer Plus (第五版) 课后编程练习答案 (完整) 文字版