实验二
实验目的
1.掌握格式字符的使用方法,特别是%d,%f,%c,%s的基础用法。
2.掌握格式化输出函数printf()和格式化输入函数scanf()的用法。
3.掌握单个字符输出函数putchar()和单个字符输入函数getchar()的用法。
4.体验if语句和if...else语句的用法。
5.体验switch语句的用法。
实验内容
part 1.格式化输出函数printf()和格式化输入函数scanf()
#include <stdio.h> int main() { int x=1234; float f=123.456; double m=123.456; char ch='a'; char a[]="Hello, world!"; // 定义一个数组a,数组中连续存放了字符串常量hello,world! int y=3, z=4; printf("%d %d\n", y, z); printf("y=%d, z=%d\n", y,z); printf("%8d,%2d\n", x,x); printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f); printf("%lf\n",m); printf("%3c\n", ch); printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a); return 0; }

注:1.输出项的类型与个数必须与控制字符串中格式字符的类型,个数一致。当有多个输出项时,各项之间用逗号分隔。
2.控制字符由格式说明和普通字符组成。
实验结论:%d按十进制整数输出 %5d:数据长度<5,左补空格;否则按实际输出。
%f按浮点数输出 %lf:指定输出精度为double型;%.3f对实数指定小数点后位数(四舍五入),对字符串,指定实际输出位数。
%c按字符输出
%e按指数形式输出
%s按字符串输出
指定输出精度为双精度double型时,用格式符%lf.
/* 《C语言程序设计教程学习指导》p119 实验内容(2) ? 这是一个格式化输入输出函数及格式符使用练习 找出两处错误,修改并运行程序 为a1,a2,a3,c1,c2,c3,x,y输入数据, 使得: a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5 */ #include <stdio.h> int main() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("%d,%d,%d\n",a1,a2,a3); scanf("%c%c%c",&c1,&c2,&c3); printf("%c%c%c\n",c1,c2,c3); scanf("%lf,%lf",&x,&y); printf("%f,%lf\n",x,y); return 0; }

修改第一处为第一个scanf(),缺少地址运算符“&”。&a1表示变量a1的地址,该地址时编译系统在内存中给a1变量分配的地址。
修改第二处为第三个scanf(),格式说明有问题。变量x定义为double类型。%f改为%lf.
part 3.单个字符输出函数putchar()和单个字符输入函数getchar()
/* putchar() 可以用于在屏幕上输出单个字符 括号中要给出想要输出的字符参数,参数可以是字符型常量/变量/表达式 如果使用这个函数,需要在程序前面加上#include <stdio.h> */ #include <stdio.h> int main() { char ch; ch = 'A'; putchar(ch); // 参数ch是字符型变量 putchar(ch+32); // 参数ch+32是字符型表达式 putchar('\x41'); // 参数是字符型常量,是用十六进制表示的转义字符,是'A'的ASCⅡ码值 putchar('\n'); // 参数\n是字符型常量,是转义字符,表示换行 return 0; }

ch为一个字符变量或常量。
/* getchar() 可以用于从键盘上输入单个字符 括号中不需要参数 如果输入成功,函数会返回用户从键盘输入的字符 如果使用这个函数,需要在程序前面加上#include <stdio.h> */ #include <stdio.h> int main() { char ch; ch = getchar(); // 用户从键盘输入字符,如果输入成功,输入的字符被赋值给ch putchar(ch); // 使用putchar()输出字符变量ch中存放的字符 printf("%c",ch); // 使用printf()和格式符%c输出单个字符 return 0; }

getchar可赋值给字符变量。
part 3.if 语句体验练习
/* 单分支if语句使用 示例 从键盘上输入两个整数分别给a和b 如果a>b,就交换,使得a里面存放小的数,b里面存放大的数 */ #include <stdio.h> int main() { int a,b; int t; // 用于交换a和b时,作为中间变量 printf("输入两个整数给a和b:\n"); scanf("%d%d",&a,&b); if(a>b) { t = a; a = b; b = t; } printf("a=%d, b=%d\n",a,b); return 0; }

执行过程:先计算if后面表达式的值,如果其值非0,则执行紧跟在if后面的语句序列,否则跳过该结构,执行后面的语句。
/* 二分支if语句使用示例 从键盘上输入一个整数给n,判断n是奇数还是偶数 */ #include <stdio.h> int main() { int n; printf("输入一个整数给n:\n"); scanf("%d",&n); if(n%2) printf("n是奇数.\n"); else printf("n是偶数.\n"); return 0; }

if...else.
/* 多分支if语句示例 输入1,2,3...的不同整数,显示不同提示信息 */ #include <stdio.h> int main() { int level; printf("输入现在状态等级(1-5): "); scanf("%d",&level); if(level == 1) printf("high翻了:)\n"); else if(level == 2) printf("low爆了:(\n"); else printf("一言难尽,无法概括。。。\n"); return 0; }

if...else if语句。
part 4.
/* switch语句使用示例 输入1,2,3...的不同整数,显示不同提示信息 */ #include <stdio.h> int main() { int level; printf("输入现在状态等级(1-5): "); scanf("%d",&level); switch(level) { case 1: printf("high翻了:)\n"); break; case 2: printf("low爆了:(\n"); break; default: printf("一言难尽,无法概括。。。\n"); } return 0; }
switch语句。
switch后面表达式的值必须是整型或字符型。
有break情形:

无break情形:

part 5.
#include<stdio.h>
int main()
{
char ch;
printf("请输入你的答案(A,B,C or D:");
ch=getchar();
if(ch=='A') {
printf("binggo,you are right~");
}
else
printf ("try again~");
return 0;
}
实验总结与体会
1.格式化输入输出函数的格式符使用,还有修饰符的理解,用程序运行出来更直观易于体会。
2.if语句中的表达式要注意。
3.switch,像是时钟上的指针。注意break的使用。

浙公网安备 33010602011771号