航電OJ C語言-實驗7

1. (10分) c-lab7-1 帶參數宏的定義與使用

題目描述
定義一個帶參數的宏,實現兩個數從大到小的排序。利用該宏定義編程實現輸入兩個數,輸出排序後的情況。

輸入描述
輸入雙精度數。

輸出描述
按printf("%.2f,%.2f\n",a,b)從大到小的順序輸出排序結果,逗號爲英文

輸入樣例
3,5

輸出樣例
5.00,3.00

用戶代碼

#include<stdio.h>

#define sort(a,b) (a>b)?printf("%.2f,%.2f\n",a,b):printf("%.2f,%.2f\n",b,a)
int main()
{
	double a,b,t=0;
	scanf("%lf,%lf",&a,&b);
	sort(a,b,t);
	
	return 0;
}

最後保存時間: 2019-12-04 16:24:45

本題得分:10分(2/2)
查看最新評判結果

2. (15分) c-lab7-2 用帶參宏求三個數的最大值

題目描述
定義一個帶參數的宏MAX(x,y,z),實現只用一個宏求三個數中的最大值。

輸入描述
依次輸入三個雙精度數

輸出描述
輸出其中的最大值printf(“MAX=%.2f”,MAX(a,b,t))。

輸入樣例
1,2,3.6789

輸出樣例
MAX=3.68

用戶代碼

#include<stdio.h>
#define MAX(a,b,c) (a>b)?(a>c?a:c):(b>c?b:c)
int main()
{
	double a,b,c;
	scanf("%lf,%lf,%lf",&a,&b,&c);
	printf("MAX=%.2f",MAX(a,b,c));
	return 0;
}

最後保存時間: 2019-12-04 16:35:39

本題得分:15分(3/3)
查看最新評判結果

3. (15分) c-lab7-3 利用位運算取一個數中的某一位 題目描述

編寫函數,實現將一個數(unsigned short)n中的第m位取出來,並輸出該位的值(從右到左第m位,最低位從0開始)。

輸入描述
輸入:依次輸入無符號數n和位數m,逗號爲英文。

輸出描述
輸出:第m位的值。

輸入樣例
5,1

輸出樣例
0

用戶代碼

#include<stdio.h>
int main()
{
	int i,b;
	short a;
	scanf("%hd,%d",&a,&b);
	for(i=1;i<=b;i++)
		a=a>>1;
	a=a&1;
	printf("%hd",a);
	return 0;
}

最後保存時間: 2019-12-04 19:47:35

本題得分:15分(3/3)
查看最新評判結果

4. (15分) c-lab7-4 位運算:將一個數的高四位與低四位交換

題目描述
編寫函數,實現將一個數(8位二進制)中的高四位和低四位交換。

輸入描述
輸入一個整數

輸出描述
以十進制輸出變換後的整數

輸入樣例
165

輸出樣例
90

用戶代碼

#include<stdio.h>
int main()
{
	short a,b,c;
	scanf("%hd",&a);
	b=a&15;
	b=b<<4;
	c=(a>>4)&15;
	a=b+c;
	printf("%d",a);
	return 0;
}

最後保存時間: 2019-12-04 17:47:26

本題得分:15分(3/3)
查看最新評判結果

5. (15分) c-lab7-5 用位運算對要求的位進行處理

題目描述
編寫函數,實現將一個數中最低字節第0、2、4、6位按位取反,而其他位不變(從左到右)。

輸入描述
輸入一個整數。

輸出描述
只輸出最低字節數值。

輸入樣例
43690

輸出樣例
0

用戶代碼

#include<stdio.h>
int main()
{
	unsigned short a;
	scanf("%hd",&a);
	a=a^170;
	a=a<<8;
	a=a>>8;
	printf("%hd",a);
	return 0;
}

最後保存時間: 2019-12-05 00:01:06

本題得分:15分(3/3)
查看最新評判結果

6. (15分) c-lab7-6 編程實現循環移位

題目描述
編寫函數實現將一個短整型數據(0x5545)循環左移n位。所謂循環左移1位,即將最高位存放到最低位,而其他位左移一位。如將101100111010左移一位後爲:011001110101;如果將原數左移兩位則爲:110011101010。

輸入描述
輸入移位的位數

輸出描述
以十六進制輸出移位後短整型數。

輸入樣例
1

輸出樣例
aa8a

用戶代碼

#include<stdio.h>
int main()
{
    int i;
	unsigned short a,b=0x5545;
	scanf("%hd",&a);
	for(i=1;i<=a;i++)
	{
		if(b>=32768)
		{
			b=(b<<1)+1;
		}
		else
			b=b<<1;
	}
	printf("%hx",b);
	return 0;
}

最後保存時間: 2019-12-05 00:00:15

本題得分:15分(3/3)
查看最新評判結果

7. (15分) c-lab7-7 利用位運算實現奇校驗

題目描述
編寫函數,利用位運算符實現對一個數中除最高位以外的其他二進制數進行奇校驗(奇校驗就是在最高位的位置上加入一個值爲1或爲0的位,使該字節各個位中1的數量相加爲奇數),並將校驗位存放到最高位。
例如:×0111001 →10111001
×0010101 →00010101

輸入描述
輸入需要校驗的整數(小於256)

輸出描述
以十六進制輸出被校驗後的數據。

輸入樣例
10

輸出樣例
8a

用戶代碼

#include<stdio.h>
int main()
{
    int i,flag=0;
	unsigned short a,b;
	scanf("%hd",&a);
	b=a;
	for(i=1;i<=8;i++)
	{
		if((b&1)==1)
			flag++;
		b=b>>1;
	}
	if(flag==1||flag==3||flag==5||flag==7)
		a=a&127;
	else
	{
		if(a<255)
		a=a+128;
		if(a==255)
			a=a&127;
	}
	printf("%hx",a);
	return 0;
}

最後保存時間: 2019-12-05 08:27:04

本題得分:15分(3/3)

發佈了23 篇原創文章 · 獲贊 11 · 訪問量 1614
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章