C语言及算法设计课程实验二:数据类型、运算符和简单的输入输出(上)

简介: C语言及算法设计课程实验二:数据类型、运算符和简单的输入输出(上)

8be264c4b3474f72a35425b6f7ed5de5.jpg


一、实验目的


e171f0e42ad844b8a46734d628f5d72a.jpg

(1) 掌握c语言数据类型,了解字符型数据和整型数据的内在关系。

(2) 掌握对各种数值型数据的正确输入方法。

(3) 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加( + + )和自减(- -)运算符的使用。

(4) 学会编写和运行简单的应用程序。

(5) 进一步熟悉C程序的编辑、编译、连接和运行的过程。


二、实验内容


2.1、输入并运行教材第3章第4题给出的程序:


(1) 输入并运行教材第3章第4题给出的程序如下所示:


#include <stdio.h>
int main()
{
  char cl, c2;
  cl = 97;
  c2 = 98;
  printf("%c %c\n"cl, c2);
  printf("%d %d\n", cl, c2);
  return 0;
}
  • ①运行以上程序,分析为什么会输出这些信息。
  • ②如果将程序第4,5行改为
cl = 197;
c2 = 198;


运行时会输出什么信息?为什么?

  • ③如果将程序第3行改为
int cl,c2;


运行时会输出什么信息?为什么?

2.2、输入第3章第5题的程序

(2) 输入第3章第5题的程序。即:

用下面的 scanf 函数输入数据,使 a = 3, b = 7, x = 8.5, y = 71.82, cl = 'A' , c2 = 'a'。问 在键盘上如何输入?

#include <stdio.h>
int main()
{
  int a, b;
  float x, y;
  char c1, c2;
  scanf("a=%d b=%d", &a, &b);
  scanf("%f %e", &x, &y);
  scanf("%c%c", &c1, &c2);
  return 0;
}

运行时分别按以下方式输入数据,观察输出结果,分析原因。


76a8789169924b8fbcd803947192ad43.png


通过此题,总结输入数据的规律和容易出错的地方。

2.3、输入以下程序:

输入以下程序:


#include <stdio.h>  
int main()
{
  int i, j, m, n;
  i = 8;
  j = 10;
  m = ++i; n = j ++;
  printf("%d, %d, %d, %d\n", i, j, m, n);
  return 0;
}

① 编译和运行程序,注意i,j,m,n各变量的值。

② 将第6,7行改为

m = i++;
n = ++j;


再编译和运行,分析结果。

③ 程序改为

#include <stdio.h>
int main()
{
  int i, j;
  i = 8;
  j = 10;
  printf("%d,%d\n", i++, j ++);
}


再编译和运行,分析结果。

④ 在③的基础上,将printf语句改为

printf("%d, %d\n", ++i, ++j);


再编译和运行。

⑤ 再将printf语句改为

printf("%d, %d, %d, %d\n", i, j, i++, j++);


再编译和运行,分析结果。

⑥ 程序改为:

#include <stdio.h>
int main()
{
  int i, j, m = 0, n = 0;
  i = 8;
  j = 10;
  m += i ++; n -= --j;
  printf("i= %d,j= %d,m= %d,n= %d\n", i, j, m, n);
  return 0;
}

再编译和运行,分析结果。

2.4、程序设计题:假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序。


(4)假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序.(第3章第1题)

计算公式为:


92165bac66544397a9d58af8f719e8db.png


r为年增长率,n为年数,p为与现在相比的倍数。

  • ① 输入自己编好的程序,编译并运行,分析运行结果。
  • ② 年增长率不在程序中指定,改用scanf函数语句输入,分别输入7%,8%,10%。观察结果。
  • ③ 在程序中增加printf函数语句,用来提示输入什么数据,说明输出的是什么数据。


三、实验步骤


a60caa6021d8450890158252bc55c13e.jpg


3.1、数据类型、运算符和简单的输入输出实验题目1:输入并运行教材第3章第4题给出的程序:

(1) 输入并运行教材第3章第4题给出的程序如下所示:

#include <stdio.h>
int main()
{
  char cl, c2;
  cl = 97;
  c2 = 98;
  printf("%c %c\n"cl, c2);
  printf("%d %d\n", cl, c2);
  return 0;
}
  • ①运行以上程序,分析为什么会输出这些信息。

运行以上程序,输出这些信息如下所示


d3f7c8e9bfa94c72818c8f9837717810.png


 error C2146: 语法错误: 缺少“)”(在标识符“cl”的前面)
 warning C4473: “printf”: 没有为格式字符串传递足够的参数
 message : 占位符和其参数预计 2 可变参数,但提供的却是 0 参数
 message : 缺失的可变参数 1 为格式字符串“%c”所需
 error C2059: 语法错误:“)”
