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

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

时间:2023-09-28 11:58:30浏览次数:36  
标签:lf 10 int double 输入输出 C语言 printf 编写 include

一、实验目的

  1. 会使用C语言程序开发环境(vs2010/devc++等),能熟练、正确使用它们编写、编译、运行、调 试C程序;
  2. 知道C程序结构和编码规范,能正确使用;
  3. 能正确、熟练使用C语言输入输出函数: scanf() , printf() , getchar() , putchar() ;
  4. 能灵活、组合使用基本数据类型、运算符和输入输出语句编程解决简单计算/应用问题

二、实验准备

  1.  一个完整的c程序结构和书写规范
  2. C程序的编写、编译、运行、调试方法
  3. C语言中标识符命名规则、常量、变量;运算符、表达式及其混合计算规则
  4. C输入输出函数用法

三、实验内容

1. 实验任务1

task1:

在c开发环境下,编写、编译、运行一个简单程序,实现在屏幕上打印一个字符小人。

1 #define _CRT_SECURE_NO_WARNINGS
2 #include <stdio.h>
3 int main()
4 {
5     printf(" O \n");
6     printf("<H>\n");
7     printf("I I\n");
8     return 0;
9 }

task1_1:

在垂直方向上打印出两个字符小人。

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

task1_2:

在水平方向上打印出两个字符小人。

1 #define _CRT_SECURE_NO_WARNINGS
2 #include <stdio.h>
3 int main()
4 {
5     printf(" O     O\n");
6     printf("<H>    <H>\n");
7     printf("I I    I I\n");
8     return 0;
9 }

2. 实验任务2

task2:

将程序task2.c补充完整,使得程序能够实现如下功能:从键盘上输入三角形三边,判断它能否构成三角形。

 1 // 从键盘上输入三个数据作为三角形边长,判断其能否构成三角形
 2 // 构成三角形的条件: 任意两边之和大于第三边
 3 #define _CRT_SECURE_NO_WARNINGS
 4 #include <stdio.h>
 5 int main()
 6 {
 7     float a, b, c;
 8     // 输入三边边长
 9     scanf("%f%f%f", &a, &b, &c);
10     // 判断能否构成三角形
11     // 补足括号里的逻辑表达式
12     if (a + b > c && a + c > b && b + c > a)
13         printf("能构成三角形\n");
14     else
15         printf("不能构成三角形\n");
16     return 0;
17 }

3. 实验任务3

task3:

将程序task3.c补充完整。使得程序实现如下功能:

  • 只有当用户两次回答都是小写y或大写Y时,才会打印输出:罗马不是一天建成的, 继续保持哦:)
  • 否则,会打印输出:罗马不是一天毁灭的, 我们来建设吧
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 int main()
 4 {
 5     char ans1, ans2; // 用于保存用户输入的答案
 6     printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有) :");
 7     ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1
 8     getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。
 9     printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : ");
10     ans2 = getchar();
11     if ((ans2 == 'y' && ans1 == 'y') || 
12         (ans1 == 'Y' && ans2 == 'Y') ||
13         (ans1 == 'Y' && ans2 == 'y') ||
14         (ans1 == 'y' && ans2 == 'Y')) // 待补足,判断用户回答ans1和ans2都是小写y或大写Y
15         printf("\n罗马不是一天建成的, 继续保持哦:)\n");
16     else
17         printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
18     return 0;
19 }

4. 实验任务4

task4:

在C开发环境下,输入如下代码。 程序中line9和line15包含语法错误,找出并修改错误后,编译、运行程序,从键盘正确输入数据。

使得:

  • int型变量a1, a2, a3分别获得整数 1、2、3
  • char型变量c1, c2,c3分别获得字符'x' 'y' 'z'
  • double型变量x, y分别获得小数3.2和4.6
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 int main()
 4 {
 5     double x, y;
 6     char c1, c2, c3;
 7     int a1, a2, a3;
 8 
 9     scanf("%d %d %d", &a1, &a2, &a3);//变量前少取址符
10     printf("a1 = %d, a2 = %d, a3 = %d\n", a1, a2, a3);
11 
12     scanf("%c%c%c", &c1, &c2, &c3);
13     printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);
14 
15     scanf("%lf,%lf", &x, &y);//%f用来输入float类型,%lf输入double
16     printf("x = %lf, y = %lf\n", x, y);
17 
18     return 0;
19 }

5. 实验任务5

task5:

10亿秒(109s)约等于多少年?要求结果四舍五入取整。补足程序task5.c,完成计算,并打印输出。

 1 // 计算10亿秒约等于多少年,并打印输出
 2 #define _CRT_SECURE_NO_WARNINGS
 3 #include <stdio.h>
 4 int main()
 5 {
 6     int year;
 7 
 8     const double second = 1e9;
 9     double temp = ((second / 3600) / 24) / 365;
10     if (temp - (int)temp < 0.5) {
11         year = (int)temp;
12     }
13     else {
14         year = (int)temp + 1;
15     }
16 
17     printf("10亿秒约等于%d年\n", year);
18     return 0;
19 }

