实验1 C语言输入输出和简单程序编写

news/2024/12/27 1:53:23/文章来源:https://www.cnblogs.com/andongni51/p/18434138

一,实验目的

1. 会使用C语言程序开发环境(vs2010/devc++等),能熟练、正确使用它们编写、编译、运行、调 试C程序

2. 知道C程序结构和编码规范,能正确使用

3. 能正确、熟练使用C语言输入输出函数: scanf() , printf() , getchar() , putchar()

4. 能灵活、组合使用基本数据类型、运算符和输入输出语句编程解决简单计算/应用问题 

二,实验准备

1. 一个完整的c程序结构和书写规范

2. C程序的编写、编译、运行、调试方法

3. C语言中标识符命名规则、常量、变量;运算符、表达式及其混合计算规则

4. C输入输出函数用法 

三,实验内容

任务一:

 

源代码(垂直方向上打印两个字符小人的c程序)

 1 #include<stdio.h>
 2 int main()
 3 {   int i=0;
 4     while(i<2){
 5     printf(" 0 \n");
 6     printf("<H>\n");
 7     printf("I I\n");
 8     i=i+1;
 9     }
10     return 0;    
11  } 

 

运行结果

 

源代码(水平方向上打印两个字符小人的c程序)

 

 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     for(int i=0;i<2;i++){
 5         printf(" 0\t");
 6     }
 7     printf("\n");
 8     for(int i=0;i<2;i++){
 9         printf("<H>\t");
10     }
11     printf("\n");
12     for(int i=0;i<2;i++){
13         printf("I I\t");
14     }
15     printf("\n");
16     return 0;
17  } 

 

运行结果

 

 

 

 

 

任务二:

源代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     double a,b,c;
 5     while (scanf("%lf%lf%lf",&a,&b,&c)!=EOF)
 6     
 7     if ((a + b > c) && (a + c > b) && (b + c > a))
 8     
 9     
10     printf("能构成三角形\n");
11     else
12     
13     printf("不能构成三角形\n");
14     return 0;
15  } 

运行代码

 

 

任务三:

 

源代码

 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     char ans1,ans2;
 5     char jixu;
 6 do{
 7     
 8     printf("每次课前认真预习、课后及时复习了没?" 
 9     "(输入y或Y表示有,输入n或N表示没有):");
10     ans1=getchar();
11     getchar();
12     
13     
14     printf("\n动手敲代码实践了没?(输入y或Y表示敲"
15     "了,输入n或N表示木有敲):");
16     ans2=getchar();
17     getchar();
18     
19     
20     if ((ans1==ans2)||(ans1=='y'&&ans2=='Y')||(ans1=='Y'&&ans2=='y'))
21     {printf("\n罗马不是一天建成的,继续保持哦:)\n");}
22     else
23     {printf("\n罗马不是一天建成的,我们来建设吧\n\n");}
24     
25     
26     printf("按任意键退出,按N继续:");
27     jixu=getchar();
28     getchar();
29 }   while(jixu =='N' || jixu =='n');
30     return 0;
31  } 

 

运行代码

 问题思考:

getchar()是用来清空输入缓冲区或者处理我们输入的规范性,如果去掉getchar()可能会导致程序反复运行过程中错误读取

到我们输入的回车或者空格。导致输入不规范而导致报错。

 

任务四:

 

源代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4  double x, y;
 5  char c1, c2, c3;
 6  int a1, a2, a3;
 7 
 8  scanf("%d,%d,%d", &a1, &a2, &a3);
 9  printf("a1 = %d, a2 = %d, a3 = %d\n", a1,a2,a3);
10  
11  scanf("%c%c%c",&c1,&c2, &c3);
12  printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);
13  
14  scanf("%lf,%lf", &x, &y);
15  printf("x = %lf, y = %lf\n",x, y);
16  return 0;
17 }

 

 

运行代码

 

 

 

任务五:

 

源代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4  int year;
 5  long long miao;
 6  long long yu;
 7  printf("请输入秒数:"); 
 8  scanf("%lld",&miao);
 9  year=miao/(365*24*60*60);
