1樓:匿名使用者
陣列 a和b均越界了。
改成 int a[23],b[22],c,d,sum,i;
說明: int a[21],b[21],c,d,sum,i;
其中a和b有21個元素,下標範圍[0,20]第一個for迴圈中。
for(i=1,a[i-1]=1,a[i]=2;i<=21;i++)a[i+1] 最後一次迴圈i=21
那麼a[i+1]實際上是a[22]越過兩個元素了第二個迴圈。
for(i=0;i<=21;i++)
其中陣列b也是如次。
另外建議scanf("%d",&c); 改成scanf("%i",&c);
2樓:匿名使用者
#include
void main()
主要問題出在上面這一行,估計是因為這樣程式會佔用太多記憶體。
i=1;n1=1;n2=2;
a[0]=n1;a[1]=n2;
for(i=2;i<21;i++)
for(i=0;i<21;i++)i<=21改成i<21scanf("%d",&c);
for(i=0;c!=0;i++)
sum=0;
for(i=0;i<21;i++)i<=21改成i<21printf("%d",sum);
printf(""
3樓:匿名使用者
a[i],b[i]均溢位了,其實int a[21]是陣列中有21個元素a[0]--a[20],你誤以為包含a[21]了,b[i]也一樣。故錯。
改成int a[22],b[22];
c++語言問題?
4樓:老黃知識共享
c++語言是c語言發展起來的,所以繼承了c語言幾乎所有的特點,但c++語言又有自己的個性。c語言是一種程序導向的程式語言,而c++主要是程序導向的,因此c++有類的概念,而c語言就沒有。c++的功能強大,編譯器複雜,適合高階程式的設計和,c語言的編譯器簡易,適合低端程式。
5樓:yx陳子昂
**邏輯混亂,參考正常的實現吧。
c語言的基本概念都不清楚,m沒有初始化,k=sqrt(m)毫無意義。
void main(){
int m; /輸入的整數。
int i; /迴圈次數。
int k; /m 的平方根。
printf("輸入一個整數:")
scanf("%d",&m);
求平方根,注意sqrt()的引數為 double 型別,這裡要強制轉換m的型別。
k=(int)sqrt( (double)m );
for(i=2;i<=k;i++)
if(m%i==0)
break;
如果完成所有迴圈,那麼m為素數。
注意最後一次迴圈,會執行i++,此時 i=k+1,所以有i>kif(i>k)
printf("%d是素數。",m);
elseprintf("%d不是素數。",m);
return 0;
c語言c++問題
6樓:基佬你好
for迴圈不一定要知道迴圈次數,可以用判斷語句,判斷到不成立直接跳出,很多時候不需要知道次數,也很難去計算次數;for是先判斷表示式能否通過,能通過再執行語句的;for裡面可以用break直接跳出迴圈,也可以用continue結束本次迴圈進入下一次。 2.
c do-while,while,for三種迴圈,都是可以相互代替的,而且肯定能設計得出來;do-while語句不一定要用break退出,當while判斷不成立就直接退出,你也可以在do裡面寫上exit(0),這樣整個程式都結束,別說do-while退出了;do-while語句是判斷while裡面的條件不成立時退出的。 這是個死迴圈。
原因就是,for裡面的判斷語句,被寫成k=1。程式的原意應該是k==1才對。 既然寫成k=1,那麼這是個賦值表示式,賦值表示式的值,就是所要賦的值,也就是1.
那麼無論你程式如何執行,判斷語句的值永遠是1,所以就是個死迴圈。 這個你逐個自己算一下就清楚了。求採納。
7樓:匿名使用者
高階語言使用指標來引用記憶體中的資料。
一般是從main函式入口開始,到出口終止。當然要是算前面的函式定義 那另算。
不對 主函式可以。
是啊 機器只能識別二進位制數。
8樓:匿名使用者
1.高階語言使用 來引用儲存在記憶體中的資料。
2.一個c程式的執行時從main開始 main結束3.正確的是。
b c語言中的每條可執行語句最終都被轉換成二進位制機器指令計算機內部採用二進位制,並且只能識別二進位制。
4.下列高階語言語句的含義是什麼?
x=a b c; d=c-b a; z=z 1;
x=y/z; kelvin=celsius
全部是賦值,「=的結合方法是從右至左,例:a=1 2,則a=3;
9樓:
1.高階語言使用___變數或者常量___來引用儲存在記憶體中的資料。
2.一個c程式的執行時從_main_開始 _main__結束3.正確的是(a)
a c語言中的函式不可以單獨編譯。
b c語言中的每條可執行語句最終都被轉換成二進位制機器指令a正確,因為c語言的最譯單位是檔案。
b 錯誤,條件編譯就是個反例。
4.下列高階語言語句的含義是什麼?
x=a+b+c;//將a+b+c的值賦於變數xd=c-b+a;//將c-b+a的值賦於變數dz=z+1; /將z+1的值賦予z
x=y/z; /將y/z的值賦予z
kelvin=celsius+ /將celsius+的值賦予kelvin
c++問題。
10樓:匿名使用者
變數的生存期取決於它的 儲存型別!
從變數的作用域的角度將變數分為區域性變數和全域性變數兩種。區域性變數定義在函式體內,函式被呼叫時,區域性變數才臨時的被建立,函式執行完後,區域性變數自動被銷燬;全域性變數是定義在整個程式空間內的,在開始執行程式時被建立,整個程式執行完了才會銷燬,因此一個變數(無論是全域性還是區域性變數)都有一個「建立」、「生存」、「銷燬」的過程,從這個意義上說變數是有「壽命」或存在「生存期」的。
變數的生存期取決於它的儲存型別。所謂「儲存型別」是指系統為變數分配的具有某種特性的儲存區域,儲存區域一般分為兩種:靜態儲存區和動態儲存區。
存放在靜態儲存區中的變數在程式執行初期就被建立,它們的壽命往往與程式同步;存放在動態儲存區中的變數是臨時性的,在程式執行期間隨時會被撤銷。
11樓:月下谷中
有建立的方式決定細節}
2.堆void funcclear(char *e)void main()
程式結束後洩露了c的5個char,由於被世人所遺忘,在孤獨角落裡等待。
3.沒事可以研究下funcclear(a)會出現什麼事情,和用不同的結構體試試。}
12樓:
在外面定義變數,生存期是程式執行完成,在括號裡面定義出了生存期就是在這個括號裡。
c++的問題
13樓:網友
在c++中,可以為引數指定預設值。在函式呼叫時沒有指定與形參相對應的實參時, 就自動使用預設引數。
預設引數的語法與使用:
1)在函式宣告或定義時,直接對引數賦值。這就是預設引數;
2)在函式呼叫時,省略部分或全部引數。這時可以用預設引數來代替。
注意:(1)預設引數只可在函式宣告中設定一次。只有在無函式宣告時,才可以在函式定義中設定。
2)預設引數定義的順序為自右到左。即如果一個引數設定了預設值時,其右邊的引數都要有預設值。
如:int mal(int a, int b=3, int c=6, int d=8) 正確,按從右到左順序設定預設值。
int mal(int a=6, int b=3, int c=5, int d) 錯誤,未按照從右到左設定預設值。c設定預設值了,而其右邊的d沒有預設值。
3)預設引數呼叫時,則遵循引數呼叫順序,自左到右逐個呼叫。這一點要與第(2)分清楚,不要混淆。
如:void mal(int a, int b=3, int c=5); 預設引數。
mal(3, 8, 9 );呼叫時有指定引數,則不使用預設引數。
mal(3, 5); 呼叫時只指定兩個引數,按從左到右順序呼叫,相當於mal(3,5,5);
mal(5); 呼叫時只指定1個引數,按從左到右順序呼叫,相當於mal(5,3,5);
mal( )錯誤,因為a沒有預設值。
mal(3, ,9) /錯誤,應按從左到右順序逐個呼叫。
再如: void mal(int a=8, int b=3, int c=5); 預設引數。
mal( )正確,呼叫所有預設引數,相當於mal(8,3,5);
4)預設值可以是全域性變數、全域性常量,甚至是一個函式。但不可以是區域性變數。因為預設引數的呼叫是在編譯時確定的,而區域性變數位置與預設值在編譯時無法確定。
14樓:匿名使用者
#include
using namespace std;
struct output
class time:public output;class date:public output;time::
time(int h,int m,int s)date::date(int m,int d,int y)void date::display()
void time::display()
void display(output& ot)int main()
另外,團idc網上有許多產品**,便宜有口碑。
15樓:
預設引數就像擬定一個列舉陣列,在沒有給陣列成圓賦值的情況下,是從0 1 2 3 ……這樣開始的。
16樓:匿名使用者
其實就是少寫一些**,沒有啥特別用處。
c語言——這道題怎麼回事?
17樓:聽不清啊
這是因為在c語言中,引數值的傳遞,都是單向的。所以,在函式f()中,s的值的改變,並不會影響主函式中p的值。所以,這題是選擇答案b。
18樓:鹹芷雲
你看啊,首先宣告瞭i,j等於3和5了對吧,然後指標p,q指向i,j,但是他們呼叫後他們的指向沒變,所以p還是等於3,q還是等於5,這個呼叫過程可以理解為給r的一個賦值過程,所以還是。
19樓:屁顛屁顛的海膽
如果f是(int **s, int**t)那麼值就是你選的b,是5。但是他現在是int *s, int *t,原本p,q的指向並沒有變,所以仍然是3。
C語言問題,C語言問題C語言問題
選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...
C語言問題,C語言問題
符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...
c語言問題,C語言問題?
char c 好好看書去 小 超 字元型變數 1 字元變數的定義 字元變數只能存放一個字元常量。字元變數的定義形式如下 char c1,c2 2 字元資料在記憶體中的儲存形式及其使用方法 字元型資料在記憶體中以相應的ascii 存放。字元在記憶體佔一個位元組,表示數的範圍從0 127。把字元對應的a...