6. 实验任务6

task6_1:

在c开发环境下,编写、编译、运行一个简单的算术运算程序,实现以下计算。

y = x365

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <math.h>
 4 int main()
 5 {
 6     double x, ans;
 7     scanf("%lf", &x);
 8     ans = pow(x, 365);
 9     printf("%.2f的365次方: %.2f\n", x, ans);
10 
11     return 0;
12 }

task6_2:

使用task6_1.c进行运算时,要分别运行程序3次。对task6_1.c稍做修改,借助循环,使得程序运行一 次,就可以完成多次计算。

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

7. 实验任务7

task7:

编写一个简单的计算程序task7.c,实现摄氏度温度C与华氏度温度F的转换:

F = 9/5*C+32

要求:

  • 使用多组输入方式,支持运行一次程序能进行多次计算 (参考实验任务6的task6_2.c代码写法)
  • 温度保留到小数点后两位
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     double f;
 7     double c;
 8 
 9     while (scanf("%lf", &c) != EOF) {
10         f = 9.0 / 5.0 * c + 32.0;
11         printf("摄氏度c = %.2lf时, 华氏度f = %.2lf\n", c, f);
12         printf("\n");
13     }
14 
15     return 0;
16 }

8. 实验任务8

task8:

编写C程序task8.c,用海伦公式计算三角形面积。

海伦公式计算三角形面积计算式如下:

其中:

 要求:

  • 从键盘输入三角形三边边长,在屏幕上打印输出面积(面积保留到小数点后3位)
  • 使用多组输入方式,支持运行一次程序能进行多次计算 (参考实验任务6的task6_2.c代码写法)
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <math.h>
 4 
 5 int main()
 6 {
 7     double a, b, c;
 8     double s;
 9     double area;
10 
11     while (scanf("%lf %lf %lf", &a, &b, &c) != EOF) {
12         s = (a + b + c) / 2;
13         area = sqrt(s * (s - a) * (s - b) * (s - c));
14         printf("a = %d, b = %d, c = %d, area = %.3lf\n", (int)a, (int)b, (int)c, area);
15         printf("\n");
16     }
17 
18     return 0;
19 }

 四、实验结论

1. 实验任务1

实验代码

task1_1:

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

task1_2:

1 #define _CRT_SECURE_NO_WARNINGS
2 #include <stdio.h>
3 int main()
4 {
5     printf(" O     O\n");
6     printf("<H>    <H>\n");
7     printf("I I    I I\n");
8     return 0;
9 }

运行截图:

2. 实验任务2

补全代码:

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 int main()
 4 {
 5     float a, b, c;
 6     // 输入三边边长
 7     scanf("%f%f%f", &a, &b, &c);
 8     // 判断能否构成三角形
 9     // 补足括号里的逻辑表达式
10     if (a + b > c && a + c > b && b + c > a)
11         printf("能构成三角形\n");
12     else
13         printf("不能构成三角形\n");
14     return 0;
15 }

运行截图: 

 3. 实验任务3

补全代码:

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 int main3()
 4 {
 5     char ans1, ans2; // 用于保存用户输入的答案
 6     printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有) :");
 7     ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1
 8     getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。
 9     printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : ");
10     ans2 = getchar();
11     if ((ans2 == 'y' && ans1 == 'y') || 
12         (ans1 == 'Y' && ans2 == 'Y') ||
13         (ans1 == 'Y' && ans2 == 'y') ||
14         (ans1 == 'y' && ans2 == 'Y')) // 待补足,判断用户回答ans1和ans2都是小写y或大写Y
15         printf("\n罗马不是一天建成的, 继续保持哦:)\n");
16     else
17         printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
18     return 0;
19 }

运行截图:

问题回答:

getchar()可以获取‘\n’符号,因此在输入一个y,并回车后(如上图所示),'\n'符号直接被下一个getchar()获取到,导致第二个if条件为假。因此需要在中间再加一个getchar()以便下一个if语句中的getchar()获取到正确的数据。

 4. 实验任务4

补全代码:

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 int main4()
 4 {
 5     double x, y;
 6     char c1, c2, c3;
 7     int a1, a2, a3;
 8 
 9     scanf("%d %d %d", &a1, &a2, &a3);//变量前少取址符
10     printf("a1 = %d, a2 = %d, a3 = %d\n", a1, a2, a3);
11 
12     scanf("%c%c%c", &c1, &c2, &c3);
13     printf("c1 = %c, c2 = %c, c3 = %c\n", c1, c2, c3);
14 
15     scanf("%lf,%lf", &x, &y);//%f用来输入float类型,%lf输入double
16     printf("x = %lf, y = %lf\n", x, y);
17 
18     return 0;
19 }

