当前位置:文档之家› C语言程序设计教程(汤承林)12章源程序

C语言程序设计教程(汤承林)12章源程序

C语言程序设计教程(汤承林)12章源程序
C语言程序设计教程(汤承林)12章源程序

#include

#include

#include

#include

#include

struct book //定义书的类型

{

int booknum; //书号

char bookname[20]; //书名

char bookauthor[20]; //作者

char press[50]; //出版社

float price; //书价

int count; //剩余本数

};

struct card //定义借书卡的类型

{

int cardnum; //借书卡号

char cardname[20]; //借书卡人姓名

char studentorempid[20]; //学号或工号

char memo[50]; //备注

};

struct borrowreturn //定义借还书信息的类型{

int cardnum; //借书卡号

char cardname[20]; //借书卡人姓名

int booknum; //书号

char bookname[10]; //书名

char bookauthor[10]; //作者

char borr; //借或还(1表示借,0表示还)char date[11]; //借还日期

int adminnum; //管理员号

};

//*******************图书:增加\查询\修改\删除************* void bookadd() //图书增加

{

FILE *fp;

struct book book1;

int i=0;

char choice=…y?;

fp=fopen(“book.dat”,”ab+”);

while(choice==…y?||choice==…Y?)

{

while(1)

{

printf(“请你输入第%d本书的书号(>0):”,i+1);

scanf(“%d”,&book1.booknum);

fflush(stdin);

if(book1.booknum>0)

break;

}

printf(“请你输入书名:”);

scanf(“%s”,book1.bookname);

fflush(stdin);

printf(“请你输入书的作者:”);

scanf(“%s”,book1.bookauthor);

fflush(stdin);

printf(“请你输入书的出版社:”);

scanf(“%s”,book1.press);

fflush(stdin);

printf(“请你输入书的价格:”);

scanf(“%f”,&book1.price);

fflush(stdin);

printf(“请你输入书的剩余本数:”);

scanf(“%d”,&book1.count);

fflush(stdin);

fwrite(&book1,(long)sizeof(struct book),1,fp);

fflush(stdin);

printf(“是否要输入下本书(y/n)?:”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

i++;

}

}

fclose(fp);

}

void booksearch() //图书查询

