您的当前位置:首页正文

实验四 数据的输入与输出

来源:一二三四网
《计算机程序设计》实验报告

实验四 数据的输入与输出

一、实验目的

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);

1

《计算机程序设计》实验报告

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

答: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); }

2

《计算机程序设计》实验报告

三、实验内容:

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\ b=x/100; s=x%10; g=x%10/10;

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

printf(\"%d是水仙花数!\ 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是水仙花数!\ else

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

}

运行结果截图:

3

《计算机程序设计》实验报告

2. 编程实现从键盘输入三个整数,并输出其中的最大数?请将源程序和运行结果截图粘贴在后面。 源代码:#include int main() {

int a,b,c;

printf(\"请输入三个数字:\"); scanf(\"%d%d%d\ if(a>b) { if(b>c) printf(\"a>b>c\"); else if(a>c) printf(\"a>c>b\"); else printf(\"c>a>b\"); } else { if(a>c) printf(\"b>a>c\"); else if(b>c) printf(\"b>c>a\"); else printf(\"c>b>a\"); }

return 0; }

运行结果截图:

4

《计算机程序设计》实验报告

四、实验小结

请总结一下本次试验中你所遇到的错误,分析原因并说明该如何避免?

5

因篇幅问题不能全部显示,请点此查看更多更全内容

Top