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

  1. /*
  2. 《C语言程序设计教程学习指导》p118 实验内容(1)
  3. 这是一个常用格式控制符使用示例
  4. 运行程序,结合运行结果,对照每一行printf()中的格式控制符,理解和巩固其功能和用法
  5. */
  6. #include <stdio.h>
  7. int main() {
  8. int x=;
  9. float f=123.456;
  10. double m=123.456;
  11. char ch='a';
  12. char a[]="Hello, world!"; // 定义一个数组a,数组中连续存放了字符串常量hello,world!
  13. int y=, z=;
  14. printf("%d %d\n", y, z);
  15. printf("y=%d, z=%d\n", y,z);
  16. printf("%8d,%2d\n", x,x);
  17. printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f);
  18. printf("%lf\n",m);
  19. printf("%3c\n", ch);
  20. printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
  21. return ;
  22. }

注意修饰符的使用。对于整数、实数和字符串,[.precision]的功能并不相同。plus:对于无符号数和实数,[#]的作用也大相径庭;有符号的整数、无符号的整数、实数、字符和字符串的输出一般形式不同。

更改前:

  1. /*
  2. 《C语言程序设计教程学习指导》p119 实验内容(2)
  3. 这是一个格式化输入输出函数及格式符使用练习
  4. 找出两处错误,修改并运行程序
  5. 为a1,a2,a3,c1,c2,c3,x,y输入数据,使得:
  6. a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5
  7. */
  8. #include <stdio.h>
  9. int main() {
  10. double x,y;
  11. char c1,c2,c3;
  12. int a1,a2,a3;
  13. scanf("%d%d%d",a1,a2,a3);
  14. printf("%d,%d,%d\n",a1,a2,a3);
  15. scanf("%c%c%c",&c1,&c2,&c3);
  16. printf("%c%c%c\n",c1,c2,c3);
  17. scanf("%f,%lf",&x,&y);
  18. printf("%f,%lf\n",x,y);
  19. return ;
  20. }

更改后:

  1. /*
  2. 《C语言程序设计教程学习指导》p119 实验内容(2)
  3. 这是一个格式化输入输出函数及格式符使用练习
  4. 找出两处错误,修改并运行程序
  5. 为a1,a2,a3,c1,c2,c3,x,y输入数据,使得:
  6. a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5
  7. */
  8. #include <stdio.h>
  9. int main() {
  10. double x,y;
  11. char c1,c2,c3;
  12. int a1,a2,a3;
  13. scanf("%d%d%d",&a1,&a2,&a3);
  14. printf("%d,%d,%d\n",a1,a2,a3);
  15. scanf("%c%c%c",&c1,&c2,&c3);
  16. printf("%c%c%c\n",c1,c2,c3);
  17. scanf("%lf,%lf",&x,&y);
  18. printf("%lf,%lf\n",x,y);
  19. return ;
  20. }

即第13行缺少了取地址运算符"&";双精度变量x对应双精度格式%lf

plus:

务必原样输入的情况:格式控制符中出现常规字符(包括转义字符)

使用格式控制符%c输入单个字符空格和转义字符均作为有效字符被输入

系统认为数据输入结束的情况:1、空格、回车、tab;2、[width];3、非法输入

在输入多个数据时若前面数据的输入遇到非法字符且输入的非法字符不是格式控制字符串中的常规字符则将影响后面数据输入

Part2:

①putchar()

  1. /*
  2. putchar()可以用于在屏幕上输出单个字符
  3. 括号中要给出想要输出的字符参数,参数可以是字符型常量/变量/表达式
  4. 如果使用这个函数,需要在程序前面加上#include <stdio.h>
  5. */
  6. #include <stdio.h>
  7. int main() {
  8. char ch;
  9. ch = 'A';
  10. putchar(ch); // 参数ch是字符型变量
  11. putchar(ch+); // 参数ch+32是字符型表达式
  12. putchar('\x41'); // 参数是字符型常量,是用十六进制表示的转义字符,是'A'的ASCⅡ码值
  13. putchar('\n'); // 参数\n是字符型常量,是转义字符,表示换行
  14. return ;
  15. }

ch为一个字符变量/常量/表达式,=printf("%c",ch)

②getchar()

  1. /*
  2. getchar()可以用于从键盘上输入单个字符
  3. 括号中不需要参数
  4. 如果输入成功,函数会返回用户从键盘输入的字符
  5. 如果使用这个函数,需要在程序前面加上#include <stdio.h>
  6. */
  7. #include <stdio.h>
  8. int main() {
  9. char ch;
  10. ch = getchar(); // 用户从键盘输入字符,如果输入成功,输入的字符被赋值给ch
  11. putchar(ch); // 使用putchar()输出字符变量ch中存放的字符
  12. printf("%c",ch); // 使用printf()和格式符%c输出单个字符
  13. return ;
  14. }

功能为输入一个字符,若输入不止一个字符,则后续的getchar调用不会再等待用户按键而直接读取缓冲区中的字符直到读完

Part3:if语句

  1. /*
  2. 单分支if语句使用示例
  3. 从键盘上输入两个整数分别给a和b
  4. 如果a>b,就交换,使得a里面存放小的数,b里面存放大的数
  5. */
  6. #include <stdio.h>
  7. int main() {
  8. int a,b;
  9. int t; // 用于交换a和b时,作为中间变量
  10. printf("输入两个整数给a和b:\n");
  11. scanf("%d%d",&a,&b);
  12. if(a>b) {
  13. t = a;
  14. a = b;
  15. b = t;
  16. }
  17. printf("a=%d, b=%d\n",a,b);
  18. return ;
  19. }

仅当if后只有一条语句时,{}才能省略

if...else

  1. /*
  2. 二分支if语句使用示例
  3. 从键盘上输入一个整数给n,判断n是奇数还是偶数
  4. */
  5. #include <stdio.h>
  6. int main() {
  7. printf("输入一个整数给n:\n");
  8. scanf("%d",&n);
  9. if(n%)
  10. printf("n是奇数.\n");
  11. else
  12. printf("n是偶数.\n");
  13. return ;
  14. }

If...else if

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

以上三种条件语句简洁明了,没有过多解读。

Part 4 switch

  1. /*
  2. switch语句使用示例
  3. 输入1,2,3...的不同整数,显示不同提示信息
  4. */
  5. #include <stdio.h>
  6. int main() {
  7. int level;
  8. printf("输入现在状态等级(1-5): ");
  9. scanf("%d",&level);
  10. switch(level) {
  11. case : printf("high翻了:)\n"); break;
  12. case : printf("low爆了:(\n"); break;
  13. default: printf("一言难尽,无法概括。。。\n");
  14. }
  15. return ;
  16. }

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

去掉case 1和case 2最后的break, 保存并重新编译后,再次运行,分别输入1和2:

输入1:

  1. 输入现在状态等级(-):
  2. high翻了:)
  3. low爆了:(
  4. 一言难尽,无法概括。。。
  5.  
  6. --------------------------------
  7. Process exited after 0.5854 seconds with return value
  8. 请按任意键继续. . .

输入2:

  1. 输入现在状态等级(-):
  2. low爆了:(
  3. 一言难尽,无法概括。。。
  4.  
  5. --------------------------------
  6. Process exited after 0.4865 seconds with return value
  7. 请按任意键继续. . .

遇到break则跳出,否则一直执行

Part 5

 
  1. /*编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输出提示信息"Binggo, you are right~",否则,输出提示信息"try again~"。*/
  2. #include<stdio.h>
  3. int main()
  4. {
  5. char ch;
  6. printf("输入一个答案(A,B,C,D之一):") ;
  7. ch=getchar(); switch(ch)
  8. {
  9. case 'A':printf("Binggo, you are right~");break;
  10. default:printf("try again~");break;
  11. }
  12. return ;
  13. }

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char ch;
  5. printf("输入一个答案(A,B,C,D之一):") ;
  6. scanf("%c",&ch);
  7. switch(ch)
  8. {
  9. case 'A':printf("Binggo, you are right~");break;
  10. default:printf("try again~");break;
  11. }
  12. return ;
  13. }

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char ch;
  5. printf("请输入你的答案(A,B,C or D):");
  6. scanf("%c",&ch);
  7. if(ch=='A')
  8. printf("bingo,you are right~");
  9. else
  10. printf("try again~");
  11. return ;
  12. }

