实验二实验结论&实验总结与体会
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.输出进程运行 ...
随机推荐
- python3三级菜单的访问,并按q退出
#/usr/bin/env python#yehui'''作业三:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典'''import readlineclass MultiLeve ...
- 通过wget下载tomcat
wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.42/bin/apache-tomcat-8.0.42.tar.gz 注意:下载之前确 ...
- [WPF,XAML] 跳动的心
原文:[WPF,XAML] 跳动的心 没什么艺术细胞,原谅,原谅! <Canvas Width="0" Height="0"> <Canvas ...
- 【codeforces 768F】Barrels and boxes
[题目链接]:http://codeforces.com/problemset/problem/768/F [题意] 让你把f个food和w个wine装在若干个栈里面; 每个栈只能装food或者是wi ...
- tomcat使用及原理
1,Tomcat作为Servlet容器的基本功能 2,Tomcat的组成结构 Tomcat本身由一列的可配置的组件构成,其中核心组件是Servlet容器组件,它是所有其他Tomcat组件的顶层容器.T ...
- Mysql怎么样避免全表扫描,sql查询优化
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引: 尝试下面的技巧以避免优化器错选了表扫描: 使用ANALYZE TABLE tbl_name为扫 ...
- COGS——T 1168. 机器调度
http://www.cogs.pro/cogs/problem/problem.php?pid=1168 ★★ 输入文件:machine.in 输出文件:machine.out 简单对比 ...
- QQ在线人数统计图数据解析
转载请注明出处:http://blog.csdn.net/xiaoy_h/article/details/27980851 我相信非常多人一定去过这个地方: http://im.qq.com/onli ...
- Swift开发教程--怎样使UITableViewController背景透明
self.tableView.backgroundView? .backgroundColor = UIColor.clearColor(); self.tableView.backgroundCol ...
- 多本Web前端深度修炼书籍(提供网盘下载链接)
书籍介绍:这本书涵盖了html5新增标签和功能,而且提供了jquerymobile,Phonegap,Sencha Touch框架的介绍和应用,最后还带了一个移动web应用的样例,绝对是移动web开发 ...