当前位置:文档之家› c语言编写的词法分析程序教学教材

c语言编写的词法分析程序教学教材

c语言编写的词法分析程序教学教材
c语言编写的词法分析程序教学教材

c语言编写的词法分

析程序

#include

#include

#include

#include

#define SPACE 0x20 //空格键

#define CHANGE 'c' //转义字符

#define STRING 'S' //引号里的字符串

#define BOUNDARY 'B' //界符

#define OPERATION 'O' //运算符

#define WORD 'I' //标识符

#define KEY_WORD 'K' //关键字

#define DIGIT 'n' //数字,包括小数

#define DOTH 'd' //头文件,“.h”文件

#define INT 't'

#define VOID 'v'

#define IF 'f'

#define ELSE 'e'

#define WHILE 'w'

#define FOR 'r'

#define MAIN 'm'

#define PRINTF 'p'

#define INCLUDE 'u'

#define FLOAT 'l'

#define KEYNUM 10

#define BOUNDNUM 8

#define OPERNUM 7

#define VALUENUM 100

/******************************************************************** ****/

/* data type */

/******************************************************************** ****/

struct bianliang

{

int id;

char name[20];

int value;

};

struct changliang

{

int data;

};

char

KeyWord[KEYNUM][8]={"int","void","if","else","while","for","main","printf","incl ude","float"};

char Boundary[BOUNDNUM]={'"',';',',','(',')','#','{','}'};

char Operation[OPERNUM]={'+','-','*','/','=','<','>'};

char

Logogram[KEYNUM]={INT,VOID,IF,ELSE,WHILE,FOR,MAIN,PRINTF,INCLU DE,FLOAT};

char Value[VALUENUM][8];

int Value_n=0;

int ErrorLine=0;

int QuotationCount=0; //计算引号的数量

int QuotationFlag=0; //引号数量为奇数时为1,偶数时为0

char LastOpera=0; //用于判断"=="号存前一个"="号

/******************************************************************** ****/

/* function describe */

/******************************************************************** ****/

int isKeyWord(char* s) //是关键字返回1,否则返回0