Plus:

第一次试验的十转二,我在第一篇中展示为死循环的错误结果,今终于做出如下改动:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int x,y,z=,k=;
  5. printf("输入一个正整数\n");
  6. scanf("%d",&x);
  7. while(x!=||y!=)
  8. {
  9. y=x%;
  10. x/=;
  11. z+=y*k;
  12. k*=;
  13. }
  14. printf("%d\n",z);
  15. return ;
  16. }

即:改变了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

实验二实验结论&实验总结与体会的更多相关文章

  1. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  2. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  3. 20172302 《Java软件结构与数据结构》实验二:树实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参 ...

  4. 20155220java实验二 面向对象程序设计 实验报告

    一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 (1) 三种代码 伪代码 产 ...

  5. Linux内核分析实验二:mykernel实验指导(操作系统是如何工作的)

    计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要 ...

  6. 20145215&20145307《信息安全系统设计基础》实验二 固件设计

    20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...

  7. 20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验二 固件设计

    20145221高其&20145326蔡馨熠<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 l ...

  8. ORACLE 实验二

    实验二:数据操纵 实验学时:4学时 实验类型:综合型 实验要求:必修 一.实验目的 1.掌握SQL数据查询语句: 2.掌握SQL聚集函数的使用. 3.掌握SQL插入.改动.删除语句的使用. 二.实验内 ...

  9. 2018-2019-2 学号20175223 实验二《Java面向对象程序设计》实验报告

    目录 北京电子科技学院(BESTI)实验报告 实验名称:实验二 面向对象程序设计 实验内容.步骤与体会: 一.实验二 面向对象程序设计-1 二.实验二 面向对象程序设计-2 三.实验二 面向对象程序设 ...

  10. 实验二 用C语言表示进程的调度

    实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...

