实验四 数据的输入与输出

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四数据的输入与输出

一、实验目的

1.掌握C程序输入输出语句的使用方法。

2.掌握常用占位符的使用。

3.掌握scanf,printf输出数据时格式的控制方法。

二、预习内容

1.请总结使用scanf输入语句时,间隔符使用的注意点?(提示:空格、TAB 和回车对%s同样适用)假设有int x; char c; double d; float f;四个变量,现有输入语句如下:

scanf(“x=%d,d=%f,c=%c,f=%f”,&x,&d,c,&f);

请问:以上scanf语句是否正确?如不正确请给出改正方法,如改正后想要使x 获得3,c获得字符a,d获得3.1415,f获得12.3,则在键盘上应该如何输入这些值,请给出具体输入的方法。

答:字符前后不用空格回车Tab

scanf(“%d%lf%c%f”,&x,&d,&c,&f);

输入3空格3.1415a12.3

2.输出语句printf具有灵活的显示格式控制能力,其能力是通过输出格式控制串来实现的,尤其是对变量输出所占列数的控制,请问printf是如何来实现对整数和浮点数实现显示列数控制的,请尽可能详细地说明?假设现有int x=12345; float y=-

3.14159;现要求先输出一行参照行并换行,即12345678901234567890,然后在第二行将x输出时占8列显示且实现左对齐,紧接着让y占7列显示且保留3位小数,请给出具体的printf语句和现实结果,并说明y显示那个结果的原因。

答:%md占m行 %m.nf m表示输出总宽度 n表示小数保留位数(包括小数点)printf(“12345678901234567890\n”);

Printf(“%-8d,%7.3f”,x,y);

3.大家对printf语句的输出格式掌握后,下面这个内容课堂上没有涉及到,即scanf是否也能控制输入数据的列数呢。请大家完成下面的实验,并根据实验结果总结出你所获得的关于scanf语句在这方面的规则。

假设有:int x,y; char c; float z;

scanf(“%2d%3d%c%f”,&x,&y,&c,&z);

假设用户在键盘上输入了一行数据为:123456789,请问下面语句输出的结果是什么?

printf(“x=%d,y=%d;c=%c,z=%f”,x,y,c,z);

请根据实验结果总结规则。

答:x=12,y=345,c=6,z=789.000000

4.C语言中字符的输入输出除了可以使用scanf和printf实现外还可以使用哪两个字符专用的输入输出函数?并简要说明他们和scanf、printf的区别是什么?最后,使用字符专用的输入输出韩式编程实现从键盘输入一个字符,但要求输出其前后面第5个字符。(要求:如果输入的字符是26个字母表中的后5个的情况,则自动按尾巴接头的环型方式显示字母表中对应的开头字母,例如:如你输入的小写字母x,那么你应该显示的是小写字母c,输入的是大写字母,情况亦然,请将你的源代码和运行结果截图粘贴在本题的解答中。

答:putchar在显示器上输出单个字符 putchar(‘a’)输出字符a putchar(ch)输出ch 的值

Getchar char c; c=getchar();通常把输入的字符赋予一个字符变量

#include

int main()

{

char a;

printf("请输入一个字符:");

a=getchar();

if(a>=65&&a<=77)

{

a=77-a+78;

putchar(a);

}

else if(a>=78&&a<=90)

{

a=77-(a-78);

putchar(a);

}

else if(a>=97&&a<=109)

{

a=109-a+110;

putchar(a);

}

else if(a>=110&&a<=122)

{

a=109-(a-110);

putchar(a);

}

三、实验内容:

1.程序调试的目的是发现程序存在的错误并改正,请问C语言程序可能存在哪三种错误?然后,下面的程序实现的功能是从键盘输入一个三位数,然后判断其是否是水仙花数,所谓水仙花数,指的是该数每一位的立方和等于该数本身。例如:153就是一个水仙花数,因为1^3 + 5^3+ 3^3 = 153。但是下面这个程序存在多个错误,请利用VC++6.0调试并改正错误,注意对于逻辑性错误大家要学会单步调试的方法,即先设断点然后开始单步执行,执行是可以通过F10或F11来控制程序一条一条执行。

存在错误的程序如下:请将正确的代码(文本)写在下面,并在修改之处用红色字体标明。

#include

int main()

{

int x,b,g,s;

printf("请输入一个三维数:%d");

scanf("%d",x);

b=x/100;

s=x%10;

g=x%10/10;

if(b^3+s^3+g^3==x);

printf("%d是水仙花数!",x);

else

printf("很遗憾,你输入的%d不是水仙花数!");

}

源代码:#include

int main()

{

int x,b,g,s;

printf("请输入一个三维数:%d");

scanf("%d",&x);

b=x/100;

s=x%10;

g=(x-100*b)/10;

if(b^3+s^3+g^3==x)

printf("%d是水仙花数!",x);

else

printf("很遗憾,你输入的%d不是水仙花数!",x);

}

运行结果截图:

相关文档
最新文档