实验二

 

 Part 1

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

  ex1. 这个部分主要展示几个常用格式符%d,%f,%c,%e,%s的用法,其中d为按十进制整数输出,f为按浮点数输出,c为按字符输出,e为按指数形式输出,s为按字符串输出;

"%8d"中的8表示输出整数的列数;“%.2f”输出后的小数点后保留两位;“%6.2f”输出时小数点前为六位,数字不足的以空格补上,小数点后保留两位小数。

        *double型数据在scanf()函数中需要用%lf

#include <stdio.h>
int main() {
int x=1234;
float f=123.456;
double m=123.456;
char ch='a';
char 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;
}

 

ex 2.

查找并修改错误

修改前 :无法运行

#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("%f,%lf",&x,&y);
printf("%f,%lf\n",x,y);
return 0;
}

 

修改后:

#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("%lf,%lf\n",x,y);
return 0;
}

 

        地址要由地址运算符“&”后跟变量名组成,该题错误为第七行缺少了地址符&;double型数据在scanf()函数中需要用%lf,倒数第三行缺少l.

Part 2

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

ex 1.

#include <stdio.h>
int main() {
char ch;
ch = 'A';
putchar(ch); 
putchar(ch+32); 
putchar('\x41'); 
putchar('\n'); 
}

 

ex 2.

#include <stdio.h>
int main() {
char ch;
ch = 'A';
putchar(ch); 
putchar(ch+32); 
putchar('\x41'); 
putchar('\n'); 
}

 

Part 3

 if语句体验练习

ex 1.

单分支if语句

#include <stdio.h>
int main() {
int a,b;
int t; 
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后的小括号必须要有,语句序列中只有一条语句的时候,可以省略{}

 

ex 2.

两分支if语句
语法规则说明
如果括号里的表达式成立(逻辑真),就执行语句序列1;否则,执行语句序列2

#include <stdio.h>
int main(){ 
int n;
printf("输入一个整数给n:\n");
if(n%2)
printf("n是奇数.\n");
else
printf("n是偶数.\n");
return 0;
}

 

ex 3.

多分支if语句
语法规则说明
如果表达式1成立(逻辑真),就执行语句序列1;否则,判断表达式2,如果表达式2成立,执行语句序
列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;
}

 

 

Part 4

 switch语句体验练习
语法规则说明 计算switch后面括号里表达式的值,与case之后的常量进行比较,与哪一个匹配,就执行哪
一个case后面的语句序列;如果都不匹配,就执行default后面的语句序列(如果写了default的话).

ex 1.

#include <stdio.h>
int main() {
int level;
printf("输入现在状态等级(1-5): ");
scanf("%d",&level);
switch(level) {
case 1: printf("high翻了:)\n"); 
case 2: printf("low爆了:(\n"); 
default: printf("一言难尽,无法概括。。。\n");
}
return 0;
}

 

注*:switch语句中括号里表达式的值必须是整型或字符型;语句序列中是否有break语句会影响程序执行
流程.

ex 2.

#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;
}

 

ex 3.

#include <stdio.h>
int main() {
int level;
printf("输入现在状态等级(1-5): ");
scanf("%d",&level);
switch(level) {
case 1: printf("high翻了:)\n"); 
case 2: printf("low爆了:(\n"); 
default: printf("一言难尽,无法概括。。。\n");
}
return 0;
}

 

注*: 上述程序代码中,去掉case 1和case 2最后的break, 保存并重新编译后,再次运行,分别输入1和
2,观察运行结果与之前有何不同?

 解答: 运行后可以看出无break时,它将会输出所有的内容。

Part 5

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

ex 1.

#include <stdio.h>
int main()
{
 char answer,A,B,C,D;
 printf("请输入你的答案(A,B,C or D): ");
 scanf("%c",&answer);
 if(answer == 'A')
 printf("binggo,you are right~");
 else
 printf("try again~");
 return 0;
}

 

ex 2.

#include <stdio.h>
int main()
{
 char answer,A,B,C,D;
 printf("请输入你的答案(A,B,C or D): ");
 scanf("%c",&answer);
 switch(answer){
  case 'A':printf("binggo,you are right~");break;
  case 'B':printf("try again~");break;
  case 'C':printf("try again~");break;
  case 'D':printf("try again~");break;
  
 }
 return 0;
}

 

 

           实验总结与体会:

             在这次实验中,前面几部分都是老师给出问题的同时也给出了正确的程序,尽管如此,在运行了老师的程序之后我自己仍然不能够写出正确的程序,可以得出,自己仍然需要努力,多翻书,多试验吧……

                    最难过的是,在这次实验中,由于自己未掌握相应的知识,导致在编写程序5的时候我将case:'A'总是写为case:A,由于这个错误,导致我编写的两个程序都不能正确的运行,迫不得已,我最后请教了一个学习计算机的同学,这才将错误改正了过来(难过)。

                    加油吧,小菜鸟!

 

实验互评:

一.

https://www.cnblogs.com/cnx1252/

二.

https://www.cnblogs.com/254729wjl/

三.

https://www.cnblogs.com/shauifan/

 

posted @ 2019-03-28 19:38  zzn123321  Views(216)  Comments(1)    收藏  举报