文档视界 最新最全的文档下载
当前位置:文档视界 › c语言程序设计通讯录 (2)

c语言程序设计通讯录 (2)

c语言程序设计通讯录 (2)
c语言程序设计通讯录 (2)

长江大学工程技术学院C语言课程设计实习报告

通讯录管理系统

学生姓名:吴正杰学号:序号:19

专业班级:计科61031

指导老师:刘旨阳

报告日期:2015\7\6

1.需求分析

根据题目要求,通讯录保存在文件中,要提供文件的输入和输出能力;还有就是要提供通讯录添加(个人信息包括姓名、邮编、住址、

电话号码、QQ、电子邮件等)、删除、显示、修改等基本功能。

2.概要设计?

系统总体设计是信息的输入、信息的编辑和退出。系统功能模块如下:

1.

2.通讯录里无信息,所以要添加信息。用键盘逐个输入通讯录里联

系人的信息。?

?

3.查找通讯录是让使用者可以通过姓名来查找通讯录里的联系人。??

?

4.

?

5.删除通讯录是用来按照联系人的姓名来单独删除通讯录中一些不

struct friends //定义的数组

{

char name[8];

char addr[14];

char pc[7];

char e_mail[14];

char QQ[10];

char tel[12];

}frd[500];

int NO = 10; //宏定义k定义为删除联系人的个数m定义为添加联系人的个数NO定义为原始通讯录中的联系人的个数

int k, m;

FILE*fp;

void menu() //主菜单

{

int a;

printf("\n\t\t |----------- 欢迎您使用通讯录管理系统1.0beat版----------|");

printf(" \n\t\t| [1]添加联系人;[2]删除联系人;[3]查找联系人| ");

printf(" \n\t\t| [4]显示联系人;[5]修改联系人;[6]排序联系人[7]退出| ");

printf("\n\t\t |---------------------------------------------------------|");

printf("\n\t\t请选择您所所要的服务:");

scanf("%d", &a);

switch (a)

{

case 1:newrecord(); break;

case 2:shanchuname(); break;

case 3:chazhaoname(); break;

case 4:xianshi(); break;

case 5:xiugai(); break;

case 6:paixu(); break;

case 7:exit(0);

default:

exit(0);

}

}

int main() //主函数

{

daoruwenji();

while (1) //1是真的进行死循环

{

menu();

}

return 0;

}

void xianshi() //打印所有的通讯录的人的信息

