实验二实验结论&实验总结与体会
Part1:格式化输出函数printf()和格式化输入函数scanf()
①
/*
《C语言程序设计教程学习指导》p118 实验内容(1)
这是一个常用格式控制符使用示例
运行程序,结合运行结果,对照每一行printf()中的格式控制符,理解和巩固其功能和用法
*/
#include <stdio.h>
int main() {
int x=;
float f=123.456;
double m=123.456;
char ch='a';
char a[]="Hello, world!"; // 定义一个数组a,数组中连续存放了字符串常量hello,world!
int y=, z=;
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 ;
}
注意修饰符的使用。对于整数、实数和字符串,[.precision]的功能并不相同。plus:对于无符号数和实数,[#]的作用也大相径庭;有符号的整数、无符号的整数、实数、字符和字符串的输出一般形式不同。
②
更改前:
/*
《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("%f,%lf",&x,&y);
printf("%f,%lf\n",x,y);
return ;
}
更改后:
/*
《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("%lf,%lf\n",x,y);
return ;
}
即第13行缺少了取地址运算符"&";双精度变量x对应双精度格式%lf
plus:
务必原样输入的情况:格式控制符中出现常规字符(包括转义字符)
使用格式控制符%c输入单个字符空格和转义字符均作为有效字符被输入
系统认为数据输入结束的情况:1、空格、回车、tab;2、[width];3、非法输入
在输入多个数据时若前面数据的输入遇到非法字符且输入的非法字符不是格式控制字符串中的常规字符则将影响后面数据输入
Part2:
①putchar()
/*
putchar()可以用于在屏幕上输出单个字符
括号中要给出想要输出的字符参数,参数可以是字符型常量/变量/表达式
如果使用这个函数,需要在程序前面加上#include <stdio.h>
*/
#include <stdio.h>
int main() {
char ch;
ch = 'A';
putchar(ch); // 参数ch是字符型变量
putchar(ch+); // 参数ch+32是字符型表达式
putchar('\x41'); // 参数是字符型常量,是用十六进制表示的转义字符,是'A'的ASCⅡ码值
putchar('\n'); // 参数\n是字符型常量,是转义字符,表示换行
return ;
}
ch为一个字符变量/常量/表达式,=printf("%c",ch)
②getchar()
/*
getchar()可以用于从键盘上输入单个字符
括号中不需要参数
如果输入成功,函数会返回用户从键盘输入的字符
如果使用这个函数,需要在程序前面加上#include <stdio.h>
*/
#include <stdio.h>
int main() {
char ch;
ch = getchar(); // 用户从键盘输入字符,如果输入成功,输入的字符被赋值给ch
putchar(ch); // 使用putchar()输出字符变量ch中存放的字符
printf("%c",ch); // 使用printf()和格式符%c输出单个字符
return ;
}
功能为输入一个字符,若输入不止一个字符,则后续的getchar调用不会再等待用户按键而直接读取缓冲区中的字符直到读完
Part3: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 ;
}
仅当if后只有一条语句时,{}才能省略
if...else
/*
二分支if语句使用示例
从键盘上输入一个整数给n,判断n是奇数还是偶数
*/
#include <stdio.h>
int main() {
printf("输入一个整数给n:\n");
scanf("%d",&n);
if(n%)
printf("n是奇数.\n");
else
printf("n是偶数.\n");
return ;
}
If...else if
/*
多分支if语句示例
输入1,2,3...的不同整数,显示不同提示信息
*/
#include <stdio.h>
int main() {
int level;
printf("输入现在状态等级(1-5): ");
scanf("%d",&level);
if(level == )
printf("high翻了:)\n");
else if(level == )
printf("low爆了:(\n");
else
printf("一言难尽,无法概括。。。\n");
return ;
}
以上三种条件语句简洁明了,没有过多解读。
Part 4 switch
/*
switch语句使用示例
输入1,2,3...的不同整数,显示不同提示信息
*/
#include <stdio.h>
int main() {
int level;
printf("输入现在状态等级(1-5): ");
scanf("%d",&level);
switch(level) {
case : printf("high翻了:)\n"); break;
case : printf("low爆了:(\n"); break;
default: printf("一言难尽,无法概括。。。\n");
}
return ;
}
switch语句中括号里表达式的值必须是整型或字符型;语句序列中是否有break语句会影响程序执行流程
去掉case 1和case 2最后的break, 保存并重新编译后,再次运行,分别输入1和2:
输入1:
输入现在状态等级(-):
high翻了:)
low爆了:(
一言难尽,无法概括。。。 --------------------------------
Process exited after 0.5854 seconds with return value
请按任意键继续. . .
输入2:
输入现在状态等级(-):
low爆了:(
一言难尽,无法概括。。。 --------------------------------
Process exited after 0.4865 seconds with return value
请按任意键继续. . .
遇到break则跳出,否则一直执行
Part 5
/*编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输出提示信息"Binggo, you are right~",否则,输出提示信息"try again~"。*/
#include<stdio.h>
int main()
{
char ch;
printf("输入一个答案(A,B,C,D之一):") ;
ch=getchar(); switch(ch)
{
case 'A':printf("Binggo, you are right~");break;
default:printf("try again~");break;
}
return ;
}
或
#include<stdio.h>
int main()
{
char ch;
printf("输入一个答案(A,B,C,D之一):") ;
scanf("%c",&ch);
switch(ch)
{
case 'A':printf("Binggo, you are right~");break;
default:printf("try again~");break;
}
return ;
}
或
#include <stdio.h>
int main()
{
char ch;
printf("请输入你的答案(A,B,C or D):");
scanf("%c",&ch);
if(ch=='A')
printf("bingo,you are right~");
else
printf("try again~");
return ;
}
Plus:
第一次试验的十转二,我在第一篇中展示为死循环的错误结果,今终于做出如下改动:
#include<stdio.h>
int main()
{
int x,y,z=,k=;
printf("输入一个正整数\n");
scanf("%d",&x);
while(x!=||y!=)
{
y=x%;
x/=;
z+=y*k;
k*=;
}
printf("%d\n",z);
return ;
}
即:改变了while括号中的条件,但仅能计算十进制为1~1023的数。之后将继续不断改进。
评论地址:
https://www.cnblogs.com/jiuyuan/p/10645894.html
https://www.cnblogs.com/nuist-tyl/p/10643576.html
https://www.cnblogs.com/NyaNyaGoose/p/10640071.html
实验二实验结论&实验总结与体会的更多相关文章
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
- 20172302 《Java软件结构与数据结构》实验二:树实验报告
课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...
- 20155220java实验二 面向对象程序设计 实验报告
一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 (1) 三种代码 伪代码 产 ...
- Linux内核分析实验二:mykernel实验指导(操作系统是如何工作的)
计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要 ...
- 20145215&20145307《信息安全系统设计基础》实验二 固件设计
20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...
- 20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验二 固件设计
20145221高其&20145326蔡馨熠<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 l ...
- ORACLE 实验二
实验二:数据操纵 实验学时:4学时 实验类型:综合型 实验要求:必修 一.实验目的 1.掌握SQL数据查询语句: 2.掌握SQL聚集函数的使用. 3.掌握SQL插入.改动.删除语句的使用. 二.实验内 ...
- 2018-2019-2 学号20175223 实验二《Java面向对象程序设计》实验报告
目录 北京电子科技学院(BESTI)实验报告 实验名称:实验二 面向对象程序设计 实验内容.步骤与体会: 一.实验二 面向对象程序设计-1 二.实验二 面向对象程序设计-2 三.实验二 面向对象程序设 ...
- 实验二 用C语言表示进程的调度
实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...
随机推荐
- 用于构建 RESTful Web 服务的多层架构
作者:Bruce Sun, Java 架构师, IBM 出处:http://www.ibm.com/developerworks/cn/web/wa-aj-multitier/ 用于构建 RESTfu ...
- ZOJ 3203 Light Bulb( 三分求极值 )
链接:传送门 题意: 求影子长度 L 的最大值 思路:如果 x = 0 ,即影子到达右下角时,如果人继续向后走,那么影子一定是缩短的,所以不考虑这种情况.根据图中的辅助线外加相似三角形定理可以得到 L ...
- cron 和anacron 、日志转储的周期任务
一.cron是开机自动启动的 [root@localhost ~]# chkconfig --list | grep "cron" crond 0:off 1:off 2:on 3 ...
- 2019-03-25 Python Pandas 基本操作
新建表 data1 = { "name": ["Tom", "Bob", "Mary", "James&quo ...
- oracle 的列转行函数 listagg()
当你的表X中有A,B两列,数据如下 A B a 1 a 2 a 3 b 1 b 2 b 3 想让数据以 a|1|2|3 , b|1|2|3 格式显示可使用listagg() 1.使用listagg() ...
- AT1145 ホリドッグ
洛谷的题解区里竟然没有O(1)做法详解-- 题面就是要判断\(1+2+\dots+n\)是不是素数 很容易让人想到上面的式子事实上等于\(n(n+1)/2\) 根据质数的定义,质数只能被1和自身整除 ...
- Python3的URL编码解码
前言 博主最近在用python3练习一些爬虫脚本的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉.呈现的结果是 ==> %xx%xx%xx.如果 ...
- ASP.NET-JSON.NET技巧
第一个技巧,字符串转JSON 单条的json数据可以使用JObject.Parse将对象转化成JObject对象,你可以接着使用JsonConvert.SerializeObject方法把这个对象序列 ...
- WinServer-IIS-请求筛选
这个实在太多了,可以比较好的控制网站的访问 来自为知笔记(Wiz)
- 极路由4pro安装java(Jamvm 2.0.0 + gnu classpath 0.9.8)
首先试了gnu classpath 0.9.9,编译不过后来改成0.9.8 编译环境 OS: 64位 Ubuntu 16.04 LTS(vmware虚拟机) SDK: 用之前讲过的官方SDKmtmip ...