{

FILE *fp;

struct book book1;

int num;

char choice=…y?;

fp=fopen(“book.dat”,”rb”);

while(choice==…y?||choice==…Y?)

{

while(1)

{

printf(“请你输入查询的书号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

if(num>0)

break;

}

while(!feof(fp))

{

fread(&book1,(long)sizeof(struct book),1,fp);

if(book1.booknum==num)

{

printf(“你查找的书的信息为:\n”);

printf(“书号:”);

printf(“%d\n”,book1.booknum);

printf(“书名:”);

printf(“%s\n”,book1.bookname);

printf(“作者:”);

printf(“%s\n”,book1.bookauthor);

printf(“出版社:”);

printf(“%s\n”,book1.press);

printf(“价格:”);

printf(“%5.1f\n”,book1.price);

printf(“剩余本数:”);

printf(“%d\n”,book1.count);

break;//查询显示一次后跳出循环

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp); //i=0;

}

}

fclose(fp);

}

void bookupdate() //图书修改

{

FILE *fp;

struct book book1;

int num; int i=0;

char choice=…y?;

fp=fopen(“book.dat”,”rb+”);

while(choice==…y?||choice==…Y?)

{

while(1)

{

printf(“请你输入修改的书号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

if(num>0)

break;

}

while(!feof(fp))

{

i=0;

//fseek(fp,i*sizeof(struct book),0);

fread(&book1,(long)sizeof(struct book),1,fp);

if(book1.booknum==num && i==0)

{//i==0的条件是使如下信息显示一次

printf(“你要修改的书的信息为:\n”);

printf(“书号:”);

printf(“%d\n”,book1.booknum);

printf(“书名:”);

printf(“%s\n”,book1.bookname);

printf(“作者:”);

printf(“%s\n”,book1.bookauthor);

printf(“出版社:”);

printf(“%s\n”,book1.press);

printf(“价格:”);

printf(“%5.1f\n”,book1.price);

printf(“剩余本数:”);

printf(“%d\n”,book1.count);

i++;

printf(“你要修改的书的信息为:\n”);

printf(“请你输入新的书号:”);

fflush(stdin);

scanf(“%d”,&book1.booknum);

fflush(stdin);

printf(“请你输入新的书名:”);

scanf(“%s”,book1.bookname);

fflush(stdin);

printf(“请你输入新的作者:”);

scanf(“%s”,book1.bookauthor);

fflush(stdin);

printf(“请你输入新的出版社:”);

scanf(“%s”,book1.press);

fflush(stdin);

printf(“请你输入新的价格:”);

scanf(“%f”,&book1.price);

fflush(stdin);

printf(“请你输入新剩余本数:”);

scanf(“%d”,&book1.count);

fflush(stdin);

fseek(fp,-(long)sizeof(struct book),1);

fwrite(&book1,(long)sizeof(struct book),1,fp);

fseek(fp,(long)sizeof(struct book),1);

}

}

fflush(stdin);

printf(“是否要继续修改(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp);i=0;

}

}

fclose(fp);

}

void bookdelete() //图书删除

{

FILE *fp,*fp1;

struct book book1;

int num;int i=0;

fp=fopen(“book.dat”,”rb”);

fp1=fopen(“bookbak.dat”,”wb”);

while(1)

{

printf(“请你输入删除的书号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

if(num>0)

break;

}

while(!feof(fp))

{

i=0;

fread(&book1,(long)sizeof(struct book),1,fp);

if(book1.booknum==num && i==0)

{//i==0的条件是使如下信息显示一次

printf(“你要删除的书的信息为:\n”);

printf(“书号:”);

printf(“%d\n”,book1.booknum);

printf(“书名:”);

printf(“%s\n”,book1.bookname);

printf(“作者:”);

printf(“%s\n”,book1.bookauthor);

printf(“出版社:”);

printf(“%s\n”,book1.press);

printf(“价格:”);

printf(“%5.1f\n”,book1.price);

printf(“剩余本数:”);

printf(“%d\n”,book1.count);

i++;

}

else

fwrite(&book1,(long)sizeof(struct book),1,fp1);

}

fclose(fp);

fclose(fp1);

fp=fopen(“book.dat”,”wb”);

fp1=fopen(“bookbak.dat”,”rb”);

while(!feof(fp1))

{

fread(&book1,(long)sizeof(struct book),1,fp1);

fwrite(&book1,(long)sizeof(struct book),1,fp);

}

fclose(fp);

fclose(fp1);

getche();//暂停一下,否则返回菜单太快!

fflush(stdin);

}

//*******************结束图书:增加\查询\修改\删除*********

//*******************借书卡:增加\查询\修改\删除*********** void cardadd() //借书卡增加

{

FILE *fp;

struct card card1;

int i=0;

char choice=…y?;

fp=fopen(“card.dat”,”wb+”);

while(choice==…y?||choice==…Y?)

{

while(1)

{

printf(“请你输入第%d张借书卡号(>0):”,i+1);

scanf(“%d”,&card1.cardnum);

fflush(stdin);

if(card1.cardnum>0)

break;

}

printf(“请你输入借书卡人姓名:”);

scanf(“%s”,card1.cardname);

fflush(stdin);

printf(“请你输入借书卡人学号或工号:”);

scanf(“%s”,card1.studentorempid);

fflush(stdin);

printf(“请你输入借书卡的备注:”);

scanf(“%s”,card1.memo);

fflush(stdin);

fwrite(&card1,(long)sizeof(struct card),1,fp);

fflush(stdin);

printf(“是否要输入下一张借书卡信息(y/n)?:”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

i++;

}

fclose(fp);

}

void cardsearch() //借书卡查询{

FILE *fp;

struct card card1;

int num;

char choice=…y?;

fp=fopen(“card.dat”,”rb”);

while(choice==…y?||choice==…Y?)

{

while(1)

{

printf(“请你输入查询的借书卡号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

if(num>0)

break;

}

while(!feof(fp))

{

fread(&card1,(long)sizeof(struct card),1,fp);

if(card1.cardnum==num)

{

printf(“你查找的借书卡的信息为:\n”);

printf(“借书卡号:”);

printf(“%d\n”,card1.cardnum);

printf(“借书卡人姓名:”);

printf(“%s\n”,card1.cardname);

printf(“借书卡学号或工号:”);

printf(“%s\n”,card1.studentorempid);

printf(“借书卡备注:”);

printf(“%s\n”,card1.memo);

break;

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp);

}

}

fclose(fp);

}

void cardupdate() //借书卡修改

{

FILE *fp;

struct card card1;

int num;int i;

char choice=…y?;

fp=fopen(“card.dat”,”rb+”);

while(choice==…y?||choice==…Y?)

{

while(1){

printf(“请你输入修改的借书卡号(>0):”);

scanf(“%d”,&num);

if(num>0) break;}

fflush(stdin);

while(!feof(fp))

{

i=0;

fread(&card1,(long)sizeof(struct card),1,fp);

if(card1.cardnum==num && i==0)

{ //i==0的条件是使如下信息显示一次

printf(“你要修改的借书卡信息为:\n”);

printf(“卡号:”);

printf(“%d\n”,card1.cardnum);

printf(“姓名:”);

printf(“%s\n”,card1.cardname);

printf(“学号或工号:”);

printf(“%s\n”,card1.studentorempid);

printf(“备注:”);

printf(“%s\n”,card1.memo);

i++;

printf(“你要修改的借书卡信息为:\n”);

printf(“请你输入新的借书卡号(>0):”);

scanf(“%d”,&card1.cardnum);

fflush(stdin);

printf(“请你输入新的借书卡人姓名:”);

scanf(“%s”,card1.cardname);

fflush(stdin);

printf(“请你输入新的借书卡人学号或工号:”);

scanf(“%s”,card1.studentorempid);

fflush(stdin);

printf(“请你输入新的借书卡备注:”);

scanf(“%s”,card1.memo);

fflush(stdin);

fseek(fp,-(long)sizeof(struct card),1);

fwrite(&card1,(long)sizeof(struct card),1,fp);

fseek(fp,(long)sizeof(struct card),1);

}

}

fflush(stdin);

printf(“是否要继续修改借书卡信息(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

rewind(fp);

}

fclose(fp);

}

void carddelete() //借书卡删除

{

FILE *fp,*fp1;

struct card card1;

int num;int i=0;

fp=fopen(“card.dat”,”rb”);

fp1=fopen(“cardbak.dat”,”wb”);

while(1)

{

printf(“请你输入删除的借书卡号(>0):”);

scanf(“%d”,&num);

if(num>0) break;

}

fflush(stdin);

while(!feof(fp))

{

i=0;

fread(&card1,(long)sizeof(struct card),1,fp);

if(card1.cardnum==num && i==0)

{

printf(“你要删除的借书卡信息为:\n”);

printf(“借书卡号:”);

printf(“%d\n”,card1.cardnum);

printf(“借书卡人姓名:”);

printf(“%s\n”,card1.cardname);

printf(“借书卡人学号或工号:”);

printf(“%s\n”,card1.studentorempid);

printf(“借书卡备注:”);

printf(“%s\n”,card1.memo);

i++;

}

else

fwrite(&card1,(long)sizeof(struct card),1,fp1); }

fclose(fp);

fclose(fp1);

fp=fopen(“card.dat”,”wb”);

fp1=fopen(“cardbak.dat”,”rb”);

while(!feof(fp1))

{

fread(&card1,(long)sizeof(struct card),1,fp1);

fwrite(&card1,(long)sizeof(struct card),1,fp);

}

fclose(fp);

fclose(fp1);

getche();//暂停一下,否则返回菜单太快!

fflush(stdin);

}

//*******************结束借书卡操作:增加\查询\修改\删除***

//*******************借还书*******************************

void bookborrow() //借书

{

FILE *fp,*fp1,*fp2;

struct card card1;

struct book book1;

struct borrowreturn borrowreturn1;

int num=0,num1=0;int i=0;

char choice=…y?,choice1=…n?,choice2=…n?;

/*choice表示是否继续查找借书卡号,choice1是否放弃查询借书卡或书号, choice2表示是否真的借书*/

fp=fopen(“card.dat”,”rb”);

fp1=fopen(“book.dat”,”rb+”);

fp2=fopen(“borrowreturn.dat”,”a+”);

//*******************查询借书卡号******************

while(choice==…y?||choice==…Y?)

{

printf(“请你输入借阅者的借书卡号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

while(!feof(fp))

{

fread(&card1,(long)sizeof(struct card),1,fp);

if(card1.cardnum==num)

{

printf(“你查找的借书卡的信息为(>0):\n”);

printf(“借书卡号:”);

printf(“%d\n”,card1.cardnum);

printf(“借书卡人姓名:”);

printf(“%s\n”,card1.cardname);

printf(“借书卡学号或工号:”);

printf(“%s\n”,card1.studentorempid);

printf(“借书卡备注:”);

printf(“%s\n”,card1.memo);

break;

}

if(num==0)

{

printf(“没有找到你找的借卡号(>0)!”);

printf(“放弃借书吗(y/n):”);

scanf(“%c”,&choice1);

fflush(stdin);

if(choice1==…y?||choice1==…Y?)

exit(0);

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp);//i=0;

}

}

fclose(fp);

//*******************查询借阅书号************************* choice=…y?;

while(choice==…y?||choice==…Y?)

{

printf(“请你输入借阅的书号(>0):”);

scanf(“%d”,&num1);

fflush(stdin);

while(!feof(fp1))

{

fread(&book1,(long)sizeof(struct book),1,fp1);

if(book1.booknum==num1)

{

printf(“你要借阅的书的信息为:\n”);

printf(“书号:”);

printf(“%d\n”,book1.booknum);

printf(“书名:”);

printf(“%s\n”,book1.bookname);

printf(“作者:”);

printf(“%s\n”,book1.bookauthor);

printf(“出版社:”);

printf(“%s\n”,book1.press);

printf(“价格:”);

printf(“%5.1f\n”,book1.price);

printf(“剩余本数:”);

printf(“%d\n”,book1.count);

break;

}

if(num1==0||book1.count==0)

{

printf(“没有找到你找的书号或此书已借阅完!”);

printf(“放弃借书吗(y/n):”);

scanf(“%c”,&choice1);

fflush(stdin);

if(choice1==…y?||choice1==…Y?)

{

exit(0);

}

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp1); //i=0;

}

}

//*******************保存借阅信息*************************

printf(“真的借书吗(y/n):”);

scanf(“%c”,&choice2);

fflush(stdin);

if(!(choice2==…y?||choice2==…Y?))

{

exit(0);

}

else

{

if(!(card1.cardnum!=0 && book1.booknum!=0 && book1.count!=0))

exit(0);

//card1.cardnum写入的借书卡号, book1.booknum写入的借书书号

book1.count--; //修改所借书的剩余本数

fseek(fp1,-(long)sizeof(struct book),1);//定位文件内部指针到修改的信息位置fwrite(&book1,(long)sizeof(struct book),1,fp1);//修改所借书的剩余本数

borrowreturn1.cardnum=card1.cardnum ;

strcpy(borrowreturn1.cardname,card1.cardname) ;

borrowreturn1.booknum=book1.booknum ;

strcpy(borrowreturn1.bookname,book1.bookname) ;

strcpy(borrowreturn1.bookauthor,book1.bookauthor) ;

borrowreturn1.borr=…1?;

printf(“请输入管理员号:”);

scanf(“%d”,&borrowreturn1.adminnum);

fflush(stdin);

printf(“请输入借书日期(格式要求:2009-02-06):”);

scanf(“%s”,&borrowreturn1.date);

fflush(stdin);

fwrite(&borrowreturn1,(long)sizeof(struct borrowreturn),1,fp2);

}

fclose(fp1);

fclose(fp2);

}

void bookreturn() //借还书

{

FILE *fp,*fp1,*fp2;

struct card card1;

struct book book1;

struct borrowreturn borrowreturn1;

int num=0,num1=0;int i=0;

char choice=…y?,choice1=…n?,choice2=…n?;

/*choice表示是否继续查找还书卡号,choice1是否放弃查询还书卡或书号, choice2表示是否真的还书*/

fp=fopen(“card.dat”,”rb”);

fp1=fopen(“book.dat”,”rb+”);

fp2=fopen(“borrowreturn.dat”,”ab+”);

//*******************查询还书者的借书卡号************************* while(choice==…y?||choice==…Y?)

{

printf(“请你输入还书者的借书卡号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

while(!feof(fp))

{

fread(&card1,(long)sizeof(struct card),1,fp);

if(card1.cardnum==num)

{

printf(“你查找的还书者的借阅卡的信息为:\n”);

printf(“还书人的借阅卡号:”);

printf(“%d\n”,card1.cardnum);

printf(“还书人姓名:”);

printf(“%s\n”,card1.cardname);

printf(“还书人学号或工号:”);

printf(“%s\n”,card1.studentorempid);

printf(“还书人借阅卡备注:”);

printf(“%s\n”,card1.memo);

break;

}

if(num==0)

{

printf(“没有找到你找的借书卡号!”);

printf(“放弃还书吗(y/n):”);

scanf(“%c”,&choice1);

fflush(stdin);

if(choice1==…y?||choice1==…Y?)

{

exit(0);

}

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp); //i=0;

}

}

fclose(fp);

//*******************查询还书书号************************* choice=…y?;

while(choice==…y?||choice==…Y?)

{

printf(“请你输入还书的书号(>0):”);

scanf(“%d”,&num1);

fflush(stdin);

while(!feof(fp1))

{

fread(&book1,(long)sizeof(struct book),1,fp1);

if(book1.booknum==num1)

{

printf(“你要还的书的信息为:\n”);

printf(“书号:”);

printf(“%d\n”,book1.booknum);

printf(“书名:”);

printf(“%s\n”,book1.bookname);

printf(“作者:”);

printf(“%s\n”,book1.bookauthor);

printf(“出版社:”);

printf(“%s\n”,book1.press);

printf(“价格:”);

printf(“%5.1f\n”,book1.price);

printf(“剩余本数:”);

printf(“%d\n”,book1.count);

break;

}

if(num1==0)

{

printf(“没有找到你找的书号!”);

printf(“放弃还书吗(y/n):”);

scanf(“%c”,&choice1);

fflush(stdin);

if(choice1==…y?||choice1==…Y?)

{

exit(0);

}

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp1);//i=0;

}

}

//*******************保存还书信息*************************

printf(“真的还书吗(y/n):”);

scanf(“%c”,&choice2);

fflush(stdin);

if(!(choice2==…y?||choice2==…Y?))

{

exit(0);

}

else

{

if(!(card1.cardnum!=0 && book1.booknum!=0))

exit(0);

book1.count++; //修改所还书的剩余本数

fseek(fp1,-(long)sizeof(struct book),1);//定位文件内部指针到修改的信息位置fwrite(&book1,(long)sizeof(struct book),1,fp1);//修改所还书的剩余本数

borrowreturn1.cardnum=card1.cardnum ;

strcpy(borrowreturn1.cardname,card1.cardname) ;

borrowreturn1.booknum=book1.booknum ;

strcpy(borrowreturn1.bookname,book1.bookname) ;

strcpy(borrowreturn1.bookauthor,book1.bookauthor) ;

borrowreturn1.borr=…0?; //0表示还书

printf(“请输入管理员号:”);

scanf(“%d”,&borrowreturn1.adminnum);

fflush(stdin);

printf(“请输入还书日期(格式要求:2009-02-06):”);

scanf(“%s”,&borrowreturn1.date);

fflush(stdin);

fwrite(&borrowreturn1,(long)sizeof(struct borrowreturn),1,fp2);

}

fclose(fp1);

fclose(fp2);

}

void bookborr() //借还书查询

{

FILE *fp;

struct borrowreturn borrowreturn1;

int num;

char choice=…y?;

fp=fopen(“borrowreturn.dat”,”rb”);

while(choice==…y?||choice==…Y?)

{

printf(“请你输入查询的借书卡号(>0):”);

scanf(“%d”,&num);

fflush(stdin);

printf(“你查询的借还书信息为:\n”);

printf(“卡号借书卡人姓名书号作者出版社借/还借/还日期管理员号\n”);

while(!feof(fp))

{

if(fread(&borrowreturn1,(long)sizeof(struct borrowreturn),1,fp)!=1)

break; //保证文件中最后一条记录不会重复显示if(borrowreturn1.cardnum==num)

{

printf(“%6d “,borrowreturn1.cardnum);

printf(“%10s “,borrowreturn1.cardname);

printf(“%6d “,borrowreturn1.booknum);

printf(“%10s “,borrowreturn1.bookname);

printf(“%10s “,borrowreturn1.bookauthor);

printf(“%6s “,(borrowreturn1.borr==…1?)?”借”:”还”);

printf(“%13s “,borrowreturn1.date);

printf(“%6d\n”,borrowreturn1.adminnum);

}

}

printf(“是否要继续查找(y/n):”);

scanf(“%c”,&choice);

fflush(stdin);

if(choice==…y?||choice==…Y?)

{

rewind(fp);//i=0;

}

}

fclose(fp);

}

//*******************结束借还书***************************

void main()

{

char ch1,ch2,ch3,ch4;

do

{

printf(“******************欢迎进入图书馆管理系统******************\n”);

printf(“* *\n”);

printf(“* 制作人:汤承林 *\n”);

printf(“* 联系地址:江苏×××信息学院计算机科学与工程系 *\n”);

printf(“*___________※_※_※____________*\n”);

printf(“* 请你选择操作类型: *\n”);

printf(“* 1:<图书信息管理> *\n”);

printf(“* 2:<借书卡管理> *\n”);

printf(“* 3:<图书借还管理> *\n”);

printf(“* 0:<退出> *\n”);

printf(“**********************************************************\n”);

printf(“请选择0--3:”);

scanf(“%c”,&ch1);

getchar();

switch(ch1)

{

case …1?:

do

{ printf(“---------------欢迎进入图书管理模块!----------------\n”);

printf(“ 1:<增加图书>\n”);

printf(“ 2:<删除图书>\n”);

printf(“ 3:<修改图书>\n”);

printf(“ 4:<查询图书>\n”);

printf(“ 0:<返回>\n”);

printf(“-----------------------------------------------------\n”);

printf(“请输入0--4,其他输入非法!:”);

scanf(“%c”,&ch2);

getchar();

switch(ch2)

{

case …1?:bookadd(); break;

case …2?:bookdelete();break;

case …3?:bookupdate();break;

case …4?:booksearch();break;

case …0?:break;

}

}while(ch2!=…0?);break;

case …2?:

do

{

printf(“---------------欢迎进入借书卡管理模块!--------------\n”);

printf(“ 1:<增加借书卡>\n”);

printf(“ 2:<删除借书卡>\n”);

printf(“ 3:<修改借书卡>\n”);

printf(“ 4:<查询借书卡>\n”);

printf(“ 0:<返回>\n”);

printf(“-----------------------------------------------------\n”);

printf(“请输入0--4,其他输入非法!:”);

scanf(“%c”,&ch3);

getchar();

switch(ch3)

{

case …1?:cardadd(); break;

case …2?:carddelete();break;

case …3?:cardupdate();break;

case …4?:cardsearch();break;

case …0?:break;

}

}while(ch3!=…0?);break;

case …3?:

do

{

printf(“---------------欢迎进入借还书管理模块!

--------------\n”);

printf(“ 1:<借书>\n”);

printf(“ 2:<还书>\n”);

printf(“ 3:<借还书查询>\n”);

printf(“ 0:<返回>\n”);

printf(“-----------------------------------------------------\n”);

printf(“请输入0--3,其他输入非法!:”);

scanf(“%c”,&ch4);

getchar();

switch(ch4)

{

case …1?:bookborrow(); break;

case …2?:bookreturn();break;

case …3?:bookborr();break;

case …0?:break;

}

}while(ch4!=…0?);break;

case …0?:exit(0);

}

}while(ch1!=…0?);

}

《C语言程序设计》第三章 C语言基础 课堂笔记

页眉内容 《C语言程序设计》第三章C语言基础课堂笔记 §3.1 基本字符集、关键字和标识符 一.基本字符集 字符是C的基本元素,C语言允许使用的基本字符集: 1.26个大写字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2.26个小写子母a b c d e f g h I j k l m n o p q r s t u v w x y z 3.10个阿拉伯数字0 1 2 3 4 5 6 7 8 9 4.其他字符!" # % & ' ( ) * + , - . / : < = > ? [ \ ] ^ _ { | } ~ 5.空格字符以及制表符合换行符等控制字符 二.关键字(P375,附录II) C中具有固定意义的字符串。 (1) C中的关键字共32个,必须用小写字母 (2) 关键字不可用于变量名、函数名等。 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while 三.标识符 标识符用于命名变量、类型、函数和其他各种用户定义的对象,是由字母、下划线和数字三种字符组成。 (1) 第一个字符必须为字母或下划线 (2) C对标识符的长度规定为任意,Turbo C区分32 个字符 (3) C区分大小写 (4) 不允许关键字作为标识符 §3.2 C数据类型

c语言程序设计第二章课后参考答案

第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

c语言课程设计机房机位预定系统绝对正确,附源代码

1 设计目的 机房机位预定系统 2 任务概述 20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定! (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。 ......... 3 模块划分 4 主要函数说明及其N-S图 1.主函数: int main() { Menu(); /*当前状态函数*/ } void Menu() /*主界面*/ { int n,w; do { puts("\t\t****************机房机位预约系统*******************\n"); puts("\t\t*************************菜单

***************************\n"); puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/ puts("\t\t\t 2.预定空机位"); /*预定空机位*/ puts("\t\t\t 3.取消预订"); /*取消预订*/ puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/ puts("\t\t\t 5.退出"); /*退出*/ puts("\t\t********************************************************\n"); printf("选择菜单号(1-5):"); scanf("%d",&n); if(n<1||n>5) {w=1;getchar();} else w=0; }while(w==1); switch(n) { case 1:Situation();break; case 2:Book();break; case 3:Cancel();break; case 4:SearchWaiting();break; case 5:exit(0);break; } getch(); } 2.机位查询: void Situation() { int time; printf("输在 (8-20)范围内的时间:"); scanf("%d",&time); if(time<8||time>20) {printf("\t时间输入错误!\n"); printf("输入在 (8-20)范围内的时间:"); scanf("%d",&time); } detail(time); /*函数调用*/ getchar(); Menu();} 3.机位预定:

C语言程序设计教程 教学大纲

附件一 C语言程序设计 教学大纲

C语言程序设计 一、本大纲适用专业、层次、总课时 1.适用专业:计算机类 2.层次:大专 3.总课时:64学时 二、课程性质和任务 《C语言程序设计》是计算机应用专业的专业必修课程,主要任务是介绍C语言中的数据类型,运算,语句结构及其程序设计的基本方法。目的是使学生掌握一门高级程序设计语言,学会利用C语言解决一般应用问题,并为后续的专业课程奠定程序设计基础。《C语言程序设计》是一门实践性很强的课程,必须通过上机操作才能掌握所学的知识,所以要特别强调讲授与上机操作相结合,要保证学生有充分的上机条件。 三、课程的基本要求与目标 根据市场对高职网络人才培养规格的需求特点,本课程的总目标是:“以学生为主体,以学生的学习为中心”,通过课程的实施,帮助学生学会学习。使学生的知识、情感、技能得到全面发展,既为今后的专业课程学习打下良好的知识与技能基础,又培养良好的态度,为其将来从事专业活动和未来的职业生涯打下基础。课程内容以“学其所用,用其所学”突出高职教育特点,确保人才培养目标的实现。课程目标如下: (1)知识目标:要求学生掌握基本的程序编写技能。学会利用常见的C程序开发工具的使用,掌握开发环境的配置,掌握常见菜单命令的使用以及整个窗口的布局设置。掌握结构化或模块化程序设计技能,学会数组、函数、三大控制结构、结构体和共用体以及指针的使用。为软件后期维护和管理提供必要的技术支持。 (2)能力目标: C语言程序设计的课程开设是从学生的角度出发,注重培养学生良好的动手实践习惯,注重培养学生严谨的行事风格,尤其注重挖掘学生的潜质,注重培养与社会接轨,培养学生具有踏实工作作风,良好的观察和思考能力强以及团队合作能力。 (3)情感目标:学生提高自己的独立思考和判断能力,通过这种方式能够对工作任务进行有效分析和寻求解决方案;加强自身的程序设计实践能力;培养从事软件研发的职业素养。在学习过程中使学生学会利用网络资源与他人进行交流与

C语言-第三章编程题

完成以下编程题,将程序源代码粘贴提交。 P.56 2.编写程序,输入圆的半径,计算并输出其周长和面积。常量pi的值取3.14159,周长和面积取小数点后2位数字。 #include #define pi 3.14159 void main() { float r,s,a; printf("请输入圆的半径"); scanf("%f",&r); s=pi*r*r; a=2*pi*r; printf("s=%.2f,a=%.2f\n",s,a); } 3.编写程序,把整数华氏温度f转换为浮点型的摄氏温度c。转换公式为c=5/9(f-32),输出要有文字说明,取2位小数。 #include void main() { int f; float c; printf("请输入华氏温度"); scanf("%d",&f);

c=5.0/9*(f-32); printf("摄氏温度为%.2f\n",c); } 4.编写程序,输入三角形的三边的边长,求三角形面积。三角形面积的计算公式为:p=(a+b+c)/2 ,S=sqrt(p(p-a)(p-b)(p-c))。 #include #include void main() { float a,b,c,S,p; printf("请输入三角形三边长\n"); scanf("%f%f%f",&a,&b,&c); p=(a+b+c)/2.0; S=sqrt(p*(p-a)*(p-b)*(p-c)); printf("S=%f\n",S); } 6.编写程序,输入一个小写字母,输出其对应的大写字母。 #include void main() { char c; printf("请输入一个小写字母\n"); scanf("%c",&c);

二级c语言程序设计习题及解答ch1-3

12)计算机能直接执行的程序是(B )。 A)源程序B)目标程序C)汇编程序D)可执行程序 13)以下叙述中正确的是( D ) A)程序设计的任务就是编写程序代码并上机调试 B)程序设计的任务就是确定所用数据结构 C)程序设计的任务就是确定所用算法 D)以上三种说法都不完整 例年真题: #include main() { Int a; A=5; /*给A变量赋值5 A+=3; 再赋值后再加3*/ Printf(“%d”,a); } (11)以下叙述中正确的是( C )。 A)C 程序的基本组成单位是语句B)C 程序中的每一行只能写一条语句 C)简单C 语句必须以分号结束D)C 语句必须在一行内写完 (11)以下叙述中正确的是( C ) A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一个语句 C)C程序书写格式自由,一个语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 (12)以下选项中,能用作用户标识符的是( C ) A)void B)8_8 C)_0_ D)unsigned 【解析】A:关键字不可以B:不以数字开头C:正确D:关键字 (13)以下选项中合法的标识符是( C ) A)1-1 B)1—1C)-11D)1— 【解析】A:不以数字开头,出现非法字符-而不是_ B:不以数字开头,非法字符C:正确D: 不以数字开头,出现非法字符 (14)以下选项中不合法的标识符是( C ) A)print B)FOR C)&a D)_00 【解析】C:出现非法字符& (15)以下选项中,能用作数据常量的是( D ) A)o115 B)0118 C)1.5e1.5D)115L

C语言详解(第五版)第二章程序设计项目答案

C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include #include int main(void) {float mile_1,mile_2,miles,consume,payment; printf("MILEAGE REIMBURSEMENT CALCULATOR\n"); printf("Enter begainning odometer reading>\n"); scanf("%f",&mile_1); printf("Enter endding odometer reading>\n"); scanf("%f",&mile_2); printf("Enter consume per mile>\n"); scanf("%f",&consume); miles=mile_2-mile_1; payment=miles*consume; printf("You traveled%f miles.At%f per mile,your reimbursement is%f",miles,consume,payment); system("pause"); return(0); } 2.编写一个程序,用于辅助设计水力发电大坝。提示用户输入大坝高度,以及水流量。如果水由重力所做的功有90%转化为电能,测算会有多少M瓦的功率。 #include #include int main(void) {double density,weight,gravitational_acceleration, efficiency,height,water_flow_rate,work,electricity_power; printf("Please type in the density of water>"); scanf("%lf",&density); printf("Please type in the gravitational_acceleration>"); scanf("%lf",&gravitational_acceleration); printf("Please type in the height of the water>"); scanf("%lf",&height); printf("Please type in the efficiency of the transformation\nfrom water to electricity>"); scanf("%lf",&efficiency); printf("Please type in the water_flow_rate>"); scanf("%lf",&water_flow_rate); weight=density*water_flow_rate; work=weight*height*gravitational_acceleration; electricity_power=work*efficiency/1000000; printf("The electric energy production is%fW",electricity_power); system("pause"); return0; }

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。

c语言程序设计第三章课后答案

/*习题3 2*/ #include main() { int rate; double salary,tax; printf("enter salary:\n"); scanf("%lf",&salary); if(salary<=850) rate=0; else if(salary>850&&salary<=1350) rate=5; else if(salary>1350&&salary<=2850) rate=10; else if(salary>2850&&salary<=5350) rate=15; else rate=20; tax=rate*(salary-850)/100; printf("tax=%.2lf\n",tax); } /*习题3 4*/ #include main() { int n,i,A=0,B=0,C=0,D=0,E=0; double grade,sum=0,ave; printf("enter n:\n"); scanf("%d",&n); printf("enter n ge grade\n"); for(i=1;i<=n;i++) { scanf("%lf",&grade); sum=sum+grade; if(grade>=90&&grade<=100) A=A+1; else if(grade>=80&&grade<=89) B=B+1; else if(grade>=70&&grade<=79) C=C+1; else if(grade>=60&&grade<=69) D=D+1; else E=E+1;

C语言程序设计学习指导(第2版) 1-6

第一章概述 一、选择 1.C 2.B 3.C 4.D 5.D 6.A 7.B 8.C 9.A 10.B 11.C 12.D 13.B 14.B 第二章数据类型 一、选择 1.D 2.A 3.C 4.D 5.A 6.B 7.A 8.B 9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.C 第三章运算符和表达式 一、选择 1.A 2.D 3.D 4.D 5.D 6.A 7.C 8.C 9.B 10.B 11.C 12.C 13.A 14.A 15.A 16.A 17.B 18.C 19.C 20.D 21.A 22.A 23.C 24.C 25.A 26.B 27.D 28.A 29.B 30.C 31.D 32.D 33.D 34.B 35.A 36.A 37.B 38.C 39.D 40.B 41.B 42.C 43.B 第四章输入和输出 一、选择 1.C 2.D 3.C 4.C 5.C 6.B 7.B 8.C 9.D 10.D 11.D 12.D 13.B 14.A 15.B 16.B 二、编程 1.double fun(double m) { float n; n=(5.0/9.0)*(m-32); return n; } 2. char fun(char c) {c=c+32; return c;} 3.double fun(int m) { double y=0; y=sin(m)*10; return(y); } 4.float fun ( float h ) {return (long)( h * 100 + 0.5 )/ 100.0;}

C语言程序设计课程设计报告

C语言程序设计课程设 计报告 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目: C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 2.1 掷骰子游戏 (5) 2.2 射击游戏 (7) 2.3 计算存款本息之和 (8) 2.4肇事逃逸 (10) 2.5 礼炮 (12) 2.6 汽车加油 (14) 2.7 大优惠 (16) 2.8 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C 语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 2.1掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述

(完整版)C语言程序设计教程第五章练习题题目

单选题 1、关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = {1,2,3}; D.int arr[5] = {1,2,3,4,5,6}; 2、在定义数组int arr[10]后,下列选项中对arr的引用正确的是() A.arr[10] B.arr[6.3] C.arr(6) D.arr[0] 3、在C语言中,引用数组元素时,其数组下标的数据类型允许是() A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4、若int arr[5] = {1,2,3}; 则arr[2]的值为() A.1 B.2 C.3 D.null 5、在执行int arr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为() A.4 B.1 C.2 D.5 6、关于二维数组,下列选项能正确定义并赋初值的是() A.int n = 5,b[n][n]; B.int a[1][2] = {{1},{3}}; C.int c[2][] = {{1,2},{3,4}}; D.int a[3][2] = {{1,2},{3,4}}; 7、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s); 其输出结果为() A.a book! B.a book C.a bo D.a 8、阅读下列程序: int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } }; printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]);

