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

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

在这里插入图片描述

一、实验目的

在这里插入图片描述

  • (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;
}

运行时分别按以下方式输入数据,观察输出结果,分析原因。
在这里插入图片描述

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

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题)
计算公式为:在这里插入图片描述

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

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

三、实验步骤

在这里插入图片描述

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;
}
  • ①运行以上程序,分析为什么会输出这些信息。

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

在这里插入图片描述

 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);

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

在这里插入图片描述

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

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

如果将程序第4,5行改为
cl = 197;
c2 = 198;
运行结果如下

在这里插入图片描述

可以看到输出的是
??
-59 -58

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

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

如果将程序第3行改为
int cl,c2;
输出的结果为如下所示

在这里插入图片描述

将第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;
}

运行时分别按以下方式输入数据,观察输出结果,分析原因。
在这里插入图片描述

输入数据的方式

  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=,,c2=b

在这里插入图片描述

  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==

在这里插入图片描述

  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

在这里插入图片描述

  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

在这里插入图片描述

  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

在这里插入图片描述

  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

在这里插入图片描述

  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

在这里插入图片描述
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

在这里插入图片描述

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

  • 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

3.3、数据类型、运算符和简单的输入输出实验题目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各变量的值。

运行以上程序,输出如下所示

在这里插入图片描述

++i是先将变量自身加一,然后赋值给变量m。
j ++是变量先赋值给变量n, 然后在自身加一。
所以m=9, n=10

② 将第6,7行改为

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

再编译和运行运行以上程序,输出如下所示

在这里插入图片描述

i ++是变量先赋值给变量m, 然后在自身加一。
++j是先将变量自身加一,然后赋值给变量m。
所以m=8, n=11

  • 3-6的分析情况也1-2的分析类似。

③ 程序改为

#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;
}

再编译和运行运行以上程序,输出如下所示

在这里插入图片描述

3.4、数据类型、运算符和简单的输入输出实验题目4:程序设计题:假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序。

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

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

  • ① 输入自己编好的程序,编译并运行,分析运行结果。

3.4.1、编写程序

编写程序如下

3.4.1.1、for 循环方式计算百分比如下所示

	//for 循环方式计算
	for (int i = 0; i < n; i++)
	{
    
    
		p = p * (1 + r);
	}

	printf("%.3lf\n", p);

3.4.1.2、调用math函数方式计算百分比如下所示

	// 调用math函数方式
	p = 1.0;
	r = 0.09;
	n = 10;

	p = pow(1 + r, n);
	printf("%.3lf\n", p);

3.4.1.3、for 循环方式和调用math函数方式计算百分比形成综合程序如下所示

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    
    
	system("color 3E");

	double p, r;
	int n;

	p = 1.0;
	r = 0.09;
	n = 10;

	// for 循环方式
	for (int i = 0; i < n; i++)
	{
    
    
		p = p * (1 + r);
	}

	printf("%.3lf\n", p);
	
	// 调用math函数方式
	p = 1.0;
	r = 0.09;
	n = 10;

	p = pow(1 + r, n);
	printf("%.3lf\n", p);

	system("pause");
	return 0;
}

程序编译结果如下所示

在这里插入图片描述

  • ② 年增长率不在程序中指定,改用scanf函数语句输入,分别输入7%,8%,10%。观察结果。

3.4.2、年利率改为输入方式

程序如下所示

	p = 1.0;
	//r = 0.09;
	n = 10;

	scanf("%lf", &r);

	// for 循环方式
	for (int i = 0; i < n; i++)
	{
    
    
		p = p * (1 + r);
	}

	printf("%.3lf\n\n", p);
	
	// 调用math函数方式
	p = 1.0;
	//r = 0.09;
	n = 10;
	
	scanf("%lf", &r);

	p = pow(1 + r, n);
	printf("%.3lf\n", p);

分别输入7%,8%,10%运行结果如下所示

  1. 7%

在这里插入图片描述
2. 8%

在这里插入图片描述

  1. 10%

在这里插入图片描述

3.4.3、在程序中增加printf函数语句

③ 在程序中增加printf函数语句,用来提示输入什么数据,说明输出的是什么数据。
增添printf语句如下

	printf("输入年利率: ");
	printf("\n国民生产总值与现在相比增长%.3lf百分比\n\n", p);

程序运行结果如下所示

在这里插入图片描述

四、实验总结

在这里插入图片描述

本次通过C语言及算法设计课程实验二:数据类型、运算符和简单的输入输出。掌握了如下几点。

  • (1) 掌握c语言数据类型,了解字符型数据和整型数据的内在关系。
  • (2) 掌握对各种数值型数据的正确输入方法。
  • (3) 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加( + + )和自减(- -)运算符的使用。
  • (4) 学会编写和运行简单的应用程序。
  • (5) 进一步熟悉C程序的编辑、编译、连接和运行的过程。

五、实验完整程序

在这里插入图片描述

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

完整程序如下所示

#include <stdio.h>

int main()
{
    
    
	/*char cl, c2;*/
	int cl, c2;
	cl = 97;
	c2 = 98;
	printf("%c %c\n", cl, c2);
	printf("%d %d\n", cl, c2);
	return 0;
}

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

完整程序如下所示

#define _CRT_SECURE_NO_WARNINGS

#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;
}


5.3、数据类型、运算符和简单的输入输出实验题目3:输入以下程序的完整程序

完整程序如下所示

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

	/*int i, j;
	i = 8;
	j = 10;*/
	/*printf("%d,%d\n", i++, j++);*/
	/*printf("%d, %d\n", ++i, ++j);*/
	/*printf("%d, %d, %d, %d\n", i, j, i++, j++);*/

	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;
}

5.4、数据类型、运算符和简单的输入输出实验题目4:程序设计题:假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。编写程序的完整程序

完整程序如下所示

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    
    
	system("color 3E");

	double p, r;
	int n;

	p = 1.0;
	//r = 0.09;
	n = 10;

	printf("输入年利率: ");
	scanf("%lf", &r);

	// for 循环方式
	for (int i = 0; i < n; i++)
	{
    
    
		p = p * (1 + r);
	}

	printf("\n国民生产总值与现在相比增长%.3lf百分比\n\n", p);


	// 调用math函数方式
	p = 1.0;
	//r = 0.09;
	n = 10;
	
	printf("输入年利率: ");
	scanf("%lf", &r);

	p = pow(1 + r, n);
	printf("\n国民生产总值与现在相比增长%.3lf百分比\n\n", p);

	system("pause");
	return 0;
}


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_47419053/article/details/128507253