『壹』 學了一學期的c語言,要做大作業。 求一個500行C語言程序代碼。 可以在VC++6.0上運行的。
//戶籍管理系統, 應該能滿足你的要求。
//多給點財富吧
#include<stdio.h>
#include<stdlib.h>
typedef struct tagHuJiXinXi
{
char shfzhh[64]; //身份證號
char xm[16]; //姓名
char xb[8]; //性別
int nl; //年齡
char xl[64]; //學歷
char zhzh[64]; //住址
char dh[32]; //電話
}HuJiXinXi,*PtHuJiXinXi;
void readfromfile();
void writetofile();
void tuichu();
void add();
void outputone();
void outputall();
void sortbyage();
void myrealloc();
void findbyagerange();
void del();
void alter();
void find();
void showmenu();
void processmenu(int m);
PtHuJiXinXi pt;
int count=0,capacity=16;
int main()
{
int m;
pt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
readfromfile();
while(1)
{
showmenu();
scanf("%d",&m);
processmenu(m);
}
system("PAUSE");
return EXIT_SUCCESS;
}
void processmenu(int m)
{
switch(m)
{
case 0:
tuichu();
break;
case 1:
add();
break;
case 2:
del();
break;
case 3:
alter();
break;
case 4:
outputall();
break;
case 5:
sortbyage();
break;
case 6:
findbyagerange();
break;
case 7:
writetofile();
break;
case 8:
find();
break;
default:
printf("不可識別的命令。\n");
}
}
//實現存儲空間的自動擴充
void myrealloc()
{
if(count+1>=capacity)
{
int i;
capacity*=2;
PtHuJiXinXi temppt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
for(i=0;i<count;i++)
{
temppt[i]=pt[i];
}
free(pt);
pt=temppt;
}
}
void readfromfile()
{
char f[128];
FILE *inf;
HuJiXinXi hjxx;
printf("請輸入包含戶籍信息的文件的文件名,如果還沒有文件,請輸入omit(文件中每行一條戶籍信息,");
printf("格式:身份證號 姓名 性別 年齡 學歷 住址 電話)...\n");
gets(f);
if(!strcmp(f,"omit"))
{
return;
}
inf=fopen(f,"r");
if(NULL!=inf)
{
do
{
fscanf(inf,"%s %s %s %d %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,&hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
myrealloc();
pt[count++]=hjxx;
}while(!feof(inf));
fclose(inf);
printf("信息已成功載入。\n");
}
else
{
printf("文件名無效或文件無數據。\n");
}
}
void writetofile()
{
char f[128]={'\0'};
FILE *outf;
int i;
printf("請輸入保存戶籍信息的文件的文件名:\n");
scanf("%s",f);
outf=fopen(f,"w");
if(NULL!=outf)
{
for(i=0;i<count;i++)
{
fprintf(outf,"%s %s %s %d %s %s %s",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
if(count-1!=i)
{
fprintf(outf,"%s","\n");
}
}
fclose(outf);
printf("文件保存成功。\n");
}
else
{
printf("文件名無效。\n");
}
}
void showmenu()
{
char menu[]="菜單:\n0、退出\n1、添加一條信息\n2、刪除一條信息\n3、批量修改\n4、瀏覽全部信息\n5、按年齡排序 \n6、按年齡區間查詢\n7、保存到文件\n8、隨意查詢\n請選擇一個菜單:";
puts(menu);
}
void tuichu()
{
if(NULL==pt)
{
free(pt);
}
exit(0);
}
//判斷身份證號是否重復
int isshfzhhchf(char s[64])
{
int i,r=0;
for(i=0;i<count;i++)
{
if(!strcmp(pt[i].shfzhh,s))
{
r=1;
break;
}
}
return r;
}
void add()
{
myrealloc();
printf("添加一條戶籍信息。\n");
printf("請輸入身份證號 姓名 性別 年齡 學歷 住址 電話:\n");
scanf("%s %s %s %d %s %s %s",pt[count].shfzhh,pt[count].xm,pt[count].xb,&pt[count].nl,
pt[count].xl,pt[count].zhzh,pt[count].dh);
if(!isshfzhhchf(pt[count].shfzhh))
{
count++;
printf("添加成功。\n");
}
else
{
printf("身份證號重復,添加失敗。\n");
}
}
//輸出下標為n的一條戶籍信息
void outputone(int n)
{
if(n>=0 && n<count)
{
printf("第%d條戶籍信息:\n",n+1);
printf("%s %s %s %d %s %s %s。\n",pt[n].shfzhh,pt[n].xm,pt[n].xb,pt[n].nl,pt[n].xl,pt[n].zhzh,pt[n].dh);
}
else
{
printf("沒有第%d條戶籍信息存在。\n",n+1);
}
}
void outputall()
{
if(0==count)
{
printf("系統已空。\n");
}
else
{
int i;
for(i=0;i<count;i++)
{
outputone(i);
}
}
}
void sortbyage()
{
int i,j,px;
HuJiXinXi hjxx;
printf("子菜單:\n1、升序\n2、降序\n請選擇:");
scanf("%d",&px);
if(1==px || 2==px)
{
for(i=0;i<count-1;i++)
{
for(j=0;j<count-i-1;j++)
{
if(1==px)
{
if(pt[j].nl>pt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
else
{
if(pt[j].nl<pt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
}
}
printf("排序完成。\n");
}
else
{
printf("無法處理的子菜單命令。\n");
}
}
void findbyagerange()
{
int i,min,max,c=0;
printf("請輸入要查找的戶籍信息的最小年齡和最大年齡:");
scanf("%d %d",&min,&max);
printf("查詢結果如下:\n");
for(i=0;i<count;i++)
{
if(pt[i].nl>=min && pt[i].nl<=max)
{
outputone(i);
printf("符合你的要求。\n");
c++;
}
}
if(0==c)
{
printf("沒有符合你的要求的戶籍信息。\n");
}
}
//刪除一條戶籍信息
void del()
{
int i,n;
HuJiXinXi hjxx;
printf("請輸入要刪除的是第幾條戶籍信息:");
scanf("%d",&n);
if(n-1>=0 && n-1<count)
{
hjxx=pt[n-1];
for(i=n;i<count;i++)
{
pt[i-1]=pt[i];
}
printf("刪除成功。\n第%d條戶籍信息:\n",n);
printf("%s %s %s %d %s %s %s。",hjxx.shfzhh,hjxx.xm,hjxx.xb,hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
printf(",已刪除。\n");
count--;
}
else
{
printf("刪除失敗。\n不存在第%d條戶籍信息。\n",n);
}
}
//根據hjxx的值修改下標為n的戶籍信息
//對於pt[n]的對應欄位,如果在hjxx中是用*表示的,則不修改
void change(HuJiXinXi hjxx,int n)
{
//返回非0值,意味著hjxx.shfzhh(身份證號)不等於*,即需要修改pt[n].shfzhh欄位,以下都類似
if(strcmp(hjxx.shfzhh,"*"))
{
strcpy(pt[n].shfzhh,hjxx.shfzhh);
}
if(strcmp(hjxx.xm,"*"))
{
strcpy(pt[n].xm,hjxx.xm);
}
if(strcmp(hjxx.xb,"*"))
{
strcpy(pt[n].xb,hjxx.xb);
}
//不等於-1表示需要修改pt[n].nl(年齡)
if(-1!=hjxx.nl)
{
pt[n].nl=hjxx.nl;
}
if(strcmp(hjxx.xl,"*"))
{
strcpy(pt[n].xl,hjxx.xl);
}
if(strcmp(hjxx.zhzh,"*"))
{
strcpy(pt[n].zhzh,hjxx.zhzh);
}
if(strcmp(hjxx.dh,"*"))
{
strcpy(pt[n].dh,hjxx.dh);
}
}
//對戶籍信息進行批量修改
void alter()
{
int n;
HuJiXinXi hjxx;
char nl[16];
while(1)
{
printf("請輸入要修改第幾條戶籍信息(-1退出循環):");
scanf("%d",&n);
if(-1==n)
{
break;
}
else if(n-1>=0 && n-1<count)
{
printf("修改...\n");
outputone(n-1);
printf("請輸入將此戶籍信息修改後的新的姓名 性別 年齡 學歷 住址 電話(保持原值的用*代替):\n");
scanf("%s %s %s %s %s %s",hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因為只有nl(年齡)是int型,故對nl作特殊處理,-1表示修改時年齡保持原值不變(不修改)
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
strcpy(hjxx.shfzhh,"*");
change(hjxx,n-1);
printf("修改完成。\n");
}
else
{
printf("無法修改,不存在第%d條戶籍信息。\n",n);
}
}
}
//用於判斷pt[n]是否匹配hjxx的模式
int ismatch(HuJiXinXi hjxx,int n)
{
int r=1;
if(strcmp(hjxx.shfzhh,"*") && strcmp(hjxx.shfzhh,pt[n].shfzhh))
{
r=0;
}
if(r && strcmp(hjxx.xm,"*") && strcmp(hjxx.xm,pt[n].xm))
{
r=0;
}
if(r && strcmp(hjxx.xb,"*") && strcmp(hjxx.xb,pt[n].xb))
{
r=0;
}
if(r && -1!=hjxx.nl && hjxx.nl!=pt[n].nl)
{
r=0;
}
if(r && strcmp(hjxx.xl,"*") && strcmp(hjxx.xl,pt[n].xl))
{
r=0;
}
if(r && strcmp(hjxx.zhzh,"*") && strcmp(hjxx.zhzh,pt[n].zhzh))
{
r=0;
}
if(r && strcmp(hjxx.dh,"*") && strcmp(hjxx.dh,pt[n].dh))
{
r=0;
}
return r;
}
//按模式查詢戶籍信息
void find()
{
int i,c=0;
char nl[16];
HuJiXinXi hjxx;
printf("請輸入要查詢的戶籍信息的身份證號 姓名 性別 年齡 學歷 住址 電話(只需提供關鍵信息以用於查詢,不提供的信息請用*代替):\n");
scanf("%s %s %s %s %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因為只有nl(年齡)是int型,故對nl作特殊處理,-1表示查詢時不需比較年齡
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
for(i=0;i<count;i++)
{
if(ismatch(hjxx,i))
{
printf("找到第%d條滿足你的模式要求的戶籍信息如下:\n",c+1);
printf("%s %s %s %d %s %s %s。\n",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
c++;
}
}
if(!c)
{
printf("系統中沒有滿足你的模式要求的戶籍信息。\n");
}
}
『貳』 C語言大作業的問題
#include<stdio.h>
#definecourse2
#definestud40
intinput(intscore[][course],longnum[]);
voidtotal(intscore[][course],intsum[],intn);
voidprint(intscore[][course],longnum[],intsum[],intn);
voidsort(intscore[][course],longnum[],intsum[],intn);
main()
{
intn;
longnum[stud];
intscore[stud][course],sum[stud];
n=input(score,num);
total(score,sum,n);
sort(score,num,sum,n);
print(score,num,sum,n);
}
intinput(intscore[][course],longnum[])
{
inti,j,n;
printf("輸入學生的人數:");
scanf("%d",&n);
printf("Enter學號.andscoreas:高等數學大學物理 ");
for(i=0;i<n;i++)
{
scanf("%ld",&num[i]);
for(j=0;j<course;j++)
{
scanf("%d",&score[i][j]);
}
}
returnn;
}
voidtotal(intscore[][course],intsum[],intn)
{
inti,j;
for(i=0;i<n;i++)
{
sum[i]=0;
for(j=0;j<course;j++)
{
sum[i]=sum[i]+score[i][j];
}
}
}
voidsort(intscore[][course],longnum[],intsum[],intn)
{
inttemp,temp1,temp2;
inti,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(sum[j]>sum[i])
{
temp=sum[j];
sum[j]=sum[i];
sum[i]=temp;
temp1=num[j];
num[j]=num[i];
num[i]=temp1;
}
}
voidprint(intscore[][course],longnum[],intsum[],intn)
{
inti,j;
printf("Result: ");
printf("No 高等數學 大學物理 總分 ");
for(i=0;i<n;i++)
{
printf("%4ld ",num[i]);
for(j=0;j<course;j++)
{
printf("%4d ",score[i][j]);
}
printf("%5d ",sum[i]);
}
}
『叄』 北郵同學C語言題啊~我哭啊~在線等答案啊
#include <stdio.h>
int CheckLeap(int year)
{
return ((year%4==0)&&(year%100)||(year%400==0));
}
int GetWeekDay(int year,int month,int day)
{
if (month<3) {
month+=12;
year--;
}
return (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1) % 7 ;
}
int GetMonthDays(int year,int month)
{
switch (month) { default:
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;break;
case 4:
case 6:
case 9:
case 11:return 30;break;
case 2:return CheckLeap(year)?29:28;break;
}
}
void PrintMonthCalender(int startDay,int days)
{
int i,j=0;printf("Sun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");
for (i = 0; i<startDay; i++) {
putchar('\t');
j++;
}
for (i=1; i<=days; j++,i++) {
if (j&&j%7==0) {
putchar('\n');
}
printf("%d\t",i);
}
}
int main(int argc, char* argv[])
{
int year,month;
printf("Input the year and month<yyyy-mm>:");
scanf("%d-%d",&year,&month);
printf("\t\t%d-%02d\n",year,month);
PrintMonthCalender(GetWeekDay(year,month,1),GetMonthDays(year,month));
return 0;
}
『肆』 大家好。我是北京郵電大學大一的,初學計算機C語言有點懵。星期六有上機考試,用的是北郵OJ系統答上機題。
OJ 上面可以選編譯器的 用VC 和DEV 在有些地方有點不同,但大體上沒什麼區別的,只要注意不要輸出不必要的內容,輸出格式什麼的注意下就是 了
『伍』 C語言大作業怎麼做
給你個大概思路~~~~~
1。把每個學生的的信息先組合成一個結構體
struct
Student
{
……},
然後就用它來定義學生,
struct
Student
stu[100];(有能力的話建義用動態內存的鏈表結構,不明白當我沒說)
2。「自頂向下,逐步求精」,把各個功能寫成各個函數,如添加,刪除,查詢,退出……(看你自己了,這正是C語言的模塊化思想
3。主函數就是打出這些選擇,讓USER
去選,然後調用相應的函數去執行,完了又回到主菜單,以此循環
如果能使用圖形的界面,增加動畫之類的會更好的(呵呵,不會當我沒說~~~~)
『陸』 c語言的大作業
以下程序做討論3個科目的,具體為數學,中文,英語。如果增加科目,具體改變相應的數字。
#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct {
char num[10];/*the number of the student*/
int score_math;/*the score of the mathematic*/
int score_chinese;
int score_enlish;
}Student; /*the information of student*/
int Avg_student(Student[],int index)
{
int avg=0;
avg=(Student[i].chinese+Student[i].math+Student[i].english)/3 ;/*the average of a student in three courses.*/
}
....給我加分吧。剩下的我通過QQ: 346994177 回復給你吧。還有期中具體的一些細節要交流下;
『柒』 c語言大作業,輸入五個學生的學號,姓名,性別,然後可以用年份輸出,班級輸出,性別輸出,求改錯
do{
printf(" 請輸入數字0-4:");
c=getchar();
n=c-48;}
while((n<0)||(n>4));
由於輸入的時候會帶入回車,真正執行的時候你打0回車其實是輸入了0 ,此循環會被執行3次
printf("%s%s%c");
這句沒帶參數
『捌』 C語言大作業,這題該怎麼寫
圖片看不清,只看到學生信息錄入。
學生信息包含多個類型數據,比如學生學號、成績、班級、年級、學科、成績等等。
所以學生應該定義為結構體。
學生數量可以用常量表示。之後定義結構數組用於循環接收學生信息的錄入。
之後學生信息的輸出,成績分析,求平均之類,都只是對結構數組的循環遍歷。
『玖』 C語言大作業
上接另一個賬號<梅園寨主>
list.h
#ifndeflist_h
#definelist_h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedefstructnNodeNode;
structnNode
{
//向上指針
Node*nUp;
//向下指針
Node*nDown;
//學號
intiId;
//班級
char*pcClass;
//姓名
char*pcName;
//數學
floatfMath;
//英語
floatfEng;
//計算機
floatfCmp;
//平均分
floatfAver;
};
typedefstruct
{
Node*nTop;
Node*nBottom;
intiSize;
}List;
//新建節點
Node*Node_new(intiId,char*pcClass,char*pcName,floatfMath,floatacEng,floatacCmp);
//刪除節點
voidNode_delete(Node*nNode);
//輸出節點的值
voidNode_print(Node*nNode);
//新建鏈表
List*List_new(void);
//刪除鏈表
voidList_delete(List*lList);
//節點從鏈表頂部加入
voidList_pushTop(List*lList,Node*nNewNode);
//節點從鏈表頂部取出
Node*List_popTop(List*lList);
//節點從鏈表底部加入
voidList_pushBottom(List*lList,Node*nNewNode);
//節點從鏈表底部取出
Node*List_popBottom(List*lList);
//節點從鏈表指定位置插入
voidList_insert(List*lList,Node*nNewNode,intiIndex);
//從鏈表中移除指定節點
voidList_remove(List*lList,Node*nOldNode);
//遍歷鏈表void(*visit)(Node*)是指向函數的指針
voidList_traverse(List*lList,void(*visit)(Node*));
//這個節點在鏈表是第幾個節點
intgetIndex(List*lList,Node*nOldNode);
//按平均分排序
voidList_sortByAver(List*lList);
//按計算機成績排序
voidList_sortByCmp(List*lList);
//按學號輸出
voidList_printById(List*lList);
//按姓名輸出
voidList_printByName(List*lList);
#endif//list_h
list.c
#include"list.h"
//新建節點
Node*Node_new(intiId,char*pcClass,char*pcName,floatfMath,floatfEng,floatfCmp)
{
intiSize;
Node*nNode=(Node*)malloc(sizeof(Node));
//設置向上指針
nNode->nUp=NULL;
//設置向下指針
nNode->nDown=NULL;
//設置學號
nNode->iId=iId;
//設置班級
if(pcClass!=NULL)
iSize=strlen(pcClass);
else
iSize=0;
if(iSize!=0)
{
nNode->pcClass=(char*)malloc(sizeof(char)*(iSize)+1);
strcpy(nNode->pcClass,pcClass);
nNode->pcClass[iSize]='