c語言作業(一)
阿新 • • 發佈:2019-02-03
老師要求所做的作業如下:
練習1:
*
***
*****
***
*
程式碼如下所示:
#include<stdio.h>
int main()
{
int a,b,c;
for(a=0;a<=3;a++)
{
for(b=0;b<=2-a;b++)
printf(" ");
for(c=0;c<=2*a;c++)
printf("*");
printf("\n");
}
for (a=0;a<=2;a++)
{
for(b=0;b<=a;b++)
printf(" ");
for(c=0;c<=4-2*a;c++)
printf("*");
printf("\n");
}
return 0;
}
練習2:
----------------------------
***www.baidu.com***
++++++++++++++++++++++++++++
相應程式碼如下:
#include<stdio.h>
int main()
{
printf("----------------------------\n");
printf(" ***www.baidu.com***\n");
printf("++++++++++++++++++++++++++++\n");
}
我覺得這道題的思路不是這樣的,感覺這道題我寫的很麻瓜,應該錯了;
練習:
1.給定一個整型數a,設定a的bit3(為1),保證其他位不變。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a = a | (1 <<3);
printf("aΪ:0x%x.\n",a);
return 0;
}
2.給定一個整形數a,設定a的bit3~bit7,保持其他位不變。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a = a & (~(0x3f << 3));//我將3-7位置為0
printf("a的值為:0x%x.\n", a);
return 0;
}
3.給定一個整型數a,清除a的bit15,保證其他位不變。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a = a & (~(1<<15));
printf("a的值為:0x%x.\n", a);
return 0;
}
4.給定一個整形數a,清除a的bit15~bit23,保持其他位不變。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a =(a & (~(0x1FF << 15)));//將15-23位置0在跟a進行位與運算
printf("a的值為:0x%x.\n", a);
return 0;
}
5.給定一個整形數a,取出a的bit3~bit8。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a = (a & (0x3F << 3)) >> 3;//利用0x3f左移兩位,跟a位與運算,然後在右移2位,取到第3位跟第8位的數
printf("a的值為:0x%x.\n", a);
return 0;
}
6.用C語言給一個整形數的bit7~bit17賦值937(其餘位不受影響)。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a = a & (~(0x7FF<<7));//將7~ 17位置0
a = a | (937<<7);
printf("a的值為:0x%x.\n", a);
return 0;
}
7.用C語言將一個整形數的bit7~bit17中的值加17(其餘位不受影響)。
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
a = a + ((17&0x1F)<<7);//將17左移7位到7~17位,然後與a相加
printf("a的值為:0x%x.\n", a);
return 0;
}
8.用C語言給一個整形數的bit7~bit17賦值937,同時給bit21~bit25賦值17.
相應程式碼如下:
#include<stdio.h>
int main()
{
unsigned int a = 0x12345678;
unsigned int b = (a & (~(0x7FF<<7))) + (937 <<7);
a =b & (~(0x1f<<21)) +(17<<21);
printf("aµÄֵΪ£º0x%x.\n", a);
return 0;
}