c语言详解(第五版)第三章程序设计项目答案

c语言详解(第五版)第三章程序设计项目答案 1.假设买一辆车首付为500dollar。请计算月供。 #include #include #include int main(void) {double capital_sum,monthly_interest_rate,initial_payment,temp,payment,terms; printf("Please enter the price of the car>>"); scanf("%lf",&capital_sum); printf("Please enter the monthly interest rate>>"); scanf("%lf",&monthly_interest_rate); printf("Please enter the terms duration of loan>>"); scanf("%lf",&terms); printf("Please enter the initial_payment>>"); scanf("%lf",&initial_payment); temp=1+monthly_interest_rate; payment=(capital_sum-500)*monthly_interest_rate/(1-pow(temp,-terms)); printf("The monthly contribution is %.2f dollars.",payment); printf("The capital sum is %.2f dollars.",capital_sum); system("pause"); return 0; } 2.编写两个函数,一个显示三角形,另一个显示矩形。 #include #include #include void draw_triangle(void); void draw_rectangle(void); int main(void) {draw_triangle(); draw_rectangle(); system("pause"); return 0; } /*Draw an triangle.*/ void draw_triangle(void) { printf(" /\\ \n"); printf(" / \\ \n"); printf(" / \\ \n"); printf(" / \\ \n"); printf(" -------- \n"); } void draw_rectangle(void)