10  yu=miao%(365*24*60*60);
11 if (yu>=5 * 24 * 60 * 60){year++;}    
12 printf("%lld秒约等于%d年\n",miao,year);
13 return 0;
14 }

 

 

运行代码

 

 

任务六:

 

 1 #include <stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5  double x, ans;
 6  printf("请输入要求365次方的数:");
 7  while (scanf("%lf", &x)!=EOF){
 8 
 9  ans = pow(x, 365);
10  printf("%.2f的365次方: %.2f\n", x, ans);
11  printf("\n");
12  }
13  
14  return 0;
15 }

 

 

代码运行

 

 

任务七:

 源代码

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5  double huashi,sheshi;
 6  printf("请输入摄氏温度:");
 7  while(scanf("%lf",&sheshi) != EOF)
 8  {
 9  huashi= sheshi*(9.0/5.0)+32;
10 printf("摄氏度c = %.2f时,华氏度f = %.2f\n",sheshi,huashi);
11 printf("\n"); 
12  } 
13  
14  return 0;
15  }

 

 

代码运行

 

 

任务八:

 

源代码

 

 1 #include <stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5  double area,s;
 6  int a,b,c;
 7  printf("三角形的三边长:\n"); 
 8  while(scanf("%d %d %d", &a,&b,&c) != EOF)
 9  {
10  s=(a+b+c)/2;
11  area = sqrt(s*(s-a)*(s-b)*(s-c));
12 printf("a = %d, b = %d, c = %d, area = %.3f\n", a, b,c,area);
13 printf("\n"); 
14  } 
15  
16  return 0;
17  }

 

代码运行

 四,实验结论

1,实验任务1

最简单的打印就是一个一个输入,但是注意输入后的换行符"\n"它是从左上到右下的斜线。

当涉及到打印水平方向两个小人的时候,我采用了for 函数,得到了水平打印的效果,但是有很多细节,比方説printf输出时的空格要几个才能对齐,我一次一次试才得到了最终想要的结果。

2,实验任务2

关于构成三形,涉及到边长是小数的可能,就定义为了double 类型,所以用scanf输入的时候用的是%lf .用了while (scanf("%lf%lf%lf",&a,&b,&c)!=EOF)来达到了多次运行输入的效果。还有逻辑运算符&&(与)以及在使用if while for 这些函数的时候没有分号。还有多次运行输入的时候,输出的语句后的\n的换行效果使数据直观。

3,实验任务3

在写这个代码时我用了另一种多次运行输入的方式 do  while  这里有定义char类型,所以为了避免输入时空格等输入使输入数据不规范,我用了getchar()跟在了ans*=getchar()后来清空输入缓冲区。还有就是字符类型用的是单引号’c’

4,实验任务4

这个实验用了double int char 三个类型。注意输入输出double 类型时用的是%lf,(不说明,double类型默认输出保留小数点后6位)然后就是字符匹配的时候&符号可以用来获取变量地址,这样的话输入数据并按下 Enter 键后,scanf 会根据格式字符串读取输入,并将读取的数据存储到提供的地址中。还有就是不要忘记printf后面的分号,并且是英文的分号

5,实验任务5

这里的秒数是很大的整数,所以用了long long数据类型来存储miao 和yu;相应的输出用的是%lld取的首字母。还有就是%除了是格式化输出的标志,也用来取模。表示求余数。

6,实验任务6

这里的头文件多了一个math 库,这样在使用一乘方,幂方以及开根号,三角函数等就方便了且不用再定义。pow(a,b)求的是a的b次方,其中pow函数接受double 类型的参数,返回值也是double.使用这类函数一定要包含<math,h>头文件

7,实验任务7

这是温度的转换,主要用来套用之前的重复输入测试值的while函数的方法。

8,实验任务8

这道题很综合,用了<math,h>头文件,重复输入测试值的while函数的方法,还有格式化输出保留小数点后几位,以及输出时,用空格,逗号等字符来控制输出格式。

五,实验总结

 

知识点:

1,double类型的输入输出用%lf

2.数据很大的整数用long long 来定义,同时输入输出用&llf

3,来多组数据多次测试时,用while ,do while ,都可以。以及用while和scanf 和!=EOF的方法

