c語言書上例題,c語言簡單例題

本文目錄一覽:

C語言書上例題看不懂,能幫忙看一下嗎?

我用文字解釋一下吧,看看能不能清楚,提問的式子我都進行了加粗,希望能看得出來(圖的話我覺得給出的圖已經可以參考講述的,可以結合我的文字看看)

這個傳遞數組名稱的函數,輸入有兩個,一個是數組,一個是數組長度

那麼我們知道:如果傳遞的n是10,數組長度是10的話,它的元素的索引應該是0-9,也就是最大索引是9,n-1所表示的就是索引最大值。

目標是返順序存放,那麼也就意味着應該將第一個元素(索引是0)與最後一個元素(索引是9)進行互換,將第二個元素(索引是1)和倒數第二個元素(索引是8)進行互換……以此類推,直到中間位置也就是索引是4和5進行交換的時候。這個時候的話,4這個截止條件與n的關係是什麼呢?4=(n-1)/2,這裡不是數學,因為n是整型變量,所以等號右邊出來的只會是整數部分。這就是m=(n-1)/2的來源了,也就是設定交換的最後一個元素的索引號。這裡你可以拿奇數個元素去試試,也是同樣成立的。

根據交換過程,那麼也就相應的有了:

i=0時,j=9=10-1-0

i=1時,j=8=10-1-1

也就是j=n-1-i這個式子的由來。

知道了左邊,其實右邊和左邊是對應的,只不過左邊用的數組的方式,右邊使用的指針的方式。

注意右邊的i,j聲明的是整型的指針,也就是他只能指向一個整型的變量。題目中輸入*x就是相當於給定數組頭部的位置索引,所以i=x就是相當於讓i這個指針指向數組第一個元素。數組就是一系列整型數字連續順序存儲的結果,所以i+1表示的就是i這個元素的下一個元素,也就是數組的第二個元素,因此j=x+n-1表示i這個指針指向到數組第n個元素,也就是數組的末尾了,此時i,j和前面不一樣的,是都不再表示數組的索引號,而是都是指向某個數組元素的指針了。

這裡還聲明了一個p指針,移動了m位,m和上一個定義沒有區別,就是找到中間位置和開頭位置相差多少個元素,於是p=x+m也就是讓p這個指針指向數組中間的元素。

C語言書上的一個例題看不懂

#includeiostream

#includemath.h

int main(){

int i,j,n,a[101];

for(i=1;i=100;i++)

a[i]=i;

a[1]=0;//1不是素數

for(i=2;isqrt(100.0);i++)//此處為求素數算法,後面講

for(j=i+1;j=100;j++)

{

if(a[i]!=0a[j]!=0)

if(a[j]%a[i]==0)//能被整除,則不是素數,設置為0

a[j]=0;

}

printf(“\n”);

for(i=2,n=0;i=100;i++)

{

if(a[i]!=0)//這裡是a[i],是因為已經是新的循環了,跟j無關

{

printf(“%5d”,a[i]);

n++;

}

if(n==10)//n為控制換行的計數器,每十個換行。

{

printf(“\n”);

n=0;

}

}

printf(“\n”);

system(“pause”);

return 0;

}

講一下求素數的算法,以n為例,最簡單的是從2-n/2枚舉,如果n能被整除其中一個整除,就不是素數。這個方法簡單卻沒有效率。

1-100的數中,任意取一個數,如果是非素數,都可以認為是(2-10)取一個數乘以一個小於50的數字,因為=10 後,與另一個數字相乘要=100 就必須另一個數字=10,所以只要測試這個數字能否被2-10整除就可以了這樣就比上面一種方法測試次數少。

當然這也不是最簡單的算法,這裡介紹另一種。

for(i=3;i=100;i++)

if(i%2==0)//沒必要判斷2以外的偶數

a[i]=0;

else

a[i]=i;

a[1]=0;

a[2]=2;

for(i=3;i=100;i+=2)//從3開始,判斷奇數即可

for(j=3;j=sqrt(i);j+=2)

//因為不用檢測偶數,所以沒必要讓j從2開始,也沒必要為偶數,因此j+=2

if(i%j==0)

a[i]=0;

這算法和上面方法相同,但反了一反,效果卻差很多,不必從2-10都測試一遍,任意一個數都只要判斷自己的平方根次就可以了,(因為一個數若能拆成2個整數相乘,其中一個必定=自身平方根,另一個=平方根),不必去測試額外的次數,對於大數據量十分有效。

編程的時候把縮進調整好,容易查看,你的縮進不好,程序結構層次不清,就容易造成誤會,把後面的a[i]認為仍然是 for(j=i+1;j=100;j++)這個循環中了

c語言書上例題error C2660: ‘strl’ : function does not take 1 parameters

更改如下:

#includestdio.h

void main()

{

char str[20],*ch=str;

int strl(char); //函數聲明有誤,應含有1個參數,此處已修改

printf(“input string: “);

scanf(“%s”,str);

printf(“string leng=%d\n”,strl(ch));

}

int strl(char *s)

{

char *p=s;

while(*p)

p++;

return(p-s);

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/231687.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:06
下一篇 2024-12-11 01:06

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的“畫筆”在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論