C语言课程设计俄罗斯方块源代码

1、新建“.h”头文件,将“头文件” 代码粘贴至其中, 2、新建“.c”源文件,将“源代码” 代码粘贴到其中。 3、新建空白工程,将头文件和源代码 添加进去,调试使用。 //头文件 //1.自定义枚举类型,定义7种形态的游戏方块 typedef enum tetris_shape { ZShape=0, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape }shape; //2.函数声明 //(1)操作方块函数 int maxX();//取得当前方块的最大x坐标 int minX();//取得当前方块的最小x坐标 void turn_left();//当前方块逆时针旋转90度 void turn_right(); int out_of_table(); void transform(); int leftable(); int rightable(); int downable(); void move_left(); void move_right(); //(2)操作游戏桌面的函数 int add_to_table();

void remove_full(); //(3)控制游戏函数 void new_game(); void run_game(); void next_shape(); int random(int seed); //(4)绘图函数 void paint(); void draw_table(); //(5)其他功能函数 void key_down(WPARAM wParam); void resize(); void initialize(); void finalize(); //(6)回调函数,用来处理Windows消息 LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); //源代码 //1.文件包含 #include #include #include #include"tetris.h" //2.常量定义 #define APP_NAME "TETRIS" #define APP_TITLE "Tetris Game" #define GAMEOVER "GAME OVER" #define SHAPE_COUNT 7 #define BLOCK_COUNT 4 #define MAX_SPEED 5 #define COLUMS 10 #define ROWS 20 #define RED RGB(255,0,0)

