国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言習題練習

這篇具有很好參考價值的文章主要介紹了C語言習題練習。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C語言習題練習,c語言


一、offsetof宏

首先我們要了解什么是offsetof宏:
C語言習題練習,c語言

. 此具有函數(shù)形式的宏返回數(shù)據(jù)結(jié)構(gòu)或聯(lián)合類型中成員成員的偏移值(以字節(jié)為單位)。
. 返回的值是size_t類型的無符號整數(shù)值,其字節(jié)數(shù)位于指定成員與其結(jié)構(gòu)開頭之間。

什么意思呢,可以看到下面這張圖片:
C語言習題練習,c語言
下面我們來看到這一習題:

習題內(nèi)容:
寫一個宏,計算結(jié)構(gòu)體中某變量相對于首地址的偏移。

解題思路:
根據(jù)題意,我們需要先定義一個宏OFFSETOF,因為要返回成員變量相對于起始位置的偏移量,所以需要傳入結(jié)構(gòu)體名稱以及成員變量名;
那怎么計算偏移量呢?
我們可以將起始地址取為0x00000000,然后返回成員變量的地址,那所得的結(jié)果就是偏移量啦;

代碼演示:

#include<stdio.h>
#define OFFSETOF(STN,MEN) (int)&(((struct S*)0)->MEN)
typedef struct S
{
	int a;
	char b;
	char c;
	int d;
}node;
int main()
{
	printf("%d\n", OFFSETOF(node S, a));
	printf("%d\n", OFFSETOF(node S, b));
	printf("%d\n", OFFSETOF(node S, c));
	printf("%d\n", OFFSETOF(node S, d));
	return 0;
}
}

輸出結(jié)果:
C語言習題練習,c語言
解析:
C語言習題練習,c語言

二、交換奇偶位

習題內(nèi)容 :
寫一個宏,可以將一個整數(shù)的二進制位的奇數(shù)位和偶數(shù)位交換。

解題思路:
根據(jù)題意,我們需要先定義一個宏EXCHANGE,需要傳入要交換變量的名稱;
因為要交換交換奇偶位,所以可以將奇數(shù)位和偶數(shù)位分別取出來,然后奇數(shù)位左移一位,
偶數(shù)位右移一位,相加所得的結(jié)果就是交換后的結(jié)果啦;

代碼演示:

#include<stdio.h>
#define EXCHANGE(n) (((n&0x55555555)<<1)+((n&0xaaaaaaaa)>>1))

int main() {
	int a = 21;
	int b = EXCHANGE(a);
	printf("%d", b);
	return 0;
}

運行結(jié)果:
C語言習題練習,c語言
解析:
C語言習題練習,c語言

三、原地移除數(shù)組

習題內(nèi)容:
原地移除數(shù)組中所有的元素val,要求時間復雜度為O(N),空間復雜度為O(1)
要求:移除數(shù)組中需要移除的元素后,返回新的數(shù)組長度

解題思路:
根據(jù)題意,這道題我們可以用雙指針的方法,先讓一個指針指向數(shù)組起始位置,后一個指針隨著for循環(huán)移動,找到如果不是要移除的數(shù),就將它移動到第一個指針所在位置,然后第一個指針后移,這樣第一個指針最后就會指向最終數(shù)組的后一位,而其所在位置下標就是新數(shù)組長度;

代碼演示:

#include<stdio.h>

int removeElement(int* nums, int numsSize, int val) {
    int pos = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] != val) {
            nums[pos] = nums[i];
            pos++;
        }
    }
    return pos;

}

