字符及字符串输入输出与顺序程序设计实验样本
C语言实验二程序 总结 顺序结构与输入 输出方法

编写程序,用 getchar 函数读入两个字符 c1,c2,然后分别用 putchar 函数和 printf 函数输出这两个字符。并思考以下问题:
程序如下: #include<stdio.h> main() {
char c1,c2;
c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); putchar(‘\n’); pritf(“%c,%c\n”,c1,c2); }
符的表达式,特别是自加(++)和自减(--)运算符的使用,掌握 C 语言中赋值 语句的使用,掌握 C 语言中各种数据的输入/输出方法,能正确使用各种格式转 换符,通过本次实验加深了对顺序结构的输入输出的认识。
程序如下: #include <stdio.h> main() {float r,h,l,s,v; scanf(“%f,%f”,&r,&h); l=2*3.14159*r; s=3.14159*r*r; v=3.14159*r*r*h; printf("圆柱底周长 l 为%.3f\n",l); printf("底面积 s 为%.3f\n",s); printf("圆柱体积 v 为%.3f\n",v); } 运行结果如下:
下图
⑵ 在程序最后增加两行,记录并分析该行的输出。
i=j=8;
/* 第 8 行 */
printf("%d,%d,%d,%d\n",i,++i,j,j++); /* 第 9 行 */
调试分析:结果如下图
2 运行以下程序,并分析输出结果
#include <stdio.h>
实验6 输入输出程序设计

实验6 I/O程序设计实验目的:(1)掌握利用DOS、BIOS功能调用实现I/O的方法。
(2)掌握程序直接控制I/O方式。
实验内容:(1)利用DOS INT 21H功能调用,编程实现对输入的字符串进行统计;(2)利用BIOS INT 10H功能调用,控制字符显示特性。
(3)通过I/O指令直接对61端口的控制,实现扬声器发声。
实验过程:(1)从键盘输入一串字符(<80,回车结束),统计其中的数字、大写字母、小写字母和其它字符。
①程序说明。
1)主程序利用INT 21H 的1h号功能调用输入字符串,并调用各子程序完成统计、显示功能;2)子程序disp_msg:利用INT 21H 的9h号功能调用显示字符串;入口参数:DS:DX指向字符串3)子程序disp_cnt:利用INT 21H 的2h号功能调用显示统计数字;入口参数:BX为待显示值4)子程序count:分类统计;入口参数:DS:DX指向字符串出口参数:BX为数字字符;CX为大写字母;BP为小写字母;DI为其它字符data segmentstr db 80 dup (?)msg0 db 13,10, 'Enter a string:', '$'msg1 db 13,10, 'Numbers=', '$'msg2 db 13,10, 'Upletters=', '$'msg3 db 13,10, 'Lowletters=', '$'msg4 db 13,10, 'Others=', '$'data endscode segmentassume cs:code,ds:datago: mov ax, datamov ds, axlea dx , msg0call disp_msgmov ah, 1lea si , strlp1:int 21hmov [si], alcmp al, 13je L0inc sijmp lp1L0:lea dx, strcall countlea dx, msg1call disp_msgcall disp_cntlea dx, msg2call disp_msgmov bx, cxcall disp_cntlea dx, msg3call disp_msgmov bx, bpcall disp_cntlea dx, msg4call disp_msgmov bx, dicall disp_cntmov ah, 4chint 21hdisp_msg procpush axmov ah, 9int 21hpop axretdisp_msg endpdisp_cnt procpush axpush dxmov ax, bxmov bl, 10div blmov bh, ahmov dl, aladd dl, 30hmov ah, 2int 21hmov dl, bhadd dl, 30hmov ah, 2int 21hpop dxpop axretdisp_cnt endpcount procpush axpush sixor bx, bx; Numbersxor cx, cx; Uplettersxor bp, bp; Lowlettersxor di, di; Othersmov si, dxnext:mov al, [si]cmp al, 13je donecmp al, '0'jb otherjbe numcmp al, 'A'jb othercmp al, 'Z'jbe U_lettercmp al, 'a'jb othercmp al, 'z'jbe L_letterother:inc dijmp contnum:inc bxjmp contU_letter:inc cxjmp contL_letter:inc bpcont:inc sijmp nextdone:pop sipop axretcount endpcode endsend go②补充完整程序,编辑、连接、运行、调试程序。
C语言实验报告-字符串排序