C语言程序设计教程第一章练习题题目

单选题 1、下列语言中不属于计算机语言的三大类的是(C)。 A.机器语言 B.汇编语言 C.脚本语言 D.高级语言 2、下列说法中不正确的是(C) A.计算机语言大致可分为三大类,即机器语言、汇编语言和高级语言 B.C语言是一种通用的、过程式的编程语言,具有高效、灵活、可移植等优点 C.C语言属于汇编语言 D.高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用 3、以下开发工具中不属于主流的开发工具的是(B) A.Visual Studio B.Xcode C.Code::Block D.Eclipse 4、下列选项是对主流开发工具的介绍,其中错误的是(B) A.Visual Studio支持C/C++、C#、F#、VB等多种程序语言的开发和测试 B.Code::Block是一个免费的跨平台IDE,支持C、C++和Fortan程序的开发 C.Eclipse是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发 D.Vim是一款功能非常强大的IDE ( 和其他IDE不同的是,Vim本身并不是一个用于开发计算机程序的IDE,而是一款功能非常强大的文本编辑器,它是UNIX系统上Vi编辑器的升级版。) 5、下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是(A) A.启动开发工具 B.添加源文件 C.编写代码 D.运行程序 6、下列选项中,关于main()函数叙述不正确的是(C) A.一个完整的C语言程序中,有且只能有一个main()函数 B.main()函数是程序的主入口,程序总是从main()函数开始执行 C.如果没有声明main()函数,程序将从第1行开始执行 D.main()函数可以有返回值,也可以没有返回值 7、下面程序中,合法的选项是(D) A.#includeint main() { printf("hello world\n"); return 0; } B.#includeint man() { printf("hello world\n"); return 0; } C.#includeint main() { printf("hello world\n") return 0; } D.#includeint main() { print("hello world\n"); return 0; } 8、下面程序中,运行结果为“1,2”的是(A) A.#includeint main() { int a = 1; int b = 2; printf("%d %d\n",a,b); return 0; } B.#includeint main() { int a = 1; int b = 2; printf("%d,"a); printf("%d\n",b); return 0; } C.#includeint main() { int a = 1, b = 2; printf("%d,,%d\n",a,b); return 0; }