{

int i;

for (i=0;i

{

if (strcmp(KeyWord[i],s)==0)

{

return i+1;

}

}

return 0;

}

int isBoundary(char ch) //是界符{

int i;

for (i=0;i

{

if (Boundary[i]==ch)

{

return i+1;

}

}

return 0;

}

int isOperation(char ch) //是运算符{

int i;

for (i=0;i

{

if (Operation[i]==ch)

{

return i+1;

}

}

return 0;

}

int isDigit(char *s) //是数字

{

int i,l=strlen(s);

for (i=0;i

{

if (!isdigit(s[i]))

{

break;

}

}

if (i>=l)

return 1;

}

else

{

if ('.'==s[i])

{

i++;

for (;i

{

if (!isdigit(s[i]))

{

break;

}

}

}

else

{

return 0;

}

if (i>=l)

return 1;

else

return 0;

}

}

int isDotH(char *s) //是头文件{

int i,l=strlen(s);

for (i=0;i

{

if (!isalpha(s[i]))

{

break;

}

}

if (i>=l)

{

return 0;

}

else

if ('.'==s[i])

{

i++;

if(s[i]=='h')

return 1;

else

return 0;

}

else

return 0;

}

}

int isWord(char *s) //是标识符

{

int i=0,l=strlen(s);

if (isalpha(s[i]))

{

i++;

for (;i

{

if (!isalnum(s[i]))

{

break;

}

}

}

if (i>=l)

{

return 1;

}

else

return 0;

}

void isWhat(int *i,char *str,FILE *fileOutput,FILE *fileOutput2) //判断字符串,并把相应类型存入文件

{

int n;

struct bianliang temp;

struct changliang t;

FILE *file=fopen("num.txt","ab");

if(1!=*i)

{

str[--(*i)]='\0';

if(n=isKeyWord(str))

{

fputs(str,fileOutput);

fputc('\t',fileOutput);

fputc(KEY_WORD,fileOutput);

fputc('\t',fileOutput);

if(isKeyWord(str)>9)

fputc(isKeyWord(str)+'a'-10,fileOutput);

else

fputc(isKeyWord(str)+'0',fileOutput);

fputc('\t',fileOutput);

fputc(Logogram[n-1],fileOutput);

fputc('\n',fileOutput);

}

else if(isWord(str))

{

fputs(str,fileOutput);

fputc('\t',fileOutput);

fputc(WORD,fileOutput);

fputc('\t',fileOutput);

for(n=0;n

{

if(0==strcmp(Value[n],str))

break;

}

if(n==Value_n)

{

n=++Value_n;

strcpy(Value[n-1],str);

temp.id=n-1;

strcpy(https://www.doczj.com/doc/3c9055830.html,,str);

temp.value=0;

fwrite(&temp,sizeof(struct bianliang),1,fileOutput2); fputc('0'+n,fileOutput);

}

else

{

fputc('0'+n+1,fileOutput);

}

fputc('\t',fileOutput);

fputc('i',fileOutput);

fputc('\n',fileOutput);

}

else if (isDotH(str))

{

fputs(str,fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc(DOTH,fileOutput);

fputc('\n',fileOutput);

}

else if (isDigit(str))

{

fputs(str,fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc(DIGIT,fileOutput);

fputc('\n',fileOutput);

t.data=atoi(str);

fwrite(&t,sizeof(struct changliang),1,file); }

(*i)=0;

}

fclose(file);

}

void writeMessage(FILE *f)

{

fputs("字符\t类型\t附加值\t缩写\n",f); }

void error()

{

printf("%d line error!\n",ErrorLine);

exit(1);

}

/******************************************************************** ****/

/* main */

/******************************************************************** ****/

void main()

{

FILE*fileInput;

FILE*fileOutput;

FILE*fileOutput2;

char ch,qtemp;

char str[20];

int i;

int flag=0;

fileInput=fopen("1.cpp","r");

fileOutput=fopen("object.txt","w");

fileOutput2=fopen("variable.txt","w");

writeMessage(fileOutput);

if (NULL!=fileInput)

{

i=0;

do

{

ch=fgetc(fileInput);

str[i++]=ch;

if(isBoundary(ch))

{

if(1==isBoundary(ch))

{

QuotationCount++;

if (0==QuotationCount%2)

{

QuotationFlag=0;

}

else

QuotationFlag=1;

}

isWhat(&i,str,fileOutput,fileOutput2);

fputc(ch,fileOutput);

fputc('B',fileOutput);

fputc('\t',fileOutput);

if(isBoundary(ch)>9)

fputc(isBoundary(ch)+'a'-10,fileOutput);

else

fputc(isBoundary(ch)+'0',fileOutput);

fputc('\t',fileOutput);

fputc(Boundary[isBoundary(ch)-1],fileOutput); fputc('\n',fileOutput);

i=0;

}

else if(isOperation(ch))

{

if(0==QuotationCount%2)

{

isWhat(&i,str,fileOutput,fileOutput2);

if ('='==ch)

{

qtemp=fgetc(fileInput);

if ('='==qtemp)

{

fputc('=',fileOutput);

fputc('=',fileOutput);

flag=1;

}

else

{

fputc('=',fileOutput);

fseek(fileInput,-1,SEEK_CUR);

flag=0;

}

}

else

fputc(ch,fileOutput);

fputc('\t',fileOutput);

fputc(OPERATION,fileOutput);

fputc('\t',fileOutput);

if(isOperation(ch)>9)

fputc(isOperation(ch)+'a'-10,fileOutput);

else

fputc(isOperation(ch)+'0',fileOutput);

if (flag)

{

fputc('q',fileOutput);

}

else

fputc(Operation[isOperation(ch)-1],fileOutput); fputc('\n',fileOutput);

i=0;

}

else

{

fputc(ch,fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('c',fileOutput);

fputc('\n',fileOutput);

i=0;

}

}

else if('\n'==ch)

{

isWhat(&i,str,fileOutput,fileOutput2);

ErrorLine++;

i=0;

}

else if(SPACE==ch||'\t'==ch)

{

if(1

isWhat(&i,str,fileOutput,fileOutput2);

else

i=0;

}

else if ('\\'==ch)

{

if (1==QuotationFlag)

{

if (1!=i)

str[--i]='\0';

fputs(str,fileOutput);

fputc('\t',fileOutput);

fputc(STRING,fileOutput); fputc('\n',fileOutput);

i=0;

}

ch=fgetc(fileInput);

if ('t'==ch)

{

fputc('\\',fileOutput);

fputc('t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc(CHANGE,fileOutput); fputc('\n',fileOutput);

i=0;

}

else if('b'==ch)

{

fputc('\\',fileOutput);

fputc('b',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc(CHANGE,fileOutput); fputc('\n',fileOutput);

i=0;

}

else if ('n'==ch)

{

fputc('\\',fileOutput);

fputc('b',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc('\t',fileOutput);

fputc(CHANGE,fileOutput); fputc('\n',fileOutput);

i=0;

}

else error();

}

else if (1==QuotationFlag)

{

continue;

}

else if (isalnum(ch)||ch=='.')

{

}

else if (EOF!=ch)

{

error();

}

}while(EOF!=ch);

printf("词法分析完毕\n");

fclose(fileInput);

}

fclose(fileOutput);

fclose(fileOutput2);

}

/****************************************************/ /* 1.cpp 例子文件*/

#include

void main ( )

{

int i;

int j;

int m;

m=1;

for(i=0;i<5;i=i+1)

{

printf("\t",i);

for(j=0;j

{

printf("\b",i);

}

for(j=0;j

printf("*",i);

}

printf("\n",i);

m=m+2;

}

}

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

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

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

c语言程序实践学习个人心得

c语言程序实践学习个人心得 本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意! 如果您还因不懂得写实习心得体会而烦恼,其实不用太过烦恼。XX为今天为整理了一篇c语言程序实践学习个人心得,供您阅读参考,希望对您在未来写实习心得体会有所帮助。 在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线

性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。 学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: 1.加深对课堂讲授内容的理解 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必

c语言程序设计实践教程答案完整版

4.2练习题 一、选择题 1.D 2.B 3.A 4.B和D 5.C 6.A 7.B 二、填空题 1.//或/* */ 2.主或main 3.函数首部和函数体4.编译和连接 5.分号 5.2练习题 一、选择题 1.A 2.D 3.B 4.B 5.C 6.C 7.D 8.A 9.B 10.B 11.D 12.B 13.A或B 14.C 15.B

17.D 18.D 19.C 20.D 21.B 22.A 23.D 24.C 25.C 26.B 27.C 28.D 29.A 30.B 二、填空题 1.102,10 2.#define 宏名字符串 3.1 4.n=1 5.-4 6.a=1,b= ,c=2 7.c=A 8.n1=%d\nn2=%d 9.a+b>c&&a+c>b&&b+c>a 10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.7 12.0 13.8,4 6.2练习题 一、选择题 1.A 2.C 3.D 4.C 5.A 6.B

8.D 9.B 10.C 11.A 12.A 13.C 14.B 15.正确答案为: 二、填空题 1.10 2.y=1 x%i==0 3.屏幕中间输出一个由星号组成的菱形4.1 5.13 6.(cx=getchar())!=-1 front=cx; 7.m%n 8.4 9.*p px=&x py=&y 三、读程序,写结果 1.-1 2.3,1,-1, 3.a=16,y=60 4.x=12,y=4 5.59 7.2练习题 一、选择题 1.B 2.C 3.C 4.A 5.D 6.C 7.D

(完整版)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语言程序设计教程第一章练习题题目

单选题 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语言实习报告

实习报告 实习性质: C语言课程实习 学生姓名:谢辉 专业班级:信安141 指导教师:郑晓蓉、杨娟 实习时间:2014年12月22日- 2014年12月26日 实习地点:1203 重庆工程职业技术学院 学生实习考核表 三号黑体行距:固定

目录 1实习目的..................................................... 2 实习概况..................................................... 2.1 实习要求 ............................................... 2.2 实习时间 ............................................... 2.3 实习环境 ............................................... 2.4 开发环境 ............................................... 3 实习内容..................................................... 3.1 系统需求分析 ........................................... 3.2 程序设计 ............................................... 3.2.1程序的初始界面..................................... 3.2.2成绩的输入......................................... 3.2.3成绩的查询......................................... 3.2.4各科成绩的排序..................................... 3.4.5总成绩排序.........................................

C语言程序设计教程课后习题答案

第1章 1-3 CAB 4 .c .obj .exe 5 /* */ 6 ; 7 算法 8 ①中级语言:C语言具有高级语言的先进思想又能直接对存储器进行操作,能进行位运算,能实现汇编语言的大部分功能,生成目标代码质量高,程序执行效率高。 ②结构化语言:C语言用函数作为程序模块,以实现程序的模块化,语言简洁、紧凑,具有结构化的特点。 ③可移植性好:C语言不包含依赖硬件的输入输出机制,使C语言本身不依赖于硬件系统,可移植性好。 9 #include main( ) { ; } 10 #include “stdio.h” main() { printf(“This is my first C Program!”); } 第2章 1.yes 2.-3 3.2,1 4.1)a!=b||a<=c 2)x>=4||x<=-4 5.x>20&&x<30||x<-100 6.#include main() { int x; printf(“please input an integar:”); scanf("%d",&x); if(x%5==0&&x%7==0) printf("yes\n"); else printf("no\n"); } 7. #include main() { int year,month; printf("please input the year and month:"); scanf("%d%d",&year,&month);

switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("this month have 31 days."); break; case 4: case 6: case 9: case 11:printf("this month have 30 days."); break; case 2:if(year%4==0&&year%100!=0||year%400==0) { printf("this month have 29 days."); break; } else { printf("this month have 28 days."); break; } } } 8. #include main() { float money; int year; printf("\nplease input the money and the year:"); scanf("%f%d",&money,&year); if(year==1) money+=money*0.00315*12*year; if(year==2) money+=money*0.00330*12*year; if(year==3||year==4) money+=money*0.00345*12*year; if(year>=5&&year<=7) money+=money*0.00375*12*year; if(year>=8) money+=money*0.00420*12*year; printf("the money is:%f",money); } 第3章

C语言程序设计实习报告

手机通讯录管理系统一、设计题目的任务和内容 任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。 具体要求: ◆建立通讯录信息,信息包含、姓名、分类(1、办公类2、个人类3、商务类)、电话、 电子邮箱等; ◆将通讯录保存在文件中; ◆查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出 此类所有数据中的姓名和电话号码。 ◆增加功能:能录入新数据。当录入重复姓名和电话号码时,则提示数据录入重复并取消 录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 ◆修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 ◆删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编 号。 系统功能需求分析: 查询:查询通讯录记录 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 修改:修改通讯录记录

二、总体设计思路 本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 系统功能模块图: 输入新信息:可输入新的数据。 添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。 删除:输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可按1、办公类2、个人类3、商务类分类查询 修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。 下面就是总的程序流程图:

C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 2.设函数Fun()的定义形式为: void Fun(char ch, float x){} 则以下对函数Fun()的调用语句中,正确的是。 A)Fun("abc", ; B)t = Fun('D', ; C)Fun('65', ; D)Fun(32, 32); 解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\ */ #include <> /* 标准输入/输出头文件*/ int f1(int x, int y) { return x > y x : y; } int f2(int x, int y) { return x > y y : x; } int main(void) /* 主函数main() */ { int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/ e = f2(f1(a, b), f1(c, d)); f = f1(f2(a, b), f2(c, d));/* 调用函数*/ g = a + b + c + d - e - f; /* 算术运算*/ printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */ return 0; /* 返回值0, 返回操作系统*/ } 程序运行后的输出结果是。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4; f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3; g=a+b+c+d-e-f=4+3+5+2-4-3=7。 答案:A

C语言程序设计实践

C语言程序设计实践 题目:哈夫曼编码与费诺编码姓名:苏斌斌 学号: 班级:通信工程170x 兰州交通大学 电子与信息工程学院 通信工程系 2018 年 6 月25 日

哈夫曼编码与费诺编码

兰州交通大学C语言课程设计实践 《C语言程序设计实践》评分表

哈夫曼编码与费诺编码 目录 1、哈夫曼编码 (1) (1)需求分析 (1) (2)概要设计 (1) (3)详细设计 (2) (4)程序代码 (5) (5)调试分析 (11) (6)用户使用说明 (11) (7)测试结果 (13) (8)参考文献 (14) 2、费诺编码 (15) (1)需求分析 (15) (2)概要设计 (15) (3)详细设计 (15) (4)程序代码 (19) (5)调试分析 (22) (6)用户使用说明 (23) (7)测试结果 (23) (8)参考文献 (23)

兰州交通大学C语言课程设计实践 1、哈夫曼编码 (1)需求分析 程序设计任务: 设计一个哈夫曼编码压缩与解压缩程序,对一个ASCII编码的文本文件中的字符进行哈夫曼编码,生成编码文件,反过来,可将编码文件译码还原为文本文件。 程序相关规定: 输入的形式:整型和字符型; 输入值的范围:MAXBIT 100 MAXV ALUE 10000; 输出的形式:二进制编码形式输出; 程序所能达到的功能:实现对一个ASCII编码的文本文件字符进行哈夫曼编码以及将编码文件译码还原为文本文件。 (2)概要设计 模块设计 本程序包含三个模块:主程序模块,哈夫曼编码模块,,选择模块,其调用关系如下图所示: 图1.2.1模块调用关系 图1.2.2哈夫曼编码(译码)模块设计

C语言程序设计实践指导书5

C语言程序设计实践上机指导书(试用版) 沈阳工程学院信息学院

实践成绩评价说明 1)上机前充分准备实践材料,对上机内容有程序草稿。(10分) 2)独立完成实践任务,对实践过程非常清晰。(30分) 3)认真理解知识点,能够与理论知识相结合。(10分) 4)在机房遵守上机守则,接受实践指导教师的监督与管理。(20分) 5)认真填写实践指导书,写出实践小结。(10分) 6)在实践中具备一定的创新思想,能够主动与指导教师探讨。(5分) 7)加大实践工作量,主动完成实践指导书中的选做题目。(5分) 8)掌握程序调试的方法,认真完成程序调试工作,使程序能够运行(10分)。

{ if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } printf("\n由小到大的排序为: "); for(i=0;i<10;i++) printf("%5d",a[i]); return 0; } (2)运行截图 (3)结果分析:程序运行正确,程序运行两次结果相同。 第二题 (1)代码 #include #include int main() { int a[7][8],i,j,x,y,max;

