1樓:匿名使用者
我也不懂。。你這段**到底有什麼意義。。找到最大的字元。。然後把它賦值成結束符。。
到底有神馬特殊作用。 最後輸出個mo。。。有什麼意思
2樓:匿名使用者
這個程式很簡單啊!程式不難,那就一步一步來,把它搞懂首先程式是從main()函式開始執行,
第一步:字串賦值
定義了字元陣列a用來儲存字串"morning"
第二步定義整形初值i,j
第三步執行for迴圈 for迴圈的含義就是將字串第一個字元後面的每個
字元與另外一個字元ascii碼值進行比較,而是前者ascii碼值大於後者,就用
前者的ascii碼值更新後者的ascii碼值。直到迴圈結束第四步a[j]=a[7]就是將'\0'賦給a[j]第五步puts(a);就是列印新的a字串(其實就是字串中從前字元遞增的子串)
程式要實現的功能:就是輸出字串中從第一個字元開始遞增的子串
c語言 25題 完全看不懂啊 20
3樓:盧臺長
答案是a,getchar()是得到一個字元,putchar是輸出一個字元,只要不等於感嘆號!,就把字元輸出,如果等於!就不輸出,退出while迴圈。
4樓:酷哥
當字串元素不等!時輸出,即輸出!之前的字串
c語言問題,這道題看不懂,求大神解釋,謝謝
5樓:雲戰天涯
指標題:p指標是指向第一個節點的,也就是e,s指標指向g,題目要求把g插入到f後面,下面的四個方法中選出不能把g插入到f後面的一個。
對於a選項:p=p->next:表示p指標指向f
:s->next=p:表示s的next指向f,而這裡s->next應該為\0,所以錯誤
6樓:匿名使用者
a答案中 p=p->next;p就指向f那個data 把e 的data拋棄了。
s->next = p;即 s的下一節點是p,p->next = s; p下一節點又指向s ,變成p s2個節點互相指。
所以是錯的。
一個c語言題目 做法看不懂 求大神解釋一下
7樓:匿名使用者
這裡使用一個6x6陣列來裝1個5x5的矩陣,每一行的第一個資料即a[i][0]用來裝這一行所有資料的和,每一列的第一個資料即a[0][i]用來裝這一列資料的和。
把每行和每列的第一個資料初始化化為0是為了利用疊加法求每行(列)元素的和。
例 for (j=1;j<=5;j++)
a[i][0]+=a[i][j];
這是把a[i][0]=a[i][1]+a[i][2]+a[i][3]+a[i][4]+a[i][5]
c語言的一道程式題!!!看不懂為什麼!!求解釋詳細,謝謝!! 5
8樓:召走刀文
這個主要涉及到變數作用域的問題,兩個原則
區域性變數與全域性變數重名時,遮蔽全域性變數
{}裡宣告的區域性變數的作用域就是{}的範圍。本質上跟函式的{}是一個道理
**中,會遮蔽掉外面的全域性變數a,此時函式f的引數是5,所以計算後s 為5。
之後的s+=f(&a);中,a是全域性變數a(因為int a=5的作用範圍是那個{}),所以s為7
在printf中的a是全域性變數的a,因為經過上面f函式的計算,所以a為3
9樓:周潔倫之謎
注意3點:全域性變數和區域性變數(區域性變數優先順序高),傳地址和傳引數,++操作
int f(int *a) //傳地址,會改變傳入的引數比如 int c = 2; int d = f(&c); 結果d=2,c=3
所以:int s=0;
s+=f(&a); s=7,a=3;這裡是全域性aprintf("%d %d\n",a,s);
10樓:w休息的風
首先你定義了一個全域性變數int a=2;
然後函式f(int *a)目的是把你傳遞過來的實引數加1.注意:return (*a)++;這句是先執行返回,先把指標a指向的值返回,然後再把該指向的物件進行加1操作。
主函式裡面是這樣執行的,
定義了一個s,後面有個括號,裡面又定義了個區域性變數a,初始化為5;然後你呼叫函式f,執行完以後,s的值變成5,而臨時變數a的值變成了6,繼續執行,臨時變數的a被釋放了。後面又呼叫了函式f,但是這個變數a是你定義的全域性變數,值為2,呼叫完以後,s的值就變成了7,而a的值加1變成了3.所以最後輸出值為:
3 7.
明白了嗎?
注意兩點:1是函式f返回值那,是先返回後,再把指向的物件加1,2、就是主函式裡面的區域性變數a,和全域性變數a的區別和使用。
11樓:匿名使用者
#include
#include
int a = 2;
int f(int *a)
void main()
中起作用
內起作用。建議寫程式不要寫成與全域性變數同名。
s+=f(&a); //在這個{}內,s = s + f(&a)= 0 + 5 = 5
//然後(*a)內值再加1,此時在這個{}內a 變成了 6}s=s+f(&a); //此時s = 5,整個檔案內全域性變數int a = 2 ,在上一個{}內區域性變數不起作用了。
//s = s + f(&a) = 5 + 2 = 7//此時(*a)內值加所以輸出結果a = 3 ,s = 7
}以下是codeblock內執行結果
a=3 s=7
12樓:匿名使用者
這部分裡面重新宣告瞭變數a,使用的就是區域性的這個變數;
出了}之後,這個a的生命期結束,再使用變數a時用的就是外面宣告的全域性變數。
return(*a)++;
++在後,返回值是自加之前的值,然後自身加1,所以第一次返回5,然後區域性變數a變成6,第二句函式f返回2,加上5就是7,全域性變數a變成3。
13樓:吳龍
主要還是定義的變數作用域的問題。
還有一個容易忽略的問題,return (*a)++;這句話的意思是 先返回*a,然後*a++,即最後*a增一。不是直接返回(*a)++。
進入main函式,定義變數s=0;
下面這裡有個,相當於一個作用域,也就是裡定義的變數只在這裡面有效,出了,針對的就是外一個作用域。由於在定義變數a=5,是區域性變數,所以s+=f(&a),s=0+5=5,同時內的a加以1,a=6;然後出了,作用域消失,內定義的a,銷燬。
然後s+=f(&a),此時的a就是全域性變數的a=2,所以s+=f(&a),s=5+2=7,同時a+1=3;
最後輸出,a=3,s=7.
14樓:匿名使用者
這裡有2個a變數 一個是全域性
變數 一個是函式內的變數。
第一行全域性變數a=0 (下面我們用a1表示他)在main函式中
int a=5;
s+=f(&a);
這個a = 5 是區域性變數 (我們用a2表示)經過上面計算後 s=5 ;a2=6, ; 下面s+=f(&a);
printf("%d %d\n",a,s);
都是a1 ;所以s = 7 ,a1 = 3了結果就是c答案
15樓:周生
這涉及到兩個問題
1 return之後是不會再執行++操作的
2 區域性優先原則,但是區域性變數只在宣告他的區域性有效,出了這個區域性就失效了
16樓:匿名使用者
在main函式中{}中的int a的作用域僅限於這個{}內,所以出了這{}後s=5,而a仍然等於2,然後s+=f(&a); 就使得s=7,a=3了。這題主要考察的是變數的定義域,第一個a=2是全域性的,第二個是區域性的,只限於那個{}內。起始說白了就是
int a;
}這種情況,區域性定義有效,但是出了{}就是外層的定義有效了。
17樓:使者
輸出的a是全域性的a,第一個s+ 計算的s= 0 + 5;第二個s = 5 +2
18樓:匿名使用者
這是一道函式呼叫題,void main()為主函式。程式先執行主函式,所以到第一個 s+=f(&a);又因為它是呼叫的,要看到這裡 int f(int *a)
實參把a=5;賦給形參,由於是return(*a)++;所以s=5;
到第二個 s+=f(&a);
而第一個 int a=2; 是全域性變數
所以s=7;
第一個 int a=2; 經過 return(*a)++;後也變成3了
19樓:小拇指亦有愛
int a=2; 全域性變數
int f(int *a)
void main()
//區域性失去作用,
s+=f(&a); //相當於s=5+2 ,然後a+1=2+1=3
printf("%d %d\n",a,s);
}a:2 7
b:2 10
c:3 7
d:3 11
20樓:匿名使用者
我認為是3,9,求大神解答
21樓:張祿
在看看指標和引用那裡
22樓:匿名使用者
區域性變數全域性變數 呵呵 上面解釋的很清楚
23樓:pprain_水杯
第二個s+=f(&a);使a+1
一道c語言程式設計題,看不懂,求解釋
24樓:丁丁愛璐璐
#include //標頭檔案
main()
列印出a的所有數權值
} void sort(int x,int n) }
25樓:匿名使用者
void sort(int x,int n);
int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++) }定義陣列
抄 及指向
襲陣列的指標
輸入數值 並輸出sort
void sort(int x,int n)對數值進行起泡排序
c語言題目,求解,C語言題目求解
x就是16進位制的,0就是零字元,一個十六進位制的數佔一個位元組,零字元在算位元組時不佔位元組,之後結果就是佔一個位元組 我就說要點了。1 double x,y x 1 y x 3 2 y的值為什麼是2.0?3 2兩個整型相除得整型1。2 main x 1值為0那麼輸出的應該為0 為什麼答案是1?單...
C語言的一道程式題看不懂為什麼!!求解釋詳細,謝謝
int a 2 int f int a void main s f a s是外部定義的所以還存在,此時再執行f 返回外部定義的a的值,即2 所以s s 2 5 2 7,但注意a此時還有效,所以指標的值自加一後,a變成3 printf d d n a,s 因此輸出是3 7 int f int a 這個...
C語言的一道題目,求解釋,一道C語言題目求解釋!
輸出的是字串長度,應該是7 fun函式的形參看似是字元陣列char s,實際是char s,c語言裡陣列名的本質版是指標,所以函式裡 權可以宣告char p s 這是p和s其實都指向記憶體裡的同一個地址 然後while迴圈的作用是讓p指向這個字元陣列的最後一個字元 由於字串都是已尾零結尾的 即最後一...