实验二

实验目的

1. 掌握格式字符的使用方法,特别是%d, %f, %c, %s的基础用法

2. 掌握格式化输出函数printf()和格式化输入函数scanf()的用法

3. 掌握单个字符输出函数putchar()和单个字符输入函数getchar()的用法

4. 体验if语句和if...else语句的用法

5. 体验switch语句的用法

Part 1: 格式化输出函数printf()和格式化输入函数scanf()

1.

/*
《C语言程序设计教程学习指导》p118 实验内容(1)
这是一个常用格式控制符使用示例
运行程序,结合运行结果,对照每一行printf()中的格式控制符,理解和巩固其功能和用法
*/
#include 
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.

错误代码

/* 这是一个格式化输入输出函数及格式符使用练习
找出两处错误,修改并运行程序
为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 
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("%f,%lf",&x,&y);
printf("%f,%lf\n",x,y);
return 0;
}

修改后

/* 这是一个格式化输入输出函数及格式符使用练习
找出两处错误,修改并运行程序
为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 
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("%lf,%lf\n",x,y);
return 0;
}

运行结果

实验二_第2张图片

总结:

 %d整型输出,%d表示把数按十进制整型输出,数字5表示的是输出宽度,即输出的数值如果大于5位,按原数输出,如果小于5位在数的左边补空格。 

%ld长整型输出,

%o以八进制数形式输出整数,
 
%lf 是double类型用于格式化输入输出时对应的格式符号

%x以十六进制数形式输出整数,或输出字符串的地址。

%u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然数值打印出来会有误。

%c用来输出一个字符,

%s用来输出一个字符串,

%f用来输出实数,以小数形式输出,默认情况下保留小数点6位。

%.100f用来输出实数,保留小数点100位。

%6.2f表示无论结果有多少位,输出结果至少占六个制表符,即六个位置,不够的用空格补满,可以超过,且保留两位小数位。 

%e以指数形式输出实数,

%g根据大小自动选f格式或e格式,且不输出无意义的零。

Part 2: 单个字符输出函数函数putchar()和单个字符输入函数getchar()

1.

/*
putchar()可以用于在屏幕上输出单个字符
括号中要给出想要输出的字符参数,参数可以是字符型常量/变量/表达式
如果使用这个函数,需要在程序前面加上#include 
*/
#include 
int main() {
char ch;
ch = 'C';
putchar(ch); // 参数ch是字符型变量
putchar(ch+32); // 参数ch+32是字符型表达式
putchar('\x43'); // 参数是字符型常量,是用十六进制表示的转义字符,是'C'的ASCⅡ码值
putchar('\n'); // 参数\n是字符型常量,是转义字符,表示换行
return 0;
}

实验二_第3张图片

“ch = 'C'”这部分可以换成其他字,随之“putchar('\x43')”部分需要改变常量,A是41,B是42,以此类推。

2.

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

实验二_第4张图片

Part 3:

1.单分支if1算法流程图

实验二_第5张图片

/*
单分支if语句使用示例
从键盘上输入两个整数分别给a和b
如果a>b,就交换,使得a里面存放小的数,b里面存放大的数
*/
#include 
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;
}

 

实验二_第6张图片

2.两分支if2算法流程图

实验二_第7张图片(注意:实验二.pdf文件中的代码是错误的,要自行修改)

/*
二分支if语句使用示例
从键盘上输入一个整数给n,判断n是奇数还是偶数
*/
#include 
int main() {
int n;
printf("输入一个整数给n:\n");
scanf("%d",&n);
if(n%2==1)
printf("n是奇数.\n");
else
printf("n是偶数.\n");
return 0;
}

实验二_第8张图片

3.多分支if语句

/*
多分支if语句示例
输入1,2,3...的不同整数,显示不同提示信息
*/
#include 
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;
}

实验二_第9张图片

Part 4:

swich语句体验练习

/*
switch语句使用示例
输入1,2,3...的不同整数,显示不同提示信息
*/
#include 
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;
}

实验二_第10张图片

去除case1和case2后的break运行后

实验二_第11张图片

Part 5:

编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输 出提示信息"Binggo, you are right~",否则,输出提示信息"try again~"。

 

/*要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输 出提示信息"Binggo, you are right~",否则,输出提示信息"try again~" */
#include 
int main() {
    int choice;
    printf(" 输入一个答案选项(A,B,C,D之一): ");
    scanf("%c",&choice);
    switch(choice) {
        case'A': printf("Binggo, you are right~\n");break; 
        default: printf("try again~\n");
    }
    return 0;
}

实验二_第12张图片

实验总结与体会:

这次的实验出现次数最多的错误是某值为在此范围内申明,有时候总是会忘了将值在之前的范围里申明,还有找错误时代码还是不了解具体错在哪里,需要多多查资料把一些错误提示解决措施了解清楚。

 

 评论链接:https://home.cnblogs.com/u/ningchenyang/

                  https://www.cnblogs.com/super123-/

                  https://www.cnblogs.com/lvzixuan/

 

 

 

 

 

转载于:https://www.cnblogs.com/MR-XN/p/10619676.html

你可能感兴趣的:(实验二)