int main() {
    int arr[] = { 0,1,2,2,3,0,4,2 };
    int val = 2;
    int len = sizeof(arr) / sizeof(arr[0]);
    int ret=removeElement(arr,len,val);
    for (int i = 0; i < ret; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

運行結(jié)果:
C語言習題練習,c語言
解析:
C語言習題練習,c語言


總結(jié)

這些試題是我覺得比較典型的例題,在這里就給大家展示一下;
希望大家好好學習,天天向上!文章來源地址http://www.zghlxwxcb.cn/news/detail-611290.html

到了這里,關(guān)于C語言習題練習的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C語言之數(shù)組練習題

    C語言之數(shù)組練習題

    第1關(guān):數(shù)組插入元素 300 任務(wù)要求 參考答案 評論106 任務(wù)描述 相關(guān)知識 數(shù)組 數(shù)組元素的表示方法 編程要求 測試說明 任務(wù)描述 本關(guān)需要你將一個數(shù)插入到一組已經(jīng)排好序的數(shù)組并輸出。 相關(guān)知識 數(shù)組在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式

    2024年02月05日
    瀏覽(25)
  • 【C語言】練習題整理:11

    今天是10道選擇題 下面代碼段的輸出結(jié)果是: -12 自右至左的結(jié)合方向稱為“右結(jié)合性”。最典型的右結(jié)合 性運算符是賦值運算符。 如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z,再執(zhí)行x=(y=z)運算。 C語言運算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯誤。 計算順序是

    2024年02月11日
    瀏覽(27)
  • C語言/C++練習題

    題目:從鍵盤輸入年份和月份,輸出這個月的天數(shù)。 【樣例輸入】2023 1 【樣例輸出】31 【樣例輸入】2020 2 【樣例輸出】29 提示:當輸入的月份為2月份時,需要判斷該年年份是否為閏年。 判斷閏年的條件:年份為4的倍數(shù)并且不是100的倍數(shù),或者年份是400的倍數(shù)。 ? 在控制

    2024年02月06日
    瀏覽(26)
  • 【C語言】初階完結(jié)練習題

    【C語言】初階完結(jié)練習題

    ???個人主頁:庫庫的里昂 ???CSDN新晉作者 ???歡迎 ??點贊?評論?收藏 ??收錄專欄:C語言初階 ??其他專欄:代碼小游戲 ???希望作者的文章能對你有所幫助,有不足的地方請在評論區(qū)留言指正,大家一起學習交流!?? 【前言】 C語言初階 知識點已經(jīng)全部更完,相

    2024年02月14日
    瀏覽(27)
  • C語言循環(huán)語句進階練習題

    C語言循環(huán)語句進階練習題

    第1關(guān):求出分數(shù)序列前n項之和 100 任務(wù)要求 參考答案 評論98 任務(wù)描述 相關(guān)知識 scanf 分數(shù)序列 編程要求 測試說明 任務(wù)描述 本關(guān)需要你求出分數(shù)序列前 n 項之和。 相關(guān)知識 你需要使用到 scanf 函數(shù)和循環(huán)語句來完成本關(guān)任務(wù)。 scanf 函數(shù)名: scanf 功 能:執(zhí)行格式化輸入 。 用

    2024年02月05日
    瀏覽(21)
  • 【c語言】五道經(jīng)典練習題④

    【c語言】五道經(jīng)典練習題④

    ? 目錄 ①、年月日經(jīng)過n天后的日期 ?②、坐標排序 ③、統(tǒng)計文件中出現(xiàn)某個單詞的次數(shù) ④、輸出含for的行 ⑤、比較兩個文本是否相等 題述: 定義包含年月日表示的日期的結(jié)構(gòu)體,寫程序?qū)崿F(xiàn)計算某年某月某日過n天后的日期是哪年哪月哪日 思路: 1、 這種題因為關(guān)于年了

    2024年02月10日
    瀏覽(23)
  • 習題練習 C語言(暑期第四彈)

    習題練習 C語言(暑期第四彈)

    重要的事說三遍! 學習!學習!學習! 若有定義 int a[8]; ,則以下表達式中不能代表數(shù)組元素 a[1] 的地址的是( ) A: a[0]+1 B: a[1] C:a[0]++ D: a+1 題目解析: D選項a計算時是首元素地址,再加1,就是a[1]的地址,AB明顯對,C選項a[0]先和++結(jié)合,形成一個表達式,不能對表達式取地址

    2024年02月09日
    瀏覽(23)
  • 習題練習 C語言(暑期第三彈)

    習題練習 C語言(暑期第三彈)

    重要的事說三遍! 學習!學習!學習! 二維數(shù)組X按行順序存儲,其中每個元素占1個存儲單元。若 X[4][4] 的存儲地址為 Oxf8b82140 , X[9][9] 的存儲地址為 Oxf8b8221c ,則 X[7][7] 的存儲地址為( ) A: Oxf8b821c4 B: Oxf8b821a6 C:Oxf8b82198 D: Oxf8b821c0 題目解析: 假設(shè)每行有n個元素:那x[9][9]元素的

    2024年02月10日
    瀏覽(22)
  • 習題練習 C語言(暑期第二彈)

    習題練習 C語言(暑期第二彈)

    重要的事說三遍! 學習!學習!學習! 對于代碼段,下面描述正確的是( ) A: 其中循環(huán)控制表達式與0等價 B: 其中循環(huán)控制表達式與’0’等價 C:其中循環(huán)控制表達式是不合法的 D: 以上說法都不對 題目解析: 因print(“*”)函數(shù)調(diào)用的返回值是字符串中字符的個數(shù),即為1。

    2024年02月10日
    瀏覽(19)
  • C語言——指針和數(shù)組練習題解析

    C語言——指針和數(shù)組練習題解析

    學習了指針的初階和進階后,已經(jīng)對指針有了一定了解。下面就需要做題目,去鞏固所學的知識。 對數(shù)組名的理解: 數(shù)組名是數(shù)組首元素的地址,但是由兩個例外 sizeof(數(shù)組名),這里的數(shù)組名表示整個數(shù)組,計算的是整個數(shù)組的大小。 數(shù)組名,這里的數(shù)組名是整個數(shù)組,

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包