for(i=0;i<7;i++) for(j=0;j<8;j++) { a[i][j]=rand()%100; printf("%5d",a[i][j]); } printf("\n"); max=a[0][0]; for(i=0;i<7;i++) for(j=0;j<8;j++) if(a[i][j]>max) { max=a[i][j]; x=i; y=j; } printf("\nmax=%d\n行号:%d\n列号:%d",max,x,y); return 0; } (2)运行截图: (3)结果分析:运行正确。 第三题 (1)代码: #include #include int main() { char chmax[80],ch[80]; chmax[0]='\0'; do

c语言程序设计实践报告

中南大学 C语言程序设计实践报告 题目通讯录程序设计 学生姓名 指导教师 学院 专业班级 完成时间

一、任务描述 通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。 实现功能:(1)系统以菜单方式工作 (2)信息录入功能 (3)信息浏览功能 (4)信息查询功能 (5)信息修改功能 (6)系统退出功能 二、算法描述 设计一个实用的的小型通讯录程序必须具备系统以菜单方式工作、信息录入、信息浏览、信息查询、信息修改、系统退出功能,那么就需要这样的函数来实现。因此,我需要自定义这样的函数来解决问题,当然还会调用库函数。在定义函数的过程中会用到选择结构、循环结构等基本语句,以及对结构体数组的定义等。 三、程序设计 /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*标准库函数*/ #include "string.h"/*字符串函数*/ #include "ctype.h" /*字符操作函数*/ #define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/ { char NAME[20]; /*姓名*/ char EMAIL[30]; /*邮箱*/

