中國大學慕課C語言第四講作業

2021-08-01 10:41:17 字數 3142 閱讀 2471

題目內容:

我們認為2是第乙個素數,3是第二個素數,5是第三個素數,依次類推。

現在,給定兩個整數n和m,0< n<=m<=200,你的程式要計算第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。

輸入格式:

兩個整數,第乙個表示n,第二個表示m。

輸出格式:

乙個整數,表示第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。

輸入樣例:

2 4輸出樣例:

15時間限制:500ms記憶體限制:32000kb

開始讀錯題了,然後算了從n到m之間所有素數的和(以為n和m不一定是素數)。然後這個是錯誤的**:

#include 

int main()

} if(isprime==1)

}printf("%d",sum);

return

0;}

注意:這個是錯誤的**,是我讀錯題的,比如輸入2 4,得到是5。

然後我說怎麼都得不到15呢,又看了遍題目發現錯了……

我的**比較傻,先得到第n個素數,然後得到第n到第m個素數之間的所有素數求和。所以用了4個for語句,覺得很浪費,因為也不會其他方法了。

我寫的正確的**:

#include 

int main()

} if(isprime==1) }

//sum=x;

for(y=x;count

int j;

int isprime=1;

for(j=2;jif(y%j==0)

if(isprime==1)

}}printf("%d",sum);

return

0;}

因為題目中「0< n<=m<=200」是給定條件,就是說已經限定了n和m的輸入,所以我就沒有寫「在200以內」這個條件,也沒有判斷n和m的大小。

放上大神們的**:

asd8532大神:

int m,n,sum=0; //sum用來記錄素數 m n為使用者輸入

int flag=1; //flag用以標記當前是第幾個素數 預設為1

do

while(n<=0||m200); //健壯性 控制合理的使用者輸入

if(n==1)

sum+=2; // 第乙個素數為2 sum+2;

intis = 0;

for(int i=2;;i++)

//不是素數則跳出

}if(is==1)

}printf("%d\n",sum);

省去了乙個迴圈,只要判斷加和次數小於m就一直迴圈,直到達到m跳出。不用我那樣先迴圈到n,很麻煩。多了一次判斷,判斷是不是到第n個素數,到了再開始加和。當然多一次判斷要比多一次迴圈要快。

hellojju大神和另乙個不知名大神:

這裡放上鏈結

void main()

if (flag == 1)

} printf("本程式將計算第n個到第m個素數之間素數之和 \n");

printf("請輸入n和m,用空格隔開:");

while (scanf("%d %d", &n, &m))

}

這個就是先把所有0-200的素數放在乙個陣列a裡,然後再提取出n到m之間的所有素數加和,這個方法好厲害呀~

題目內容:

你的程式要讀入乙個整數,範圍是[-100000,100000]。然後,用漢語拼音將這個整數的每一位輸出出來。

如輸入1234,則輸出:

yi er san si

注意,每個字的拼音之間有乙個空格,但是最後的字後面沒有空格。當遇到負數時,在輸出的開頭加上「fu」,如-2341輸出為:

fu er san si yi

輸入格式:

乙個整數,範圍是[-100000,100000]。

輸出格式:

表示這個整數的每一位數字的漢語拼音,每一位數字的拼音之間以空格分隔,末尾沒有空格。

輸入樣例:

-30輸出樣例:

fu san ling

時間限制:500ms記憶體限制:32000kb

int

x;int mask=1;

scanf("%d",&x);

if(x

<0)

int t=abs(x);

while(t>9)

doelse

if(d==2)else

if(d==3)else

if(d==4)else

if(d==5)else

if(d==6)else

if(d==7)else

if(d==8)else

if(d==9)else

if(mask>9)

x%=mask;

mask/=10;

}while(mask>0);

printf("\n");

這是我的演算法,本來也想用switch-case但是想試試就用if。其餘大神們的演算法有很多,我這裡放上乙個:

鏈結在這裡

#include "stdio.h"

#include "string.h"

int main(int argc, char* argv)

if (i != (strlen(s) - 1))

strcat(output_str, " ");

}printf("%s\n", output_str);

return

0;}

可能還沒學這些,目前看不太懂。跑起來貌似不是c99和c11要加點東西才能跑。

中國大學慕課C語言第五講作業

題目內容 由於計算機內部表達方式的限制,浮點運算都有精度問題,為了得到高精度的計算結果,就需要自己設計實現方法。0,1 之間的任何浮點數都可以表達為兩個正整數的商,為了表達這樣兩個數的商,可以將相除的結果以多個整數來表示,每個整數表示結果的一位。即商的第一位用乙個整數來表示,第二位用另乙個整數來表示...

C語言 第四課

img 一 浮點型別的除法運算得出乙個浮點數結果,而整數除法運算則產生乙個整數結果。在c語言中,整數除法結果中如果有小數,則小數部分會被丟棄,這個過程被稱為 color green 截尾 color 二 取模運算子 用於整數運算。不要對浮點數使用取模運算子,那將是無效的。三 符號 被稱為賦值運算子,...

中國大學MOOC 浙大C語言學習筆記05

7.1 陣列運算 陣列的整合初始化 陣列初始化02 int num0 10 陣列的大小 sizeof給出的整個陣列所佔據的內容的大小,單位是位元組 sizeof a sizeof a 0 sizeof a 0 給出的陣列中單個元素的大小,相除得到了陣列的單元個數 一旦修改 中的初始資料,不需要修改遍...