當前位置:首頁 » 編程語言 » c語言書後習題講解
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言書後習題講解

發布時間: 2023-01-05 06:38:29

『壹』 求一道c語言題詳解

錯誤在於sqrt誤打成了sprt

#include<stdio.h>
#include<math.h>
void main()
{
int m,i,k,count=0,leap;
printf("\n\n");
for(m=101;m<=200;m+=2)//偶數不可能是素數
{
k=sqrt(m); leap=1;
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;} //如果能被i整除,說明他不是素數;
if(leap==1)//循環結束有2個方式,,其中一種使leap=0;;但現在leap==1,,
//循環結束的原因是必然是i>k了,,就是說明m是素數..
{printf("%-5d",m);count++;}
}
printf("\n The total is %d",count);
}

『貳』 c語言程序設計課後習題答案(高等教育出版社何欽銘 顏暉 主編)

大學學習資料免費下載網 有

在 其他公共課程 版塊

標題:

C語言程序設計第三版譚浩強課後習題答案完整版txt

譚浩強C語言程序設計習題參考解答

C程序設計題解與上機指導 答案

還有很多相關資料:

譚浩強編《C語言程序設計》視頻教程(曾怡講解) 在線 下載
譚浩強編《C語言程序設計》(電子書+紙質書)
......

下載不用積分
我可以幫助你,你先設置我最佳答案後,我網路Hii教你。

『叄』 求下列C語言題目詳解

1。13個元素,hello\nworld\n這是12個元素,最後字元串結束標志是'\0',所以又13個

2. 首先int *p =&a[0]+1 ,這聚會等價於p指向了a[1],即p= &a[1],所以*p= a[1] = 3
3.首先8非0,所以!8=0,那麼!!8=1
4.答案是15(絕對是15!!),應為define是簡單的文本替換
所以10*MIN(10,15)等價於

10*10<15?10*10 : 15

所以是15
5.a=-264,
a+=a-=a*a等價於

1).a=a-a*a = 12-12*12= -132;
2).a= a+a = -132+(-132) = -264
6.首先算的是5>4?3:2 值是3,所以變為8>7?6:3,因為8>7所以值為6

『肆』 求此C語言題詳解

想了半天真不知道怎麼詳解

回去結合函數調用那部分再看看C語言指針 都是些非常基礎的東西、

void main()
{
int a=1,b=2,c=3;
sub(a,b,&a); //調用sub(int x,int y,int *z) 執行完畢 a=1 (*z=y-x(即a=b-a (z為指針變數 在此處指向變數a的地址&a *z即變數a))),b=2,c=3
sub(b,a,&b); //調用sub(int x,int y,int *z) 執行完畢 a=1,b=-1(原理同上),c=3
sub(a,b,&c); //調用sub(int x,int y,int *z) 執行完畢 a=1,b=-1,c=-2(同上)
printf("%d,%d,%d\n",a,b,c);
}

『伍』 《C語言程序設計基礎》陳東方著清華大學出版社課後習題答案求詳解

大學學習資料免費下載網有

其他公共課程論壇

標題類似的信息:陳東方C語言編程基礎實驗和問題的解決方案(答案)
中國校企網路技術聯盟

『陸』 c語言的題目,誰來解釋一下這磨人的++啊啊 求詳解

很不喜歡這類題目,出這種題的,都是腦子進水的二貨。
為什麼這么說呢,因為這種式子,它的編譯結果與編譯器的實現有關。
大家都知道左++,右++的規則,但在具體使用這種代碼時,很可能與你期望的結果不一致。據說,世界上超過95%的C程序員,搞不清楚這東西的運算。
所以,規則就是:不使用這種你無法預計的代碼。所以我說,出這種題的老師都是混蛋。
閑話少說。

按照C語言的語法規則:這題應該先計算()中的內容,所以,應該是先計算3次--x,結果是x=6
最後再把3個()計算的結果相加,所以,最後結果應該是18,這是按照C語言語法規則得出的結論。
你說的TC中計算結果是這個,就是採用了這種規則。

另外一種說法:第1個()中計算結果是8,第2個()計算結果是7,第3個()中計算結果是6
所以,結果應該是:8+7+6=21。

還有一種,你想不到的計算方式:如上圖中反編譯結果(gcc)
粉色框中,你可以看到,編譯器先進行了2次--x;的計算,然後把計算得到的結果x=7相加,得到結果14
然後再計算一次--x;此時x=6,14再加上這個6=20,這就是20的由來。(紅色框)
vc6我沒有反編譯,但估計過程應該和這個一致。
我沒有查到這樣做的原因,也沒有找到相關的規則說明。

只能感嘆:流氓的世界我不懂!

這個規則適用更多計算式:(--x)+(--x)+(--x)+(--x)...
實際上就相應於[(--x)+(--x)]+(--x)+(--x)...
先運算開頭2項的,然後後面一個一個的計算。
結果就是:7x2+6+5+...

很搞笑吧。

還有更搞笑的,如果把x的類型改為charx=9;或int16_tx=9;
那麼,計算結果是21,發生了什麼?
因為這時,編譯器就按照我在上面第2種說法里的方式去編譯運行了!

所以呢,你別糾結這道題為什麼為選A了,再碰到老師出這種題,拿著不同的結果去打他臉!

因為這不是你的錯。

『柒』 C語言課本題目求詳解,設有int x=2,y=3,z=5,s=1,t=2,則表達式!(a+b)+c-1&&b+c/2的值為多少

破書出的爛題。

答案永遠不可能為3 。

表達式!(a+b)+c-1&&b+c/2中的變數跟前面的定義沒有星點關系,

而且該表達式的本質是&&,

(!(a+b)+c-1)&&(b+c/2)
//最後所得要麼是1,要麼是0

『捌』 C語言書上的一道題不太懂高手請指點一下

for(m=3;m<=100;m=m+2)
m從3開始,然後第2次循環是5,每次加2,知道m=101,判斷大於100,不在運行循環內的程序。
k=sqrt(m);
這是K=根號m,的意思,math庫函數中有這個函數sqrt()為開根號。
for(i=2;i<=k:i++)
/*總之這一段講解一下哈
if(m%i==0)
/*還這
和下面幾行
break;
如果m可以整除i就跳出這個循環
if(i>k)
{
printf("%5d",m);
}
如果m都不能被i整除,列印出m
if(n%5==0)
printf("\n");
每列印5個數,換行輸出;
整個程序的功能是:輸出3到100以內的素數
程序結果是對的,但是格式不對,應該是3,5,7
前面都有4個空格,17~97前面都有3個空格。因為你是printf("%5d",m);
的%5d!

『玖』 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語言題求詳解

2.A(d的類型不變)
3.B(\t a \017 b c)
4.C(取整7/3=2)
6.C(%d對應int型a,%lf對應doublr型b)
7.D(一般會輸出0)
8.D(注意scanf要等CR才生效,而getchar不等待CR)