char TELE1[10]; /*电话*/ char TELE2[10]; /*电话*/ char HOMETOWN[30]; /*籍贯*/ }DATA; /******以下是函数原型*******/ int enter(DATA t[]); /*输入记录*/ int add(DATA t[],int n); /*添加记录*/ int change(DATA t[],int n); /*修改记录*/ int deleter(DATA t[],int n); /*删除记录*/ void list(DATA t[],int n); /*显示记录*/ void search(DATA t[],int n); /*按姓名查找显示记录*/ void qseek(DATA t[],int n); /*快速查找记录*/ void print(DATA temp); /*显示单条记录*/ int find(DATA t[],int n,char *s) ; /*查找函数*/ int menu_select(); /*主菜单函数*/ /******主函数开始*******/ main() { int i; DATA d[M]; /*定义结构体数组*/ int length; /*保存记录长度*/ system("cls"); for(;;)/*无限循环*/ { switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ { case 1:length=enter(d);break;/*输入记录*/ case 2:length=add(d,length); break; /*添加记录*/ case 3:length=deleter(d,length);break; /*删除记录*/ case 4:list(d,length);break; /*显示全部记录*/

《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案 祝胜林主编 华南理工大学出版社 【习题1】 (1) 【习题2】 (2) 【习题3】 (3) 【习题4】 (5) 【习题5】 (8) 【习题6】 (11) 【习题7】 (14) 【习题8】 (16) 【习题9】 (16) 【习题10】 (18)

一、简答题(在课本中寻找答案,略) 1.1C程序的基本结构包括哪些内容? 1.2如何定义标识符? 1.3输入格式、输出格式的组成包括哪些内容? 1.4C语言函数分为哪两类? 1.5计算表达式的值应该考虑哪些方面? 1.6上机调试程序的步骤如何? 二、判断并改错 1.7C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 错误:main函数可以放在程序的任何位置。并不限定在程序的开头。 1.8定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 错误:不可以交叉出现,数据说明部分在执行语句部分的前面。 1.9编辑与编译不是一回事。 错误:不是一回事。编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。 1.10scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。 正确 1.11注释内容太多会影响程序的执行效率。 错误:不会影响程序的执行效率。因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。 1.12所有的数学公式可以直接出现在源程序中。 错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。 三、编程题 1.13在屏幕上输出自己名字的拼音。 提示:中文名字叫?张三?,对应的拼音为?Zhang San?,输出用printf()函数。 1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。 提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f 1.15输入两个整数,输出其中最大者。 提示:模仿例1.3 1.16 输入三个整数,输出其中最小者。 提示: min(min(a,b),c);

高等教育出版社出版社c语言程序设计实践教程习题参考答案

附录习题参考答案1 高等教育出版社出版社 C语言实践教程习题 参考答案 4.2 练习题p58-59 一、选择题 1~5.DBADC 6~10. AB 二、填空题 1./* */ 或// 2.主函数或mian() 3.函数的首部和函数体4.编译和连接5.; 6.传统流程图和N-S图 5.2 练习题p64-70 一、选择题 1~5.ADBBC 6~10.CDABB 11~15.DBBCB 16~20.BDDCD 21~25.BADCC 26~30 BCDAB 二、填空题 1.102,10 2.#define 符号常量常量3.x>20&&x<30||x<-100 4.1 5.n=1 6.-4 7.a=1,b= ,c=2 8.c=A 9. n1=%d\nn2=%d\n 10.(1)a+b>c&&a+c>b&&b+c>a (2)ch>='a'&&ch<='z'||ch>='A'&&ch<='Z' 11.7 12.0 13.1111 0000 14.8,4 6.2 练习题p76-84 一、选择题 1~5.ACDCA 6~10.BADBC 11~15.AACBC 二、填空题 1.10 2.y=1 x%i= =0 3. * * * * * * * * * * * * * * * * * * * * * * * * * 4.1 5.13 6.. (cx=getchar( ))!=-1 front=cx; 7.m%n 8.4 9.(1)*p (2)px=&x (3)py=&y 三、读程序,写结果 1.-1 2.3,1,-1 3.a=16,y=60 4.x=12,y=4 5.59 四、程序设计题 1.#include void main() {float a,b,c,min; scanf("%f,%f,%f",&a,&b,&c); min=a; if (min>b) min=b; if (min>c) min=c; printf("%f",min); } 2.方法1: #include void main() {int a,b,c; for (a=1;a<=9;a++) for (b=0;b<=9;b++) for (c=0;c<=9;c++) if ((a*a*a+b*b*b+c*c*c)==1099) printf("%d%d%d\n",a,b,c); }

C语言程序设计基础教程习题答案

习题答案 第1章 1.1 填空题 1.1.1 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main 。 1.1.2 一个函数由__函数头__和__函数体__两部分组成。 1.1.3 在C语言中,输入操作是由库函数__scanf 完成的,输出操作是由库函数_printf_完 成的。 1.1.4 通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展 名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。 1.1.5 C语言程序的基本单位或者模块是__函数__。 1.1.6 C语言程序的语句结束符是_;___。 1.1.7 编写一个C程序,上机运行要经过的步骤:______________________________。 1.1.8 在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。 1.1.9 C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。 且第一个字符必须为字母或下划线。 1.1.10 C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。 1.2 选择题 1.2.1 一个C程序的执行是从( A )。 A)本程序的main函数开始,到main函数结束 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 1.2.2 以下叙述不正确的是(C)。 A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C) 在C程序中,注释说明只能位于一条语句的后面 D) C程序的基本组成单位是函数 1.2.3 C语言规定:在一个源程序中,main函数的位置( C )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 1.2.4 C编译程序是(A)。 A)将C源程序编译成目标程序的程序 B)一组机器语言指令 C) 将C源程序编译成应用软件 D) C程序的机器语言版本 1.2.5 要把高级语言编写的源程序转换为目标程序,需要使用(D)。 A) 编辑程序B) 驱动程序C) 诊断程序D) 编译程序 1.2.6 以下叙述中正确的是(C)。 A) C语言比其他语言高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C语言出现的最晚,具有其他语言的一切优点 1.2.7 以下叙述中正确的是(A)。 A) C程序中注释部分可以出现在程序中任意合适的地方 B) 花括号“{”和“}”只能作为函数体的定界符 C) 构成C程序的基本单位是函数,所有函数名都可以由用户命名 D) 分号是C语句之间的分隔符,不是语句的一部分 1.2.8 以下叙述中正确的是(B)。