4,printf控制输出可以用空格和逗号以及其它字符来格式化输出

5,有时候写的时候用英文半角输入,有时候会因为输入了中文,而出现中文的;来表示英文的;不一样的

6,多动手,少纸上谈兵。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/806432.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VScode Cmake-tools 部分问题记录

我的 Visual Studio Code 先前一直安装了 cpp-tools 和 cmake-tools。随后,我升级了我的 GCC 环境版本。然而,重新启动 Visual Studio Code 后,旧的 GCC 版本仍保留在工具包中。起初,我以为是 cpp-tools 插件的问题,一直无法解决这个 bug。后来卸载了相关插件后才发现是 c…

数组0.1

一维数组 数组的运用场合 当我们需要涉及的变量特别多,光想名字都要想半天 所以引入数组 Q: (1)在程序中怎样存放100个学生的成绩? (2)定义100个整型变量吗? (3)C语言中的解决方案是……? A: (1)存储学生成绩用整型数组 mark[100]; (2)存储一行文字用字符数组 …

opencascade AIS_WalkDelta、AIS_ViewInputBuffer源码学习工作

opencascade AIS_WalkDelta 前言 运行方法 1. 空构造函数。 AIS_WalkDelta() : myIsDefined(false), myIsJumping(false), myIsCrouching(false), myIsRunning(false) {} 2. 返回平移组件。 const AIS_WalkPart& operator[] (AIS_WalkTranslation thePart) ; 3. 返回平移组…

2023-9-30

标签之文本标签列表标签之有序列表列表标签之无序列表

[物理]运动学基础理论串讲

运动学基础理论串讲 公式 推论 前言:运动学中,所有的公式都有其对应的几何意义。解决问题时,我们不应死套公式,应当在图像中解决问题。在图像中看清问题的本质。 \(v_t=v_0+at\)。已知初速度和加速度求末速度。 \(x=v_0t+\dfrac{1}{2}at^2\)。算位移的基础公式。 \(v_t^2-…

深度学习(输出模型中间特征)

深度学习骨干网络一般会包含很多层,这里写了一个脚本,可以保存骨干网络的所有特征图。 代码主要用了get_graph_node_names和create_featrue_extractor这两个函数。 get_graph_node_names是得到所有特征节点名字。 create_featrue_extractor是提取对应节点输出的特征tensor。 …

9月30日记录

完成了一个能够列出30道四则运算的java程序, 题目要求:乘法不超过四位数,减法大于零,除法结果为整数; 实现可视化界面,并且能够计算得分与计时;点击查看代码 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Actio…

Connector C++ 连接 MySQL 数据库之增删改查

在 vcpkg 中折腾了 mysql-connector-cpp 8.0 很久,一直连接不上远程数据库,后面查官方文档,mysql-connector-cpp 8.0 好像只支持 MySQL 8.0 以上的数据库,本来想把远程服务器上的 MySQL 升级到 MySQL 8.0,后面发现测试服务器的配置有点拉跨,架不住 MySQL 8.0,但是 vcpkg…

9.28 开发MES系统日志四

今天开发MES系统的流程图以及数据库表,因为对MES系统的不了解,所以先加上了最基本的人员管理以及车间管理等基本表信息。

Hadoop 配置hbase

首先要启动hadoop start-dfs.shstart-yarn.sh 查看一下自己的hadoop版本,确保自己下载的hbase与自己的hadoop版本匹配 hadoop version Index of /apache/hbase (tsinghua.edu.cn) 下载hbase 选择倒数第三个下载 下载完成后 进入 /export/server/ 上传压缩包后 完成解压 重命…

.net core elsa工作流程框架源码学习之Pipeline管道的理解

elsa这个框架运用管道来实现切面编程,切面编程的意义我的理解是在于:把业务逻辑和其他与业务不相关的逻辑进行解耦,或者把通用的逻辑:异常处理,日志处理等在不侵入业务逻辑的情况下,服务与这些业务。接下来,详细看看elsa框架的管道是怎么实现的。 主要依靠,下面这个委托…

省前

111由于 Aqr 一直不更新博客,所以只能自己发了