1樓:
#include
#define n 30
typedef struct student;
student r[n];
int main(void)
num=1;
for(i=0;ir[max].score)max=j;
if(max!=i)
if((i>0)&&(r[i].score小錯誤比較多,格式有點亂,整理**縮排就花了好久……基本都是小錯誤,對比看一下就知道了。
c語言問題!
2樓:匿名使用者
因為s是一個指向float型別的指標,在初始化的時候,*s=a;所以s指向了陣列a,因為陣列名代表了陣列的首地址,也就是s此刻指向了陣列a的第一個元素a[0],而a[0]==1.1,然而,你呼叫fun(a,b,s),但是在函式fun中並沒有對main()函式中的s指標有任何改變,因為你在func()函式中的s和main()根本就不是同一個,在fun()中的s在沒有呼叫calloc()之前,也是指向a[0]的,但是呼叫calloc()後,func()中的s就指向了一個系統分配的地址,所以改變func()中的s並不會影響到main()中的s。
3樓:匿名使用者
為什麼是21.1?即使沒發現錯誤也應該理解為11.1才是啊……錯誤在於對s的重新賦值。
s作為引數傳給fun,然後fun內部改變了s的值,並寫入新數。
但fun執行完後返回時,main函式裡面的s沒有改變,因為c語言的引數傳遞是傳值的。
結果就是,執行printf所顯示的實際還是a[0],所以顯示1.10修改方法:
1、把calloc放在main裡
2、如果calloc有特別要求不能動,那麼把fun的第三個引數變成 float** s ,其他s對應著修改。
C語言問題C語言問題,C語言問題C語言問題
include include int main b k p b k 0 puts b return 0 c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock print...
C語言問題,C語言問題C語言問題
這題考的是自動型別轉換,由編譯系統自動完成,轉換是 向上 靠的 舉個例子 include stdio.h void main 你編譯一下就會有警告 conversion from double to float possible loss of data 也就是說系統預設轉化了a,b的資料型別為do...
c語言問題,C語言問題
1 c2 a 3 d4 a 5 d6 b 7 a8 a9 d c語言問題 include define n 30 typedef struct student student r n int main void num 1 for i 0 ir max score max j if max i if...