c语言实践报告心得

c语言实践报告心得 引导语:参加完C语言的实训后,怎样写一篇实践报告?接下来是小编给大家收集整理的文章,欢迎阅读! c语言实践报告心得(一) 在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为期一周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。 在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功, 让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。 还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人

的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲 课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。 通过这次实训,也使我们发现了许多问题。 在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错 误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。 还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。 首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻 炼自己结局问题的能力和与同学合作的能力。 总之,这一切都成为我记忆里面的一个篇章,更是在C语言编程上的一个里程碑。 c语言实践报告心得(二) 在科技高度发展的今天,计算机在人们之中的作用越来越突出。 而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。

C语言程序的设计实训报告

C语言程序设计实训报告 班级:姓名:学号: 实训目的能力目标 全面熟悉、掌握C语言基本知识,掌握C程序设计中数组、函数、指针的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。 实训要求: (1)掌握C语言中的基本数据输入、输出; (2)熟练使用C语言中的数组; (3)熟练使用C语言中的函数; (4)熟练使用C语言中的指针; (5)熟练使用C语言中的结构体。 实训内容(过程及步骤) 设计题目:简单计算器 1、基本思路: 先自定义好加、减、乘、除、求余、求周长、求面积等函数。在写主函数调用前面的自定义函数,进行计算,选择好计算种类,输入2个数回车进行计算得到结果。

