1樓:匿名使用者
根據樓上提供的進行優化,已經除錯成功的(去掉了註釋,考慮到各個機器的輸入法問題,所有的printf 內容都換成英文)。
#include
#include
#include
#include
#define null 0
#define len sizeof(struct student)
#define file_data_path "c:\student.txt"
struct student
; int total_num = 0;
struct student *head = null;
void welcome();
void mainmenu();
void record();
void insert(struct student *stu);
void display(struct student *stu);
void displayall();
void query();
void query_by_num();
void query_by_name();
void readdata();
void writedata();
void freeall();
void del();
void change();
void devise(struct student *p);
int main()
else
else }
} return 0;
} void welcome()
void mainmenu() }
while(choice != 0);
} void record()
void insert(struct student *stu)
else
if(p0->num <= p1->num)
else }
total_num++;
} void display(struct student *p)
void displayall()
while(p != null);
} printf("\n");
} void query() }
while(choice != 0);
} void query_by_num()
p1=head;
while(num!=p1->num && p1->next!=null)
p1=p1->next;
if(num == p1->num)
else
printf("not find check again!");
} void query_by_name()
p1=head;
while(strcmp(name, p1->name) && p1->next!=null)
p1=p1->next;
if(!strcmp(name, p1->name))
else
printf("not find check again");
} void writedata()
fprintf(fp,"%d\n", total_num);
for(p = head; p!= null; p= p->next)
fclose(fp);
} void freeall() }
void readdata()
head = p1 = p2 = (struct student *)malloc(len);
fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
&p1->num, p1->name, &p1->age, p1->***, p1->birthday, p1->address, &p1->tele_num, p1->e_mail);
while(!feof(fp))
p2->next = null;
fclose(fp);
} void del()
printf("enter the student number you want to delete:");
scanf("%ld", &num);
p1 = head;
while(num != p1->num && p1->next != null)
if(num == p1->num)
else
printf("not find check again�\n");
} void change()
printf("enter the student number you want to change:");
scanf("%ld", &num);
p1 = head;
while(num != p1->num && p1->next != null)
if(num == p1->num)
devise(p1);
else
printf("not find check again�n");
} void devise(struct student *p) }
while(choice != 0);}
2樓:匿名使用者
加我。先去看下我的空間《實習專案名稱:學生成績管理系統》
3樓:我是菜狗
自己寫~~很簡單~你從學連結串列和檔案
c語言程式設計高手請進~
4樓:匿名使用者
雖然本人不是什麼c語言高手,不過對於lz的程式,本人還是有些許拙見要向lz說明的:
首先是語法錯誤:程式中的x變數是float型的,但scanf中讀入的x卻是整型的,應改為scanf("%f, %d", &x, &y)比較好。
其次是演算法有問題:lz是不是每次執行都得不到結果呢??原因是程式中濫用了return 0。例如:
if (y > 0)
else
}printf("%-6f^%d=%-6f", x, y, t);
}其中if (y != i)……else本人是看了好幾遍也不知道lz有何用意,而且for迴圈的最後一次迴圈一定會有y==i,於是會導致迴圈進入了else語句中執行return 0,那結果都返回了還怎麼執行printf("%-6f^%d=%-6f", x, y, t)語句呢??下面的也差不多是這個問題了!!!
最後也就是一樓提到的語句簡潔問題,我就有點不明白樓主為什麼那麼喜歡在if………語句中都用到printf("%-6f^%d=%-6f", x, y, t),其實這個句子最後統一再用也行,當然這個也只是小問題了!!!主要的還是前兩個問題使樓主的程式不能正確執行!!
下面是我寫的程式,基本上也是秉承了lz的演算法,只是有些改動。
int main(void)
printf("%-6f^%d=%-6f", x, y, t);
return 0;}
5樓:匿名使用者
ls的回答不錯
即指明瞭錯誤的方向原因
又給餘了lz自己尋找改正的空間
恩, 向上頂
6樓:
問題大概有3個,讀錯,有的條件重複,注意語句的簡潔。
首先提醒下,scanf要讀的是兩個不同的型,而不是%d,%d
後面的就交給你自己了……
**等:c語言程式設計高手請進!!!!!!
7樓:匿名使用者
main()
zhengdian=0; //鳴完撤除正點報時標誌.
}if(xiangling==1) //判斷響鈴標誌是否為1
buzzle(3750,1,1); //是,呼叫鬧鈴函式,3750*16ms=60s
scanner(1); //呼叫顯示函式
if(key==0) //判斷鍵有無按下.}}
/***************時間調整函式*******************/
/************設定鬧鐘函式.*************************/
void naoling(void)
else break; //按下時間大於0.5s,跳出分調整.
}shibiao=1; //時閃爍
while(key==0)scanner(1);//鍵釋放否?
scanner(2); //是.
while(1)
else break; //按下時間大於0.5s,跳出時調整.
}tiaoxian=0; //鬧鈴顯示模式關閉.
tr1=0; //閃爍關閉.
shibiao=0; //時閃爍標誌清零
biaozhi=0; //時閃爍標誌清零.
disp[2]=0x40; //恢復橫槓
disp[5]=0x40;
while(key==0)scanner(1);//調時退出程式。等待鍵釋放
scanner(2);//是,延時消抖
}/********t0中斷服務,用於加1和判斷響鈴.**********/
/***************顯示函式***************/
/***************1ms延時函式,顯示呼叫***************/
8樓:
合併後的節點的值來自**呢?
一道簡單的c語言程式設計題,高手請進!**等!!!
9樓:匿名使用者
#include"stdio.h"
#include"string.h"
int strend(char s1[50],char s2[50]);
void main()
int strend(char s1[50],char s2[50])
return 1;}
c語言程式設計問題,高手請進
倒數第7行 有錯誤 定義的是i 不是y int s 1,i 我看了一下 你的 你的不完善 如果是2進位制 只能表達從 1 255 之間的數。如果是三進位制 也只能表達 0 19682 之間的數。 十進位制轉二進位制,知道演算法就很簡單啊 你想問什麼,能否具體點? 呼叫函式怎麼形參有一個y 函式體內又...
關於C語言和程式設計,用C語言程式設計和用C 語言程式設計區別大嗎?
一 工欲善其事,必先利其器 這裡介紹幾個學習c語言必備的裝置和書籍 a 開發環境 例如turbo c 2.0,這個曾經佔據了dos時代開發程式的大半個江山。但是現在windows時代,用turbo c有感覺不方面,編輯程式起來很吃力,並且拖放,更沒有函式變數自動感應功能,查詢參考資料也不方便。建議使...
c語言程式設計謝謝
既然你是想得到兩條對角線的元素之和,可是怎麼能只有一個輸出呢,可以定義int sum1和sum2,分別儲存和。判斷條件是對的,但是不必用else。其實直接將陣列元素相加不就行了。不是用if和else 而是if i j i j 2 sum a i j 你的也對的.是這個問題啊 第二個for裡面引數 f...