C语言程序设计(第3版)第3章习题参考答案

习题三参考答案 (1)从键盘输入一个年份值,判断是否闰年。设iYear为某一年份,iYear为闰年的条件为:iYear可以被4整除且不可以被100整除,或者iYear可以被400整除。 #include "Stdio.h" #include "Conio.h" int main(void) { int iYear; printf("please input the year:"); scanf("%d",&iYear); if(iYear%400==0||(iYear%4==0&&iYear%100!=0)) printf("%d is leap",iYear); else printf("%d is not leap",iYear); getch(); return 0; } (2)从键盘输入三个整数,按由小到大的顺序输出。 #include "stdio.h" main() {int i,j,k,max; scanf("%d%d%d",&i,&j,&k); max=i>j?i:j; max=max>k?max:k; printf("max=%d",max); getch(); } (3)假设星期一至星期五每工作一小时的工资是20元,星期六和星期日每工作一小时的工资是平时的3倍,其中工资的4.5%是税金。试编一程序从键盘输入星期序号(1,2,3,4,5,6,7,分别表示星期一至星期天)和工作小时数,计算该日的工资及应交税金。 #include "Stdio.h" #include "Conio.h" int main(void) { int iWeek,iHours ; float fSalary,fTaxes;

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

C语言程序设计课程作业

