C語言問題

2021-03-04 00:37:06 字數 917 閱讀 6366

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...