国产成人AV一区二区三区在线_国产成人精品无码免费看_国产成人无码无卡在线观看_国产精品成人A区在线观看_国产日韩精品欧美一区_国产亚洲精品自在久久蜜TV_久草热久草热线频97精品_久久久噜噜噜久久中文福利_久久婷婷五月综合色国产免费观看_日日狠狠久久偷偷色综合0,九一桃色在线观看,久久97精品久久久久久久不卡,国产成人精品亚洲精品

c語言課設(shè)的一段代碼,,寫了一小塊,,編譯通過了,,可是輸入信息卻有問題,,,,,,,,希望大佬能告訴我什么原因

訪客2024-11-27 03:09:121

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<windows.h>

typedef struct Student

{

int number[4];

char name[20];

char sex;

int grade;

char major[20];

}Student;//學(xué)生信息(學(xué)號,,姓名,性別,,年級,,專業(yè))

typedef struct Lstudent

{

Student *stu;

Lstudent *next;

}Lstudent,*Linkliststu;//學(xué)生信息鏈表節(jié)點(diǎn)的定義

Lstudent *s_head=NULL;

void LinklistCreat()

{

FILE *fp1;

char ch;

if((fp1=fopen("stu.dat","wb"))==NULL)

{

printf("cannot open the file");

return;

}

Lstudent *p=s_head;//當(dāng)前結(jié)點(diǎn)

do{while(s_head!=NULL&&p->next!=NULL)

{p=p->next;}

Lstudent *node=(Lstudent *)malloc(sizeof(Lstudent));//創(chuàng)建一個新節(jié)點(diǎn)

if(s_head==NULL)

{s_head=node;}

else

{p->next=node;}

printf("輸入該學(xué)生的學(xué)號:");

scanf("%s",node->stu->number);

printf("輸入該學(xué)生的姓名:");

scanf("%s",node->stu->name);

printf("輸入該學(xué)生的性別:");

scanf("%c",&node->stu->sex);

printf("輸入該學(xué)生的年級:");

scanf("%d",&node->stu->grade);

printf("輸入該學(xué)生的專業(yè):");

scanf("%s",node->stu->major);

printf("學(xué)生信息錄入成功");

node->next=NULL;

if(fwrite(node,sizeof(struct Lstudent),1,fp1)!=1)

printf("cannot open the file");

printf("是否繼續(xù)輸入 y or n");

ch=getchar();}while(ch=='y'||ch=='Y');

}//添加學(xué)生信息加入鏈表——從尾部加入--并存入文件fp1中--"stu.dat"

void LinklistChange()

{

Lstudent *q=s_head;

int b=0;

char ck;

int ch[4];

FILE *fp;//原文件指針

FILE *fp2;//暫時文件指針

do{if((fp=fopen("stu.dat","wb"))==NULL)

{

printf("cannot open the file");

return;

}

if((fp2=fopen("temp.dat","wb"))==NULL)

{

printf("cannot open the file");

return;

}

printf("請輸入要修改學(xué)生信息的學(xué)號");

scanf("%s",ch);

while(fread(q,sizeof(struct Lstudent),1,fp)==1)

{

if(q->stu->number==ch)

{

b++;

printf("學(xué)號,,姓名,性別,,年級,,專業(yè)");

printf("%s,%s,%c,%d,%s",q->stu->number,q->stu->name,q->stu->sex,q->stu->grade,q->stu->major);

printf("請輸入新的學(xué)生信息");

printf("請輸入新的學(xué)號:");

scanf("%s",&q->stu->number);

printf("請輸入新的姓名:");

scanf("%s",&q->stu->name);

printf("請輸入新的性別:");

scanf("%c",&q->stu->sex);

printf("請輸入新的年級:");

scanf("%s",&q->stu->grade);

printf("請輸入新的專業(yè):");

scanf("%s",&q->stu->major);

fwrite(q,sizeof(struct Lstudent),1,fp2);

q=q->next;

}

else

{

fwrite(q,sizeof(struct Lstudent),1,fp2);

q=q->next;

}

}

if(b==0)

printf("修改失敗,沒有找到相關(guān)信息");

rewind(fp);

q=s_head;//如果繼續(xù)修改的話,,要把標(biāo)記移動到文件開頭

printf("是否要繼續(xù)修改 y or n");

ck=getchar();

fclose(fp);

fclose(fp2);

remove("stu.dat");

rename("temp.dat","stu.dat");}while(ck=='y'||ck=='Y');

if(b==1)

printf("修改成功");

}//修改學(xué)生信息--定義另一個文件,,把要修改的信息放到該文件中,然后把其余的信息復(fù)制到該文件中;