C语言程序设计课程作业_A 一、单选题 1. (4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是() ? A. x%=(k%=5) ? B. x%=(k-k%5) ? C. x%=k ? D. (x%=k)-(k%=5) 答案D 解析C语言程序设计/数据类型与运算/整型算术表达式 2. (4分)以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf('%d,%d,%d ', x,y,z); } ? A. 20,20,20 ? B. 32,16,20 ? C. 16,32,20 ? D. 20,32,20 答案C 解析C语言程序设计/数据类型及运算 3. (4分)C语言中while和do while循环的主要区别是( ) ? A. do-while的循环至少无条件执行一次

? B. while循环控制条件比do-while的循环控制条件严格 ? C. do-while允许从外部转入到循环体内 ? D. do-while的循环体不能是复合语句 答案A 解析C语言程序设计/循环程序设计/while语句与do-while语句 4. (4分)执行语句scanf('%d,%d',&m,&n);使m和n的值分别为1和2,正确输入是( ) ? A. 1 ? B. 1 2 ? C. 1,2 ? D. 12,2 答案C 解析C语言程序设计/顺序程序设计/整型数据的格式输入 5. (4分)sizeof(float)是( ) ? A. 一个双精度型表达式 ? B. 一个整型表达式 ? C. 一种函数调用 ? D. 一个不合法的表达式 答案B 解析C语言程序设计/数据类型与运算/实型变量存储 6.

相关主题
文本预览
相关文档 最新文档