2、程序: #include "stdio.h" #include "math.h" void sum() { float a[2]; printf("您选择了加法\n"); printf("请输入:\n"); scanf("%f",&a[0]); scanf("%f",&a[1]); printf("%g+%g=%g\n",a[0],a[1],a[0]+a[1]); } void jianfa() { float a[2]; printf("您选择了减法\n"); printf("请输入:\n"); scanf("%f",&a[0]); scanf("%f",&a[1]); printf("%g-%g=%g\n",a[0],a[1],a[0]-a[1]); } void cheng() { float a[2]; printf("您选择了乘法\n"); printf("请输入:\n"); scanf("%f",&a[0]); scanf("%f",&a[1]); printf("%g*%g=%g\n",a[0],a[1],a[0]*a[1]); } void chu() { float a[2]; printf("您选择了除法\n"); printf("请输入:\n"); scanf("%f",&a[0]); scanf("%f",&a[1]);

2020年C语言程序设计实践报告

c 语言程序设计实践报告 一实验名称 计算出1000以内10个最大素数之和 二、实验目的 1、熟练掌握if、if…else、if…elseif 语句和witch语句格式及使用方法,掌握if 语句中的嵌套关系和匹配原则,利用if 语句和switch 语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3 、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 三、实验内容 计算并输出1 000以内最大的10个素数以及它们的和。 四、要求: 在程序内部加必要的注释。由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1 000以内的素数超过1 0个,但是要对1 000以内不够10 个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10二总和值。 五、算法描述流程图 Main 函数: 判断素数:

源程序 #include #include intsushu(intn)/* 判断素数的函数*/ { intt,i; t=sqrt(n); for(i=2;i<=t;i++) if(n%i==0)/* 如果不是素数,返回0*/ return0; returnn;/* 如果是素数,返回该数*/ } voidmain() { inti,j=0,n,m=0,a[1000],x; /*clrscr();*/ printf("Pleaseinputanumberform1to1000:"); scanf("%d",&x); if(x==2)/*x=2 时的处理*/ printf("%dn",x); elseif(xv=1)/*x 在1?1000范围外时的处理*/ printf("Error!n"); else {

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