2>已完成生成项目“2-数据类型、运算符和简单的输入输出.vcxproj”的操作 - 失败。
========== 全部重新生成: 成功 1 个,失败 1 个,跳过 0 个 ==========


错误的原因在于printf("%c %c\n"cl, c2);中,在c1前面缺少了逗号。

已改为如下所示

printf("%c %c\n", cl, c2);


编译运可以通过,如下所示


f41cf1b5fbf74359b18252680633b4c0.png


  • ②如果将程序第4,5行改为
cl = 197;
c2 = 198;


运行时会输出什么信息?为什么?

如果将程序第4,5行改为

cl = 197;

c2 = 198;

运行结果如下


1cfe9f5bce014900a6ed4d82c5baa962.png


可以看到输出的是

??

-59 -58

  • ③如果将程序第3行改为
int cl,c2;


运行时会输出什么信息?为什么?

如果将程序第3行改为

int cl,c2;

输出的结果为如下所示


06e197954d664d60a5d24bd0028fa671.png

将第3行改为


int cl,c2;

输出的结果为

a b

97 98


3.2、数据类型、运算符和简单的输入输出实验题目2:输入第3章第5题的程序


(2) 输入第3章第5题的程序。即:

用下面的 scanf 函数输入数据,使 a = 3, b = 7, x = 8.5, y = 71.82, cl = 'A' , c2 = 'a'。问 在键盘上如何输入?

#include <stdio.h>
int main()
{
  int a, b;
  float x, y;
  char c1, c2;
  scanf("a=%d b=%d", &a, &b);
  scanf("%f %e", &x, &y);
  scanf("%c%c", &c1, &c2);
  printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n", a, b, x, y, c1, c2);
  return 0;
}

运行时分别按以下方式输入数据,观察输出结果,分析原因。



76a8789169924b8fbcd803947192ad43.png


输入数据的方式


a=3,b=7,x=8.5,y=71.82,A,a回车

输入与输出结果如下所示

a=3,b=7,x=8.5,y=71.82,A,a
a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=,,c2=b


bfa0e30032f5438f9c2e89fb1a5984f2.png

  1. a=3 b=7 x=8.5 y=71.82 A a回车

输入与输出结果如下所示

a=3 b=7 x=8.5 y=71.82 A a
a=3,b=-858993460,x=-107374176.000000,y=-107374176.000000,c1=b,c2==

79c184fc88574e36adce454df0e9121f.png


  1. a=3 b=7 8.5 71.82 A a回车

输入与输出结果如下所示

a=3 b=7 8.5 71.82 A a
a=3,b=7,x=8.500000,y=71.820000,c1= ,c2=A


c2f8859f64984cc59ea0cf3ac51b9298.png

  1. a=3 b=7 8.5 71.82Aa回车

输入与输出结果如下所示

a=3 b=7 8.5 71.82Aa
a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a


56e436be8d7d4933a6d3d9848d22de12.png


  1. 3 7 8.5 71.82Aa回车

输入与输出结果如下所示

3 7 8.5 71.82Aa
a=-858993460,b=-858993460,x=3.000000,y=7.000000,c1= ,c2=8


5d42e90428bd448faf9f99e8489203c0.png


  1. a=3 b=7回车
    8.5 71.82回车
    A回车
    a回车

输入与输出结果如下所示

a=3 b=7
8.5 71.82
A
a=3,b=7,x=8.500000,y=71.820000,c1=
,c2=A

b9ae16910632428dbed4af2bc8ea23f0.png


  1. a=3 b=7回车
    8.5 71.82回车
    Aa回车

输入与输出结果如下所示


a=3 b=7
8.5 71.82
Aa
a=3,b=7,x=8.500000,y=71.820000,c1=
,c2=A

a9c6b80014f74d3b900f4112cd2fecf2.png


8. a=3 b=7回车

8.5 71.82Aa回车

输入与输出结果如下所示

a=3 b=7
8.5 71.82Aa
a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a

4250602742a94ee593a6f5ce5a8a0794.png

通过此题,总结输入数据的规律和容易出错的地方。

  • scanf("a=%d b=%d", &a, &b);在输入的时候,应该和a=%d b=%d保持一致:a=3 b=7
  • scanf("%f %e", &x, &y);在输入的时候,应该和%f %e保持一致:8.5 71.82
相关文章
|
2月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
159 2
|
1月前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
2月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
68 1
|
12天前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
31 1
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
63 8
|
1月前
|
C语言
【C语言】条件运算符详解 - 《 A ? B : C 》
条件运算符(也称为三元运算符)是C语言中唯一的三元运算符。它通常用于替代简单的 `if-else` 语句。
161 6
|
1月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
2月前
|
存储 缓存 算法
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
62 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
62 1
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
82 1