//然后把其余的信息復(fù)制到該文件中;并把該文件從新命名為原來的名字并把原來的文件移除

void LinklistDelete()

{

int b=0;

Lstudent *q=s_head;

FILE *fp3;//原文件指針

FILE *fp4;//暫時文件指針

int ch[4];

char ck;

do{if((fp3=fopen("stu.dat","wb"))==NULL)

{

printf("cannot open the file");

return;

}

if((fp4=fopen("temp.dat","wb"))==NULL)

{

printf("cannot open the file");

return;

}

printf("請輸入要刪除的學(xué)生的編號");

scanf("%s",ch);

while(fread(q,sizeof(struct Lstudent),1,fp3))

{

if(q->stu->number!=ch)

{

fwrite(q,sizeof(struct Lstudent),1,fp4);

q=q->next;

}

else

{q=q->next;

b++;

}

}

if(b==0)

printf("刪除失敗");

rewind(fp3);

fclose(fp3);

fclose(fp4);

remove("stu.dat");

rename("temp.dat","stu.dat");

printf("是否需要繼續(xù)刪除 y or n");

ck=getchar();}while(ck=='y'||ck=='Y');

if(b==1)

printf("刪除成功");

}//刪除學(xué)生信息--原理與修改類似

void main()

{

char ch;

printf("*******學(xué)生興趣愛好管理系統(tǒng)*******");

printf("***輸入1--添加興趣類別***");

printf("***輸入2--刪除興趣類別***");

printf("***輸入3--修改興趣類別***");

printf("***輸入4--添加興趣項(xiàng)***");

printf("***輸入5--刪除興趣項(xiàng)***");

printf("***輸入6--修改興趣項(xiàng)***");

printf("***輸入7--添加學(xué)生信息***");

printf("***輸入8--刪除學(xué)生信息***");

printf("***輸入9--修改學(xué)生信息***");

printf("***輸入10--給學(xué)生添加興趣***");

printf("***輸入11--刪除學(xué)生的興趣***");

printf("***輸入12--輸入學(xué)號查詢該學(xué)生的信息和號碼***");

printf("***輸入13--輸入愛好查出有此愛好的學(xué)生信息***");

scanf("%c",&ch);

switch(ch)

{

case '1'://添加興趣類別

break;

case '2'://刪除興趣類別

break;

case '3'://修改興趣類別

break;

case '4'://添加興趣項(xiàng)

break;

case '5'://刪除興趣項(xiàng)

break;

case '6'://修改興趣項(xiàng)

break;

case '7'://添加學(xué)生信息

LinklistCreat();

break;

case '8'://刪除學(xué)生信息

LinklistDelete();

break;

case '9'://修改學(xué)生信息

LinklistChange();

break;

case '10'://給學(xué)生添加興趣

break;

case '11'://刪除學(xué)生的興趣

break;

case '12'://輸入學(xué)號查詢該學(xué)生的信息和號碼

break;

case '13'://輸入愛好查出有此愛好的學(xué)生信息

break;

default : printf("輸入數(shù)據(jù)錯誤,,請重新輸入");

}

}

程序至少有一個問題

c語言的char只能處理單個字符,不能用

case '10':

這樣的寫法的,若你要實(shí)現(xiàn)你的功能,改

char ch;

int ch;

然后用

scanf("%d",&ch);

case 1:

....

case 2:

....

case 10:

....

case 11:

....

文章評論