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
相关文章
|
14天前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
25 4
|
15天前
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
41 4
|
3月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
103 1
|
1天前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
16 2
|
2月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
194 87
|
16天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
63 8
|
16天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
54 7
|
2月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
196 72
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
109 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
下一篇
无影云桌面