{

int i;

fp = fopen("jk0119.txt", "r");

if (fp == 0)

{

printf("\n\n\n\n\t 电话簿文件不存在");

exit(0);

}

printf("\n\n********************************欢迎使用通讯录

*******************************************");

printf("\n 姓名地址邮编e_mail QQ 手机号");

for (i = 0; i < NO-k+m; i++)

{

fscanf(fp, "%s%s%s%s%s%s", frd[i].name, frd[i].addr, frd[i].pc,

frd[i].e_mail, frd[i].QQ, frd[i].tel);

}

for (i = 0; i < NO-k+m;i++ )

{

printf("\t\n%3d", i + 1);

printf("%8s%14s%7s%14s%10s%12s", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);

}

printf("\n\n******************************************************** *********************************");

}

int daoruwenji() //判断通讯录是否为空和如果为空就新建一个txt文本

{

if ((fp = fopen("jk0119.txt", "rb")) == 0) //打开jk0119.txt文件

{

printf("\n\n\n\n\t 电话簿文件不存在");

if((fp = fopen("contact.txt", "wb")) == 0)//判断文件是否为空

{

printf("\n\t\t\t\t建立失败");

exit(0);

}

else

{

printf("\n\t 电话簿已建立");

printf("\n\t 按任意键进入主菜单");

getch();

return(0);

}

exit(0);

}

fseek(fp,0L, 2);//将读取文件的指针移至文件末端

if (ftell(fp)>0)//统计文件的字节是否为0

{

rewind(fp);

printf("\n\n\n\n\t \t\t\t\t 文件导入成功");

printf("\n\t\t\t\t \t 按任意键返回主菜单");

fclose(fp);

getch();

return(0) ;

}

printf("\n\n\n\n\t\t\t文件导入成功");

printf("\n\t\t\t电话簿文件中无任何纪录");

printf("\n\t\t\t按任意键返回主菜单");

fclose(fp);

getch();

return(0);

}

void save() //对修改的函数进行保存到txt文本中

{

int i;

if ((fp = fopen("jk0119.txt", "w")) == 0)

{

printf("\n\t\t\t\t打开失败");

}

for (i = 0; i < NO-k+m; i++)

{

fprintf(fp, "%s\t%14s%7s%14s%10s%12s\n", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel); //打印出文件的信息}

printf("\n\t 保存文件成功");

fclose(fp);

}

void newrecord() //新建一个新的联系人

{

printf("\n\t\t******************请输入联系人信息

************************");

printf("\n\t\t 输入联系人的姓名");

scanf("%s", &frd[NO-k+m].name);

for (int i = 0; i < NO-k+m; i++)

{

if (strcmp(frd[NO].name, frd[i].name) == 0)

{

printf("\n\n\t姓名重复请重新新建联系人");

newrecord();

}

}

printf("\n\t\t 输入联系人的地址");

scanf("%s", &frd[NO - k + m].addr);

printf("\n\t\t 输入联系人的邮编");

scanf("%s", &frd[NO - k + m].pc);

printf("\n\t\t 输入联系人的e_mail ");

scanf("%s", &frd[NO - k + m].e_mail);

printf("\n\t\t 输入联系人的QQ ");

scanf("%s", &frd[NO - k + m].QQ);

printf("\n\t\t 输入联系人的手机号码");

scanf("%s", &frd[NO - k + m].tel);

if (strlen(frd[NO - k + m].tel) == 11)

{

printf("输入的电话号码合法");

}

else

{

printf("请重新输入11位合法的数字");

scanf("%s", &frd[NO - k + m].tel);

}

m++;

save();

printf(" 是否继续添加新联系人(y/n): ");

if (getch() == 'y')

{

newrecord();

}

}

void shanchuname() //对联系人信息进行全部的删除{

int i,j;

char name[14];

printf("\n\t\t 输入联系人的姓名");

fflush(stdin);

scanf("%s", name);

for (i = 0; i < NO-k+m; i++)

{

if (strcmp(name, frd[i].name) == 0)

{

printf("%8s%14s%7s%14s%10s%12s\n", frd[i].name, frd[i].addr,

frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);

printf("\n\n\t 是否删除该联系人的所有信息(y/n):");

if (getch() == 'y')

{

for (j = i; j

{

frd[j] = frd[j + 1];

}

k++;

printf("\n\t已经删除了该联系人");

save();

printf("\n\t是否继续删除联系人(y/n):");

if (getch() == 'y')

{

shanchuname();

}

}

menu();

}

}

printf("\n\n\t通讯录中不存在该联系人");

}

void chazhaoname() //查找通讯录里的联系人

{

int i;

char name[14];

printf("\n\t 输入联系人的姓名");

fflush(stdin);

scanf("%s",name);

for (i = 0; i < NO-k+m; i++)

{

if (strcmp(name, frd[i].name) == 0)

{

printf("%8s %14s %7s %14s %10s %11s \n", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);

menu();

}

}

}

void xiugai() //对联系人的部分信息进行修改

{

int i, a; char name[14];

printf("\n\n\t 输入联系人的姓名");

fflush(stdin);

scanf("%s", name);

for (i = 0; i < NO-k+m; i++)

{

if (strcmp(name, frd[i].name) == 0)

{

printf("%8s%14s%7s%14s%10s%13s\n", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);

printf("\n\n\t 是否确定修改该联系人(y/n):");

if (getch() == 'y')

{

printf("\n\n\t************************************************");

printf("\n \t [1]姓名[2]地址[3]邮编");

printf("\n \t [4]邮箱[5]QQ [6]手机号码[7]返回");

printf("\n\n\t************************************************\n");

printf("\n\t请输入序号");

scanf("%d", &a);

switch (a)

{

case 1: printf("姓名:"); scanf("%s", frd[i].name); break;

case 2: printf("地址:"); scanf("%s", frd[i].addr); break;

case 3: printf("邮编:"); scanf("%s", frd[i].pc); break;

case 4: printf("邮箱:"); scanf("%s", frd[i].e_mail); break;

case 5: printf("Q Q:"); scanf("%s", frd[i].QQ); break;

case 6: printf("11位手机号码:"); scanf("%s", frd[i].tel); break;

case 7:menu();

default:

xiugai();

}

printf("\n\t\t您的修改结果为:");

printf("\n\t姓名:%s", frd[i].name);

printf("\n\t地址:%s", frd[i].addr);

printf("\n\t邮编:%s", frd[i].pc);

printf("\n\t邮箱:%s", frd[i].e_mail);

printf("\n\tQ Q:%s", frd[i].QQ);

printf("\n\t手机号码:%12s", frd[i].tel);

save();

return;

}

else

{

menu();

}

}

}

printf(" \n \n");

}

void paixu() //对联系人进行按字母进行排序

{

struct friends fr[500];

struct friends t;

int i, j;

for (i = 0; i

fr[i] = frd[i];

for (i = 0; i

{

for (j = 1; j

{

if (strcmp(fr[i].name, fr[j].name) > 0)

{

t = fr[i];

fr[i] = fr[j];

fr[j] = t;

}

}

}

printf("\n\n 姓名地址邮编e_mail

QQ 手机号\n");

for (i = 0; i

{

printf("%8s%20s%7s%14s%10s%12s\n", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);

}

Save();

}

本程序中大量使用了结构体和结构体数组,系统的功能模块都是使用子函数完成的,子函数中也存在大量结构体数组。

5.调试分析过程描述

1.软件进入界面后按任意键进入主菜单:

2.在软件后面按[4]导入和显示所有的联系人。

3在菜单栏接着按[3]查找通讯录里的任意联系人。

4在菜单栏接着按[5]进行联系人的姓名地址邮编邮箱QQ号手机号码的修改。

5.在菜单栏中选择[2]进行单个联系人删除。

6.在菜单栏中选择[6]进行对所有的联系人进行排序。

7.退出通讯录。

6.课程设计总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. C语言已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为计算机专业的大学来说掌握C语言程序的开发技术是十分重要的。通过这次编程实践,巩固了c语言的知识,对c语言的内容有了进一步的了解,增强了动手能力,感受到了c语言的奥妙,找到了学习编程的乐趣。同时在编程过程中,也发现了自身学习态度的问题。由于课后又没及时时间去复习,造成了许多知识的缺多识不能很好的运用,编写过程面临困难。事实告诫了我:今后上课一

C语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

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、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

《C语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

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语言程序设计课程设计-通讯录管理系统

通讯录信息管理系统设计计算机学院计算机科学与技术专业 1.课程设计的目的 学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。 通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。 本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。 通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。

2.设计方案论证 2.1设计思路 建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。 2.2程序设计 2.2.1根据图1定义数据类型建立函数 typedef struct { char Num; //编号 char Name[10]; //姓名 char Tel[15]; //电话号码 char Email[20]; //邮箱 char age[8]; //年龄 char adds[20]; //住址 }Person; 2.2.2主函数及其流程图 定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序

C语言程序设计_第二阶段练习参考答案

江南大学现代远程教育第二阶段 练习题 考试科目 : 《 C 语言程序设计》 第七 章至第九章 学习中心(教学点) 批次: 专业: 学号: 姓名: 、单项选择题 (本题共 20 小题,每小题 2分,共 40 分。 1、有以下程序 main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i];i++;} printf("%d\n",k); } 执行后输出结果是( 静态( static )类别变量的生存期贯穿于整个程序的运行期间 函数的形参都属于全局变量 #define N main() { int i; 4、有如下程序 voi d f(int x,int y) 总分 100 分) 层次: 身份证号: 得分: A 、 58 B 、 56 、45 、24 2、 )。 A 、 以下叙述中正确的是( 全局变量的作用域一定比局部变量的作用)。 B 、 D 、 未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值 3、 程序如下: #define M1 N*3 #define M2 N*2 i=M1+M2; printf( “%d n ”,i); } 程序编译后运行的输出结 果是( )。 A 、 10 B 、20 C 、25 D 、 30

{ int t; if(x

C语言程序的设计习题参考答案(第二版_杜友福)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (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语言程序设计作业2答案

第2次作业答案 一、单项选择题答案 1B 2B 3D 4C 5B 6B 7D 8D 9B 10C 11C 12B 13A 14C 15B 16B 17D 18A 19D 20B 一.单项选择题 1.若有以下定义:int a[]={3, 4, 5, 6, 7, 8, 9, 10, 11}, *p=a; 则值为5的表达式是()。 A)p+=5, *(p+1) B)p+=1, * ++p C)p+=4, *p++ D)p+=1, ++ *p 2.下面函数调用语句含有实参的个数为() fun( ( a, b, c, d ), ( m, n ), (f, g ) ); A)1 B)3 C)4 D)2 3.函数形式正确的是()。 A) double myfun( int x, int y) B) int myfun( int x, y) { m=x+y; return m; } { int m; } C) int myfun( int x, int y) D) int myfun( int x, int y) { int x, y; double m; { int m; m=x+y; return m; } m=x+y; return m; } 4.不正确的字符串赋值或赋初值方式是()。 A)char *str; str=”string”; B)char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’} C) char str[10]; str=”string”; D)char str[]=”string”; str2[]=””; strcpy(str2, str1); 5.以下程序的输出结果是()。 #include main() { char str[]="SSSWLIA", c; int k; for (k=2; (c=str[k])!='\0'; k++) { switch (c) { case 'I': ++k; break; case 'L': continue; default: putchar(c); continue; } } putchar('*'); } A)SSW* B)SW* C)SW*A D)SW 6.以下程序的输出结果是()。 #include int w=3; fun( int k) { if ( k==0) return w; return ( fun(k -1 )*k); }

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计学生通讯录管理系统