随机推荐

  1. 【XSY2892】【GDSOI2018】谁是冠军

    题目来源:noi2018模拟测试赛(二十三)T3 san 为什么noi模拟赛里会做到省选原题啊…… 题意: Description 有n个人,简单起见把他们编号为1到n,每个人有三项指标分别是攻击力, ...

  2. HTML特殊符号对照表、常用的字符实体

    来源:http://tool.xker.com/htmlchar.php 最常用的字符实体 显示结果 描述 实体名称 实体编号   空格     < 小于号 < < > 大于号 ...

  3. HDU 2842 Chinese Rings( 递推关系式 + 矩阵快速幂 )

    链接:传送门 题意:解 N 连环最少步数 % 200907 思路:对于 N 连环来说,解 N 连环首先得先解 N-2 连环然后接着解第 N 个环,然后再将前面 N-2 个环放到棍子上,然后 N 连环问 ...

  4. freeswitch GUI界面(portal)

    1.控制台 加载模块 load mod_xml_rpc 2.ip:8080/portal 进行登录  账号 : freeswitch  密码 : works 让模块随着freeswitch启动进行加载 ...

  5. python基础知识部分练习大全

    python基础知识部分练习大全   1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py   #必须在首行 ...

  6. css所有属性(table,行列组)总结

    概述: CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: CSS声明总是以分号(;)结束,声明组以大括号({})括起来: 一.注释: CSS注释以 "/*" 开始, ...

  7. ASP.NET-前台view返回model集合

    有时操作列表的时候想一次提交一个model集合,这样后台controller直接接受后就可以直接进行操作了,不用使用js,比较方便,也体现了MVC的Binding模式的优势,方法如下: 准备: 1.两 ...

  8. 2015级C++第2周实践项目

    [项目1 - 宣告"主权"] 你已经是CSDN博客主了,用IT人特有的方式,编一段程序.在屏幕上输出你想说的话.按要求公布博文,作为我们的开山之作. [项目2 - 胖子不想说体重] ...

  9. Oracle RAC --安装图解

    规划:所用linux系统以虚拟化方式安装在esx上,配置有内网的yum源,各分配有16G存储,下面为简单拓扑图 一,下载软件1,地址:http://www.oracle.com/technology/ ...

  10. ios上有时候提交按钮点击两次才可以取消输入框软键盘

    ios上有时候提交按钮点击两次才可以取消输入框软键盘,点击第一次软键盘消失,点击第二次输入框页面消失,这样用户体验不好.我的做法是用 touchstart 代替click来处理 反应快,但是有时候会出 ...