运行截图:

5. 实验任务5

补全代码:

 1 // 计算10亿秒约等于多少年,并打印输出
 2 #define _CRT_SECURE_NO_WARNINGS
 3 #include <stdio.h>
 4 int main()
 5 {
 6     int year;
 7 
 8     const double second = 1e9;
 9     double temp = ((second / 3600) / 24) / 365;
10     if (temp - (int)temp < 0.5) {
11         year = (int)temp;
12     }
13     else {
14         year = (int)temp + 1;
15     }
16 
17     printf("10亿秒约等于%d年\n", year);
18     return 0;
19 }

运行截图:

 6. 实验任务6

实验代码:

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

运行截图:

 7. 实验任务7

实验代码:

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

运行截图:

 8. 实验任务8

实验代码:

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

运行截图:

 五、实验总结

本次实验中,我了解了c语言简单的输入输出。

标签:lf,10,int,double,输入输出,C语言,printf,编写,include
From: https://www.cnblogs.com/Cr2O3/p/17734588.html

相关文章

  • 5. 用Rust手把手编写一个Proxy(代理), 通讯协议建立, 为内网穿透做准备
    用Rust手把手编写一个Proxy(代理),通讯协议建立,为内网穿透做准备项目++wmproxy++gite:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy什么是通讯协议?在tcp的流传输过程中,可以看做是一堆的字节的集合体,是一种“流”式协议,就像河里的水,中间......
  • C语言 ---杂乱代码的记录
    #include<SDL2/SDL.h>voiddrawHeart(SDL_Renderer*renderer,intx,inty,intsize){SDL_SetRenderDrawColor(renderer,255,0,0,255);//绘制爱心形状for(intangle=0;angle<=360;angle++){floatradians=angle*(3.1......
  • C++(命名空间,输入输出)
    从堆上申请空间#include<malloc.h>int*p=(int)malloc(10sizeof(int));//malloc返回的是无类型free(p);//释放内存,不然会造成内存泄漏命名空间:用户自己定义的作用域namespaceN{//变量inta;//函数}inta;//不冲突命名空间可以嵌套在一个工程中,可以出现多个相同名称的命名......
  • C语言学习日记1.0
    大学第一节c语言课结束感慨良多啊,我不太善于总结和表达,请各位见谅。第一节课就学习了hello,world简单程序的运行和c语言的特点:1、兼具高级语言的优点和对低级语言对硬件的操作能力,具有高级语言的高层抽象和良好的可移植性等优点。2、数据类型和运算符丰富3、它是完全模块化和......
  • Django 使用模板语法编写新闻中心(爬虫获取数据)
    1.创建项目#创建项目django-adminstartprojectnews#进入项目目录cdnews#创建apppythonmanage.pystartappapp012.修改app2.1添加html进入app01文件夹在app01文件夹中添加templates文件夹在templates文件夹中添加index.html<!DOCTYPEhtml><......
  • 进阶Python,从编写Python函数开始!
    好多同学都有这样的疑惑,我学习了python的基础语法,那么具体应用该从哪里入手呢?首先大家要确定,代码必须用起来才能越来越熟练!读懂十行代码不如自己亲自上手遍写一行!代码想熟练最好的方法就是能够通过代码解决工作中的实际问题,例如完成UI自动化测试、接口测试、创建测试数据、构建测试......
  • 详解使用VS code搭建C语言环境遇到的那些坑(适合小白)
    Vscode搭建C语言环境为啥想起来要装c环境?是因为亲属家的大一新生小朋友问我关于c的问题!好吧,学c语言那是20年前的事儿了,但是在小朋友面前也不能跌份,于是乎准备温习一下c!一切代码都的从选IDE开始,网上看了一下,现在比较多的就是推荐visualstudio(vs)和visualstudiocode(vscode),如果想......
  • vscode编写markdown
    1.需求分析2.环境搭建1.需求分析最近在网上折腾了好久Markdown的写作环境,作为一个普通用户,总结一下个人对于Markdown写作环境的几点需求。由于本人刚接触Markdown不久,因此,需求也比较简单,想看具体搭建步骤的可以直接跳到第二章环境搭建:本地存储。这一点主要是出于隐私要......
  • 使用Word和PPT编写的公式无法在指定字符处对齐
    一、前言从Office2016起,Word和PowerPoint开始支持使用公式编辑器插入公式。它支持LaTex和UnicodeMath的线性格式公式,方便使用者快速上手。使用软回车可以使一个公式分开为多行表示,常见于需要逐步计算的连等式,或者冗长的多项式。同时为了美观,可以在每一行选取一个字符(运算符,......
  • 【C语言初阶篇】for语句的基本语法和使用规则!
    <br><br/><center><fontcolor="#006666">......