C语言程序设计学生通讯录管理系统 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

#define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add();

int listbyname(); int dele(); int save(); int exit(); void main() { system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() {

char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\n"); printf("\t\t 1. 显示记录 \n"); printf("\t\t 2. 按姓名查找\n"); printf("\t\t 3. 插入记录 \n"); printf("\t\t 4. 删除记录\n"); printf("\t\t 5. 记录保存文件\n"); printf("\t\t 6. Quit\n"); printf("\t\t***********************************************\n"); do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; } adduser()

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语言程序设计报告书

一、实践的目的和要求 加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力. 二、内容 在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等); 运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等. 三、实验任务:通讯录 设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针 功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等. 四、设计思路 1.通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编. 2.用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函 数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信 息,用Data_Alter 函数来修改信息,用Data_Delete函数来删除信息,用Data_Save 函数来保存信息,用Exit函数来退出通讯录. 3.小组分工,每个人分配几个函数,按情况进行分配任务. 五、程序代码 #include/*字符函数和字符串函数*/ #include/*字符模式函数(调用getch()函数)*/ #include/*输入输出函数*/ int i; struct friend/*电子通讯录结构定义*/ { char num[5]; /*编号*/ char name[11]; /*名字*/ char sex[2]; /*性别*/ char phone[12]; /*电话*/ char address[26]; /*地址*/ char post_num[11]; /*邮编*/ }friends[50]; FILE *fp; void Data_load() /*数据载入函数*/ {int j; fp=fopen("friend.txt","r+"); /*打开文件friend.txt*/

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计习题参考答案!(第二版--杜友福)

C语言程序设计习题参考答案!(第二版--杜友福)

C语言程序设计习题答案 习题一 C语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1(3)机器语言P1(4)汇编程序P2 (5)高级语言P2(6)编译程序P3(7)解释程序P3(8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S流程图最大的区别是什么?

答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 输入三个数给a,b,c 如果a

4. 求1×2×3×…×10的值。 5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 Y 3X (X<1) 输入一个数给x X<=1 Yes no

《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

相关文档
相关文档 最新文档