A. 定義結構體後編譯出現問題,請問是什麼原因寫一個簡單的輸入input()函數
typedef struct stu
{
int num[10];
char name;
}STU[5];
typedef 是定義類型。所以上面其實是定義一個「數組類型」。
把typedef去掉就能滿足你的要求了。
B. c語言結構體 編譯出錯
b b1={a1,a2,0};
改成:
b b1={{0,0}, {1,1} , 0};
編譯器不支持用結構體變數來初始化結構體變數成員
C. 請教一個C語言結構體問題:編譯出現很多錯誤,但是把文件名改成.cpp就能編譯通過了,這是什麼問題啊
樓上說的不全對。
C語言里邊,使用struct來定義結構體,要有struct這個關鍵字編譯器才認得是個結構體。
所以代碼修改如下就能運行了。
#include "stdio.h"
#include "string.h"
#define format "|%-10s |%8d| \n"
#define data p->name,p->jbgz
struct rsda
{
char name[10];
int jbgz;
}tp[]={"liming",2500,"wanggang",3000,"zhanghan",2800,"liuyang",3200,"feng",4300};
void printdata(struct rsda pp)
{
struct rsda *p;
p=&pp;
printf(format,data);
}
void main()
{
printdata(tp[0]);
}
----------------------------
typedef struct rsda
{
char name[10];
int jbgz;
}rsda;
是重新定義了一個新的類型叫rsda,所以下面也就不會報錯了。
D. 在寫C語言結構體時,程序編譯出現以下問題,請求幫助
在主函數中調用input(p);maxi=max(p);這兩個函數的時候,使用的參數是指針p,而在函數實現的時候的參數是結構體型的數組,所以出現警告參數不匹配。而且結構體定義兩遍,你在主函數裡面定義結構體在外部函數裡面是無法使用的,就會出現主函數裡面使用的結構體變數和外部函數使用的結構體變數調用不同。
建議都使用結構體型的數組,這個程序裡面你使用的指針沒有任何意義,反而會引起不必要的麻煩。假如你的結構體數組中學生的數量不確定,建議使用指針鏈表,這個時候指針就很有意義。
E. C語言問題:如下定義的結構體類型為啥編譯錯誤,編譯平台為Visual Studio 2013
在你定義NODE *pNext;/的時候系統還不知道NODE是啥(NODE定義在結構體結尾)
typedef struct node{
//節點的數據域部分
int data;
int len;//存放當前鏈表的長度
//節點的指針域部分
struct node *pNext;//存放下一個節點的地址
} NODE;
F. C語言結構體變數的一道例題,編譯時出錯了,求看看哪裡出錯
#include<stdio.h>
#defineN3
structStudent
{
intnum;
charname[20];
floatscore[3];
floataver;
};
intmain()
{
voidinput(structStudentstu[]);
structStudentmax(structStudentstu[]);
voidprint(structStudentstu);
structStudentstu[N],*p=stu;
input(p);
print(max(p));
return0;
}
voidinput(structStudentstu[])//名字寫錯了
{
inti;
printf("學生的各種信息: ");
for(i=0;i<N;i++)
{
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
structStudentmax(structStudentstu[])//名字寫錯了
{
inti,m=0;
for(i=0;i<N;i++)
if(stu[i].aver>stu[m].aver)
m=i;
returnstu[m];
}
voidprint(structStudentstud)//名字寫錯了
{
printf(" 成績最高的學生是: ");
printf("學號:%d 姓名:%s 三門課成績:%5.1f,%5.1f,%5.1f 平均成績:%6.2f ",
stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
}
幫你改好了。看我注釋地方就是你出錯的地方。
不懂再問
G. C程序中使用結構體問題,編譯出錯,不知道哪裡錯了,求解答,最好能把可以運行成功的程序給出,萬分感激
編譯了一下,
是這一行出錯:
{temp = (ps + j) -> score; (ps + j) -> score= (ps + j + 1) -> score; (ps + j + 1) = temp;}
具體一點是:
(ps + j + 1) = temp;出錯
報告賦值操作類型錯誤,改成:
(ps + j + 1)-> score = temp;
可正常編譯,
另,不知這一段:
for(i = 0; i < 4; i++)
for(j = 0; j < 4 - i; j++)
if((ps + j) -> score < (ps + j + 1) -> score)
{temp = (ps + j) -> score; (ps + j) -> score= (ps + j + 1) -> score; (ps + j + 1) = temp;}
是否在做冒泡演算法,
是的話,似應改成:
for(i = 0; i < 4; i++)
for(j = i+1; j < 4+1 ; j++)
if((ps + i) -> score < (ps + j) -> score)
{temp = (ps + i) -> score; (ps + i) -> score= (ps + j) -> score; (ps + j) = temp;}
供參考
H. C語言結構體問題,編譯不通過,求修改
1、符號常量宏定義錯誤,應該改為:#define ScoreTable struct Score
即用ScoreTable替代struct Score,如果你想用Score提到struct ScoreTable則寫為:
#define Score struct ScoreTable
如果不想修改原來的順序,那麼請用typedef,也就是說把define換成typedef,然後在這行的最後加上分號就可以了;
2、數組stu定義時初始化錯誤,應該改為stu[5]={ {"chen",{80,90,90,90,90},0,0},
{"zhang",{99,99,99,99,99},0,0},……, ,也就是說每個元素間應該用逗號分隔;
3、函數SNA中 (*pt).sum+=(*pt).socre[i];錯誤,應該為 (*pt).sum+=(*pt).score[i];
4、在函數char *Remak(float avg)之前少個花括弧。
至於你的程序實現的功能我沒有去看,當你修改了上面提到的問題後就可以通過編譯了。
I. 請教各位c++builder大俠 我定義了幾個結構體 和一個類 怎麼老是編譯出現下列問題啊
1. 編譯的提示是重復定義,也就是說你的數據結構被定義了2次。
2. 你整個文件似乎都被提示重復定義,那麼有很大問題來源於你的.h被多次引用。
#ifndef _VGA2USB_H__
#define _VGA2USB_H__
<這里填寫你的.h全部代碼>
#endif
在你的.h中加入上面的試試。
J. C語言:一下是我編譯的一個結構體的代碼,運行後,有錯誤,怎麼改,求助
只有一個很小的錯誤
struct stud
{
char name[10];
int age;
},a; //這里多了個逗號,改成 }a; 就行了,這樣就可以在定義結構體的同時,定義一個名為a的結構體變數,一箭雙雕。