{output[i]=a[m];
m++;
}
}
}
void main()
{
char input[50];
char output[50];
scanf("%s",input);
my_sort(input,output);
printf("input:%s\n",input);
}
后来发现这实在是太麻烦了,就使用了字符函数isdigit代替switch语句,使程序代码缩短(能运行但无法得出想要结果的错误程序):
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void my_sort(char input[],char output[])
{
char input[50];
char output[50];
scanf("%s",input);
my_sort(input,output);
printf("%s\n",input);
printf("%s\n",output);
}
但是,虽然这个程序可以运行,却得不到我想要的结果。于是,经过查找我发现了问题所在为n的数值,所以我将之改成(最终成功的程序):、
#include<string.h>
#include<ctype.h>
void my_sort(char input[],char output[])
{
int i,n,m,k,j;
《C语言程序设计》实验报告

(此文档为word格式,下载后您可任意编辑修改!)《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++6.0一、实验目的:1.了解在Visual C++6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:教材《C语言程序设计教程》第1章。
三、实验内容:1.在Visual C++6.0环境下输入并运行下面的程序:#include<stdio.(){printf("This is a C program.\n");return0;}2.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include<stdio.(){int a,b,suma=3;b=4;sun=a+b;print("%d+%d=%d\n",a,b,sum);return0;}四、实验结果:1.运行结果(或截图):2.(1)改正后的源程序:(2)运行结果(或截图):五、思考题:1.一个C程序上机的步骤有哪些?答:2.组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3.掌握基本算术运算符及其表达式的使用方法;4.掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:教材《C语言程序设计教程》第2章。
三、实验内容:1.在Visual C++6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误。
#include<stdio.(){int2cd=3;floatπ=3.14;char for=′A′;printf("%d,%f,%c\n",2cd,π,for);return0;}2.在Visual C++6.0环境下输入并运行下面的程序,观察分析运行结果。
实验二输入输出和顺序结构

实验二输入输出和顺序结构输入/输出和顺序结构程序设计一、目的和要求1、掌握C语言程序输入、输出的方法和格式。
2、本实验可在学习教材第四章后进行。
3、掌握顺序结构程序的设计方法二、实验内容与步骤1、输入并编辑下面的程序main(){int a,b;float c,d;long e,f;unsigned int u,v;char c1,c2;scanf(“%d,%d”,a,b);scanf(“%f,%f”,c,d);scanf(“%ld,%ld”,e,f);scanf(“%o,%o”,u,v);scanf(“%c,%c”,c1,c2);printf(“\n”);printf(“c=%10.2f,d=%10.2f\n”,c,printf(“e=17ld,f=%17ld\n”,e,printf(“u=%o,d=%o\n”,u,printf(“c1=%c,d=%c\n”,c1,c2);}这个程序有语法错误吗?为什么?2、调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:a=123,b=456,c=17.6,d=*****.65,e=*****,f=***-*****,u=620XX年,v=*****,c1=’a’,c2=’b’ 分析运行结果。
特别注意输入c1,c2的值是什么?什么原因?3、将输入e和f的语句改为:scanf(“%d,%d”,e,再用上述测试数据测试并分析结果。
4、将输入u、v的语句改为:scanf(“%d,%d”,u,再用上述测试数据测试并分析结果。
5、将输出e ,f 的语句改为:printf(“e=%17d,f=%17d\n”,e,f);再用上述测试数据测试并分析结果。
6、将输出u、v的语句改为:C语言实验资料或printf(“u=%d,v=%d\n”,u,v);再用上述测试数据测试并分析结果。
7、请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。
8、在scanf(“%c,%c”,c1,c2);语句之前加一个语句:getchar();9、验证转义字符\n 与\r的意义有何不同。
实验四字符及字符串的输入和输出微机原理与接口技术

课程名称: 微机原理与接口技术
实验名称:实验四字符及字符串的输入和输出
专 业: 计算机科学与技术
学 号:
姓 名:
实验地点: 系统结构实验室
实验日期:
2019
任课ቤተ መጻሕፍቲ ባይዱ师:
实 1.熟悉如何进行字符及字符串的输入输出。
验 2.掌握简单的DOS系统功能调用。
目
的
实 验 要
1.复习 DOS 系统功能调用的 1、2、9、10 号功能。 2.实验之前按照题目要求预先编写好实验内容中的程序段。 3.实验之前预习实验内容并写好实验预习部分。
4.DOS 功能调用与 ROM-BIOS 功能调用的相同点和不同点分别是什么?什么情况 下只能采用 ROM-BIOS 功能调用? 相同点:有些 DOS 功能调用和 BIOS 中断调用能完成同样的功能。 不同点:DOS 本身是一种操作系统,DOS 功能是操作系统做好的程序集,用于给操 作系统的用户调用。BIOS 是内存只读部分的内容,BIOS 里面是硬件本身就做好的 程序,可供 CPU 访问使用。 有些情况下,必须使用 BIOS 中断调用,例如,INT 17H 中断的 2 号调用为读打印 机状态,DOS 功能调用无这种功能,只能使用 BIOS 中断调用。
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET BUFF
MOV AH,0AH ;调用 0A 功能输入字符串
INT 21H
MOV AH,02H
MOV DL,0DH ;回车
INT 21H
MOV AH,02H
实 MOV DL,0AH ;换行 验 INT 21H 内 MOV DI, OFFSET BUFF 容 MOV CH,0 与 MOV CL, [DI+1] 实 ADD DI, 2 验 AGAIN:MOV DL, [di] 结 MOV AH, 02H 果 INT 21H
C程序实验 顺序程序设计

实验三顺序程序设计一、实验目的1、熟练掌握C语言中赋值语句的使用方法。
2、掌握格式输入输出scanf()函数、printf()函数的调用方法:整型、实型字符型数据的输入输出格式。
3、掌握字符型输入输出函数getchar()、putchar()函数的调用语法。
二、实验内容与步骤:1、从键盘输入两个0到127的整数,求两数的平方差并输出其值以及这两个整数的ASCⅡ码对应的字符。
程序:#include <stdio.h>void main(){int x,y,sub;scanf("%d%d",&x,&y);sub=x*x-y*y;printf("%c,%c,%d\n",x,y,sub);}结果:从键盘输入"100 50",结果是?100 50d,2,75002、#include <stdio.h>void main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61; b=62;c1='a'; c2='b';d=3056; e=-6087;f=3157.; g=0.;m=50000; n=60000;p=32768; q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);}(1)运行程序并分析结果。
结果:a=61,b=62c1=a,c2=bd=3056.00,e=-6087.00f= 3157.,g= 0.0m=50000,n=60000p=32768,q=40000分析:a,b为整型变量,按%d输出,得到如上的结果;c1,c2为字符型,按%c输出,得到如上的结果;d,e为单精度浮点型,按%6.2f输出,其中整个数据占6列,小数两列,得到的结果如上;f,g双精度变量,按%15.6f输出,其中整个数据占15列,小数为6列(如全为小数,则小数全部输出),因为位置过宽,所以前面留有空格,结果如上;m,n为长整型,按%ld 输出,得到结果如上;p,q为无符号整型,存储范围增加,因此得到如上结果。
顺序程序设计(C语言实验报告)

仲恺农业工程学院实验报告纸信息学院(院、系)专业班C语言程序设计课实验目的:(1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。
(2)掌握各种类型数据的输入输出方法。
实验内容与总结:1、验证性实验(1)键盘输入与屏幕输出练习问题1 要使下面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 D 。
#include <stdio.h>void main(){char a,b;int c;scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);}A)1 2 34 B)1,2,34C)’1’,’2’,34D)12 34问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?答:将“printf("%c,%c,%d\n",a,b,c);”改为“printf("%c %c %d\n",a,b,c);”问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?答:将“scanf("%c%c%d",&a,&b,&c);”改为“scanf("%c,%c,%d",&a,&b,&c);”问题 4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪些语句?怎样修改?答:将scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);改为:scanf("%c,%c,%d",&a,&b,&c);printf("'%c','%c',%d\n",a,b,c);注意事项:printf和scanf函数使用是要注意“空格”、“’”、“,”的添加。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理第二次实验字符及字符串输入输出与顺序程序设计实验班级:姓名:学号:日期:2.2 字符及字符串输入输出与顺序程序设计实验2.2.1 实验目1、学习和掌握字符及字符串输入输出办法。
2、掌握顺序程序设计办法。
3、进一步掌握调试工具用法。
2.2.2 实验预习规定1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)调用办法(详见教材5.5.6)。
2、复习BCD码运算调节指令。
3、依照“2.2.3 实验内容”中给出源程序框架编写完整源程序,以便实验时调试。
4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。
2.2.3实验内容从键盘输入两个一位十进制数,计算这两个数之和,并将成果在屏幕上显示出来。
1、问题分析例如使用功能号为01H用于实现单个字符输入DOS功能调用接受从键盘输入两个十进制数8和6,这时计算机内部得到是这两个数ASCII码值38H和36H。
由于数字0 9ASCII码值与其代表数值之间相差30H,因而将其减去30H即可得到以非压缩型BCD数形式表达十进制数08H和06H,使用ADD指令对它们进行相加后成果为0EH(00001110B),显然需要用非压缩型BCD数加法调节指令对ADD运算成果进行调节,调节后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其相应ASCII码31H(1ASCII码)和34H(4ASCII码),然后调用功能号为02H用于单个字符输出DOS功能调用将它们显示出来。
综上所述,需要考虑如下问题。
(1)从键盘输入一种一位十进制数办法通过功能号为1DOS功能调用实现从键盘输入一种字符,格式如下:MOV AH,01HINT 21H ;此时程序等待顾客键入,键入字符ASCII码值存在AL中SUB AL,30H ;减去30H后得到键入数字所代表数值(2)提示信息字符串显示通过功能号为9DOS功能调用实现字符串显示,注意字符串最后一种字符必须为’$’。
指令格式如下:MOV DX,OFFSET INFOR1 ;INFOR1为在数据段中定义要显示字符串MOV AH,09HINT 21H(2)非压缩型BCD数加法调节指令使用设从键盘输入数值已存储在寄存器AL,BL中,可用下列程序完毕数据相加和调节操作:XOR AH,AHADD AL,BLAAA ;执行该指令后,AH中为和十位上数字,AL中为个位上数字请读者考虑,为什么要使用指令“XOR AH,AH”,不用行否?(3)计算成果显示执行完AAA指令后,只需分别将AH(十位上数值)和AL(个位上数值)加上30H,并依次调用功能号为2DOS功能调用来显示字符。
详细指令代码如下:PUSH AXMOV DL,AHADD DL,30HMOV AH,02HINT 21HPOP AXMOV DL,ALADD DL ,30HMOV AH ,02HINT 21H2、 源程序框架DATASEGMENTINFOR1 DB "Please Input the First Data(<10):$" INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"INFOR3 DB 0AH,0DH,"The Result is:$" ;0DH 和0AH 分别为非显示字符回;车和换行ASCII 码值,美圆符号“$”为字符串结束标志,不能省略。
DATA ENDS CODE SEGMENTASSUME CS :CODE ,DS :DATASTART: MOVAX ,DA TA MOV DS ,AXSUB AL ,30HMOV BL ,ALSUB AL ,30H PUSH AXPOPAXPUSH AXMOV AH,4CHINT 21HCODE ENDSEND START3、程序调试源程序编写完毕后,先静态检查,无误后,对源程序进行汇编和连接,生成可执行文献。
在DOS 命令提示符下运营该程序,分析运营成果与否对的。
若成果不对的,使用DEBUG对其进行调试。
2.2.4 实验习题1、设a,b,c,d为四个压缩型BCD数,它们被存储在内存dbcd开始4个存储单元中,计算a+b+c+d,并将成果在屏幕上显示出来(注意压缩型BCD数表达办法:十进制数38表达到压缩型BCD数时应写成38H)。
程序编写完毕并运营对的后,打开源程序,变化a,b,c,d内容,然后重新进行汇编、连接并运营程序,检查程序运营成果与手工计算成果与否相符。
下面给出几组实验用数据:(1)a=11,b=23,c=25,d=31(2)a=10,b=20,c=30,d=40(3)a=45,b=45,c=45,c=45(4)a=88,b=99,c=77,d=66(注意压缩型BCD数表达办法:十进制数38表达到压缩型BCD数时应写成38H)2、从键盘输入两个一位十进制数,计算这两个数之积,并将成果在屏幕上显示出来。
3、从键盘输入0 9中任意一种数自然数,将其平方值在屏幕上显示(使用查表法实现)。
2.2.5 实验报告规定1、补全“2.2.3 实验内容”中源程序框架内未写出程序代码,并阐明你在调试该程序过程中遇到了哪些问题,是如何解决。
补全后裔码如下:STACK SEGMENTSTL DB 100H DUP(?)STACK ENDSDATA SEGMENTINFOR1 DB "Please Input the First Data(<10):$"INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"INFOR3 DB 0AH,0DH,"The Result is:$"DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,LENGTH STL;表达式“LENGTH STL”功能为计算STL中定义变量个数,;汇编后其值为100H ,详见教材5.2.2MOV DX,OFFSET INFOR1;INFOR1为在数据段中定义要显示字符串MOV AH,09HINT 21HMOV AH,01HINT 21H ;此时程序等待顾客键入,键入字符ASCII码值存在AL中SUB AL,30H ;减去30H后得到键入数字所代表数值MOV BL,ALMOV DX,OFFSET INFOR2;INFOR2为在数据段中定义要显示字符串MOV AH,09HINT 21HMOV AH,01HINT 21H ;此时程序等待顾客键入,键入字符ASCII码值存在AL中SUB AL,30H ;减去30H后得到键入数字所代表数值XOR AH,AHMUL BLAAA ;执行该指令后,AH中为和十位上数字,AL中为个位上数字PUSH AXMOV DX,OFFSET INFOR3;INFOR3为在数据段中定义要显示字符串MOV AH,09HINT 21HPOP AXPUSH AXMOV DL,AHADD DL,30HMOV AH,02HINT 21HPOP AXMOV DL,ALADD DL,30HMOV AH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2、从“2.2.4 实验习题”中任选一道题目,画出流程图,编写源程序,并阐明在调试过程中遇到了哪些问题,是如何解决。
2. 从键盘输入两个一位十进制数,计算这两个数之积,并将成果在屏幕上显示出来。
调试中遇到问题:开始没有用AAM指令,即非压缩型BCD乘法调节指令,而是沿用了上例中AAA指令,成果中有些可以正常显示,如1*2,3*2,3*4,而像5*6,5*5,4*4就不能正常显示。
后查书找到了乘法调节指令,修正后正常运营。
流程图:源代码:STACK SEGMENTSTL DB 100H DUP(?)STACK ENDSDATA SEGMENTINFOR1 DB "Please Input the First Data(<10):$"INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"INFOR3 DB 0AH,0DH,"The Result is:$"DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET INFOR1;INFOR1为在数据段中定义要显示字符串MOV AH,09HINT 21HMOV AH,01HINT 21H;此时程序等待顾客键入,键入字符ASCII码值存在AL中SUB A L,30H ;减去30H后得到键入数字所代表数值MOV BL,ALMOV DX,OFFSET INFOR2;INFOR2为在数据段中定义要显示字符串MOV AH,09HINT 21HMOV AH,01HINT 21H;此时程序等待顾客键入,键入字符ASCII码值存在AL中SUB AL,30H ;减去30H后得到键入数字所代表数值MUL BL ;AL BL相乘AAM ;非压缩型BCD码乘法调节指令PUSH AXMOV DX,OFFSET INFOR3;INFOR3为在数据段中定义要显示字符串MOV AH,09HINT 21HPOP AXPUSH AXMOV DL,AH;执行完AAM指令后,只需分别将AH(十位上数值)和AL(个位上数值)加上30H,ADD DL,30H;并依次调用功能号为2DOS功能调用来显示字符。
MOV AH,02HINT 21HPOP AXMOV DL,ALADD DL,30HMOV AH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START3、写出实验小结,内容涉及实验心得(收获)、局限性之处或此后应注意问题等。
小结:通过这次实验又进一步加深了对汇编理解以及它整个运营过程,能纯熟掌握它运营过程,也可以看懂某些基本顺序设计汇编程序,能设计出简朴顺序汇编。
刚上机时只想按照教师给出提纲,把缺省某些照上面给出提示简朴修改后拷贝,可是当程序出错时便不懂得哪里问题也不会修改,最后静下心仔细看程序后理解了,不久就做出来了。