偶写的一个简单行编辑程序(我的实习题)
- 格式:doc
- 大小:54.00 KB
- 文档页数:8
编写C语言程序题及参考答案基本按照把同类题目尽量排在一起原则组织的,便于读者学习掌握编程方法和思路,提高编程能力。
【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315% 期限一年0.330% 期限二年月息利率= 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
【4.2】输入年份year和月month,求该月有多少天。
判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。
若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。
【4.3】编写一个简单计算器程序,输入格式为:data1 op data2。
其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。
【4.4】输入n值,输出如图所示矩形。
【4.5】输入n值,输出如图所示平行四边形。
【4.6】输入n值,输出如图所示高为n的等腰三角形。
【4.7】编写程序,输入三角型的三条边长,求其面积。
注意:对于不合理的边长输入要输出数据错误的提示信息。
【4.8】编写程序求出555555的约数中最大的三位数是多少。
【4.9】从键盘输入任意的字符,按下列规则进行分类计数。
第一类 '0','1','2','3','4','5','6','7','8','9'第二类 '+','-','*','/','%','='第三类其它字符当输入字符'\'时先计数,然后停止接收输入,打印计数的结果。
C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
第1章课堂实训1-1. 编写一个简单的C#程序,输出如下内容:/************************************************ How are you ! ************************************************/1-2. 参考附录A,安装Visual Stdio 2005集成开发环境。
1-3. 参考附录A,安装MSDN。
1-4.定制Visual 的集成开发环境。
习题一1-1. 选择题(1) 下面对Read()和ReadLine()方法的描述,哪些是正确的。
(A,D)A. Read()方法一次只能从输入流中读取一个字符B. 使用Read()方法读取的字符不包含回车和换行符C. ReadLine()方法读取的字符不包含回车和换行符D. 只有当用户按下回车键时,Read()和ReadLine()方法才会返回(2) 下面对Write()和WriteLine()方法的描述,哪些是正确的。
(B)A. WriteLine()方法在输出字符串的后面添加换行符B. 使用Write()方法输出字符串时,光标会位于字符串后面C.使用Write()和WriteLine()方法输出数值变量时,必须要先把数值变量转换成字符串D. 使用不带参数的WriteLine()方法时,将不会产生任何输出1-2.C#程序从哪儿开始执行?(Main()方法)1-3. 在C#程序中,using System 是必须的吗?(是)1-4.C#中有两种注释方法:_//_____适用于单行注释,/* */______适用于多行注释。
第2章课堂实训2-1.输入一个3位数的整数,编写一个程序,将它的十位数和百位数互换位置。
习题二2-1. 选择题(1) 下列标识符命名正确的是(A,D)A._int, Int, @int B. using, _using, @usingC. NO1, NO_1, NO.1D. A3, _A3,@A3(2) 下列变量的声明方式不正确的是( A,B)A. int a, string b, char c;B. int a=c=b=21;C. char a;D. string myString =”abc”;(3) 下面的标识符中,合法的是( C )A. class , publicB. 3a, _3aC. a3D. a#5(4) 设有说明语句int x=8;则下列表达式中,值为2的是(C )A. x>8?x=0:x++;B. x/= x+x;C. x %= x-2;D. x+= 2;2-2. C#的每条语句都通过___分号“;”___来结束。
C程序设计实训题目[精选合集]第一篇:C程序设计实训题目选题1、小学生测验面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;(5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”2、物业费管理系统完成小区物业费用管理系统设计。
功能要求:(1)新住户信息的添加。
(户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、平米数、每平米物业价格、应缴纳物业费,备注信息)(2)修改住户信息的功能。
(3)删除住户信息的功能。
(4)应缴物业费自动生成。
每月1号,自动生成本月份的物业费。
如果该住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费。
(5)缴费功能。
根据用户缴纳金额,修改“应缴纳物业费”。
(6)统计功能:能够按楼号分类统计所有未交清物业费的记录。
能够按拖欠款项多少,对所有用户信息进行从大到小排序。
(7)用菜单进行管理3、歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2、显示主菜单如下:1)输入选手数据2)评委打分3)成绩排序(按平均分)4)数据查询5)追加学生数据 6)写入数据文件7)退出系统。
4、文件加密文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。
编写简单的C程序(1)【实验目的】1.掌握程序的调试方法2.掌握输入函数和输出函数的使用3.能够编写简单的C顺序程序【实验内容】一、调试程序1、在VC中输入以下程序(源程序文件名取为errro2-1.c)#include <stdio.h>void main( ){int c, f;f = 100c= 5×(f - 32) / 9;printf(“华氏温度= %f, 摄氏温度= %d\n”, f, c);}以上程序中有3处错误,请改正,让程序运行出如下结果华氏温度= 100, 摄氏温度= 37错误1:f=100 应改为:f=100;错误2:c= 5×(f - 32) / 9; 应改为:c= 5*(f - 32) / 9;错误3:printf(“华氏温度= %f, 摄氏温度= %d\n”, f, c); 应改为:printf(“华氏温度= %d, 摄氏温度= %d\n”, f, c);2、在VC中输入以下程序(源程序文件名取为errro2-2.c)程序的功能是:计算某个数x的平方y,并分别以“y=x*x”和“x*x=y”的形式输出x和y的值。
假设x的值为3,正确的输出结果应为:9=3*33*3=9改正以下程序中的错误,让程序运行结果正确,请不要删除给出源程序中的任何注释。
#include <stdio.h>void main( ){int y;y=x*x;printf(“%d=%d*%d\n”,x); // 输出y=x*xprintf(“d*%d=%d\n”, y); // 输出x*x=y}错误1:变量x 没有定义。
int y; 应改为:int y ,x;错误2:没有给x 赋值。
应在y=x*x; 之前加入:scanf(“%d ”,&x);错误3:printf(“%d=%d*%d\n ”,x); 应改为:printf(“%d=%d*%d\n ”,y,x ,x); 错误4:printf(“d*%d=%d\n ”, y); 应改为:printf(“%d*%d=%d\n ”,x,x, y);二、编程题1、求摄氏温度26度所对应的华氏温度。
/*这是清华大学《数据结构题集》实习题3中的一道题--做一个简单行编辑程序,也是我的实习作业。
现已经写出来,如大家有兴趣可以看一看。
本人编程水平不高,属于初学者,如有高手看到请不要见笑。
程序在VC++6.0中调试通过,题目的具体要求:打开一个文件 o<行号><文件名><回车>行插入格式: i<行号><回车><文本><回车>行删除格式: d<行号1>[<空格><行号2>]<回车>活区切换格式: n<回车>活区显示格式: p<回车>退出编辑模式: e<回车>其中执行打开文件命令后,需要输入要打开的文件名和要输出的文件名。
如果谁对编程,网络技术有兴趣,大家可以联系我做个朋友,一起研究学习。
联系方式:E-mail:blackcat242@QQ :21739034*/#define NULL 0#define OK 0#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <conio.h>typedef struct text{char string[80];//存储每一行的元素struct text *next;//指向后一个节点的指针struct text *pre;//指向前一个节点的指针int num;//每一行元素的长度int flat;//确定此行是否被删除的标志}text;FILE *fp,*out;//fp是执行被打开的文件,out指向被写入的文件text *head;//链表的头指针int n=0,sum,delnum,xiugai=0,page=0;file://修改用来指示文件是否被修改过,如果修改过才回存盘。
page用来计算显示的file://页数.delnum用来存储被删除的字节数,sum存储一页的总字节数void byebye()//没有具体用处,只是写着玩的,在屏幕上显示一个bye{puts("\t\t\t******** * * ********");puts("\t\t\t* * * * * ");puts("\t\t\t* * * * * ");puts("\t\t\t* * * * * ");puts("\t\t\t******** * ********");puts("\t\t\t* * * * ");puts("\t\t\t* * * * ");puts("\t\t\t* * * * ");puts("\t\t\t******** * ********");}void HELP()//帮助函数,显示一些命令的格式{printf("\n\t**********************************************************\n"); printf("\t** 打开文件: o<行号><文件名><回车> **\n");printf("\t** 行插入格式: i<行号><回车><文本><回车> **\n");printf("\t** 行删除格式: d<行号1>[<空格><行号2>]<回车> **\n");printf("\t** 活区切换格式: n<回车> **\n");printf("\t** 活区显示格式: p<回车> **\n");printf("\t** 注意:在执行所有命令前必须先用o命令打开文件,并 **\n");printf("\t** 用p命令显示出来!!! **\n");printf("\t**********************************************************\n"); system("pause");printf("\n\n\n");}void ABOUT()//也是写着玩的{printf("\n\t\t*****************************************\n");printf("\t\t** 作者:BLACKCAT **\n");printf("\t\t** 单位:ZZU **\n");printf("\t\t** E-mail:blackcat242@ **\n");printf("\t\t*****************************************\n");system("pause");system("cls");printf("\n\n\n");}void Createlist()//建立一个十个节点的链表,是文本中的一页{text *p1,*p2;p1=p2=(text *)malloc(sizeof(text));head=NULL;while(n<10){n=n+1;if(n==1) head=p1;else{p2->next=p1;p1->pre=p2;p1->flat=0;}p2=p1;p1=(text *)malloc(sizeof(text));}p2->next=NULL;}void freemem()//释放链表所占的内存{text *p;for(p=head;head!=NULL;){head=p->next;free(p);p=head;}}int EDIT()//编辑函数,用来接受处理编辑命令{char cmd;do{cmd=getchar();printf("\n请输入命令(按E键退出):"); cmd=getchar();switch(cmd){case 'e':case 'E':if(xiugai==1)saveall();freemem();if(fp) fclose(fp);if(out) fclose(out);system("cls");return 0;case 'o':case 'O':Openfiles();break;case 'p':case 'P':Createlist();display();break;case 'n':case 'N':saveanddisplay(10);break;case 'd':case 'D':del();break;case 'i':case 'I':insert();break;default:printf("\n\n\n!!!输入错误!!!"); }}while(cmd!='e'&&cmd!='E');return 0;}int Openfiles()//打开文件的函数{char name[30],outname[30];puts("请输入要打开的文件名:");scanf("%s",name);if((fp=fopen(name,"r+"))==NULL){printf("打不开原文件! \n");exit(0);}puts("请输入要写入的文件名:");scanf("%s",outname);if((out=fopen(outname,"w+"))==NULL){printf("打不开目标文件!\n");exit(0);}return 0;}int display()//从文件中读入到链表中,并显示出来{int i;char conti='y';text *p;while((!feof(fp))&&(conti=='y'||conti=='Y')){page++;printf("\t\t第%d页\n",page);for(i=0,p=head,sum=0;(i<10)&&(!feof(fp));i++,p=p->next){fgets(p->string,sizeof(p->string),fp);puts(p->string);p->flat=1;p->num=strlen(p->string);sum=sum+p->num;}puts("Continue?(Y/N):");conti=getche();if(feof(fp)){puts("\n文件已经结束!");return 0;}}return 0;}int saveanddisplay(int hang)//命令n执行的函数,用来将活区的内容显示并读入下一页内容{int i,endflat=0;char conti='y';text *p=NULL;page++;for(i=0,p=head;i<hang;i++,p=p->next) file://将活区写入文件if(p->flat==1){fputs(p->string,out);p->flat=0;}if(!feof(fp))printf("\t\t第%d页\n",page);for(i=0,p=head,sum=0;(i<10)&&(!feof(fp));i++,p=p->next)//从文件读入活区if(fgets(p->string,sizeof(p->string),fp)){puts(p->string);p->flat=1;p->num=strlen(p->string);sum=sum+p->num;}if(feof(fp))printf("文件已经结束!");return 0;}int saveall()//退出编辑函数后执行的函数,将所有的内容存盘{int i,endflat=0;char conti='y';text *p;for(i=0,p=head;i<10;i++,p=p->next) file://将活区写入文件if(p->flat==1){fputs(p->string,out);p->flat=0;}while(!feof(fp))//将其余的内容写入文件fputc(fgetc(fp),out);return 0;}int del()//删除d命令对应的函数,用来删min-max中的行,用结构体中的flat表示是否被删除{text *p1,*p2,*p3;int min,max,i;xiugai=1;scanf("%d %d",&min,&max);if(head==NULL){printf("\nlist null!\n");return 0;}p1=p2=head;for(i=0;i<min-1;i++)/*找到要删除的第一行*/p1=p1->next;for(i=0;i<max;i++)/*找到要删除的最后一行*/p2=p2->next;for(delnum=0;p1!=p2;p1=p1->next)/*删除中间的节点,将flat赋值0*/ {p1->flat=0;delnum=delnum+p1->num;}for(i=0,p3=head;i<10;i++,p3=p3->next)//显示删除后的结果if(p3->flat==1)puts(p3->string);saveanddisplay(10);//将删除后的结果存盘并显示下一页内容(十行)xiugai=1;return 0;}int insert()//插入i命令对应的函数,在i行后插入文本{int hang,i,increhang=1,number=1;text *p,*p1,*p2;xiugai=1;scanf("%d",&hang);p=p1=NULL;for(i=0,p1=head;i<hang-1;i++,p1=p1->next);//找到要插入行的前一列 p=(text *)malloc(sizeof(text));//为插入行分配空间p->flat=1;p->next=p1->next;//从此行向下四行将插入行插入到链表中p->pre=p1;p1->next->pre=p;p1->next=p;p->string[0]=getchar();p->string[0]=getchar();for(i=1;(i<80)&&(p->string[i-1]!='^');i++){p->string[i]=getchar();if((i+1==80)&&(p->string[i]!='^'))//如果插入的内容超过一行{ file://的容量,则分配下一行空间p1=p; file://并将其连入链表p=(text *)malloc(sizeof(text));p->flat=1;p->next=p1->next;p->pre=p1;p1->next->pre=p;p1->next=p;i=0;increhang++;}p->num=i;}p->string[i-1]='\n';p->string[i]='\0';puts("修改后的链表:");for(p2=head;p2!=NULL;p2=p2->next)//显示出修改后的链表puts(p2->string);saveanddisplay(10+increhang);//将修改后的链表存盘并显示下一页内容 xiugai=1;return 0;}int main()//主函数,用来接受命令{char cmd;do{printf("\n\t\t****************************\n");printf("\t\t** 1 EDIT **\n");printf("\t\t** 2 HELP **\n");printf("\t\t** 3 ABOUT **\n");printf("\t\t** 4 EXIT **\n");printf("\t\t****************************\n");printf("\n\n请选择1,2,3,4:");cmd=getche();switch(cmd){case '4' : system("cls"); byebye(); break;case '2' : system("cls"); HELP(); cmd=0; break;case '3' : system("cls"); ABOUT(); cmd=0; break;case '1' : EDIT(); cmd=0; break;default : printf("\n\n\n!!!输入错误!!!\n");}}while(cmd!='4');return 0;}。