C言語とアルゴリズム設計講座 実験2:データ型と演算子と簡単な入出力

C言語とアルゴリズム設計講座 実験2:データ型と演算子と簡単な入出力

ここに画像の説明を挿入

1. 実験の目的

ここに画像の説明を挿入

  • (1) C言語のデータ型を習得し、文字データと整数データの内部関係を理解する。
  • (2) 各種数値データの正しい入力方法を習得する。
  • (3) C の関連する算術演算子、およびこれらの演算子を含む式、特に自己インクリメント ( + + ) および自己デクリメント (- -) 演算子の使用を学びます。
  • (4) 簡単なアプリケーションの書き方と実行方法を学びます。
  • (5) C プログラムの編集、コンパイル、リンク、および実行のプロセスにさらに精通する。

2.実験内容

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 関数を使用して、make にデータを入力します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. プログラム設計の問題: 自国の GNP の年間成長率が 9% の場合、10 年後の私の国の GNP の増加率を計算してください。プログラミング。

(4) 自国の GNP の年間成長率が 9% の場合、10 年後の私の国の GNP の増加率を計算します。プログラムを書いてください (第 3 章、質問 1)
計算式は次のとおりです。ここに画像の説明を挿入

r は年間成長率、n は年数、p は現在との倍数です。

  • ① 自分でコンパイルしたプログラムを入力し、コンパイルして実行し、実行結果を解析します。
  • ②年間成長率はプログラムでは指定せず、代わりにscanf関数文で入力し、それぞれ7%、8%、10%と入力する。観察結果。
  • ③ プログラムに printf 関数文を追加して、入力するデータを促し、出力するデータを説明します。

3. 実験手順

ここに画像の説明を挿入

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 に変更すると、
出力結果は
ab
97 98になります。

3.2. データ型と演算子と簡単な入出力 実験課題 2: 第 3 章 第 5 問のプログラムを入力する

(2) 第 3 章の質問 5 のプログラムを入力してください。つまり、
次の scanf 関数を使用して、make にデータを入力します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.82AaEnter

入出力結果は以下の通り

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 は、最初に変数自体に 1 を追加してから、変数 m に代入します。
j ++ は、変数が最初に変数 n に割り当てられ、次にそれ自体に 1 が追加されることを意味します。
したがって、m=9、n=10

② 6 行目と 7 行目を

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

次に、上記のプログラムをコンパイルして実行すると、出力は次のようになります。

ここに画像の説明を挿入

i ++ は、最初に変数 m に変数を割り当ててから、それ自体に 1 を追加します。
++j は、最初に変数自体に 1 を追加してから、変数 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: プログラム設計の質問: 私の国の GNP の年間成長率が 9% の場合、私の国の GNP の 10 年後の増加率を計算してください。プログラミング。

(4) 自国の GNP の年間成長率が 9% の場合、10 年後の私の国の GNP の増加率を計算します。プログラムを書いてください (第 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函数方式
	p = 1.0;
	r = 0.09;
	n = 10;

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

3.4.1.3、 for ループの方法と数学関数を呼び出してパーセンテージを計算し、包括的なプログラムを作成する方法は次のとおりです。

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

プログラムを実行した結果は次のとおりです。

ここに画像の説明を挿入

4. 実験のまとめ

ここに画像の説明を挿入

今回は、C言語とアルゴリズム設計コースの実験2:データ型、演算子、簡単な入出力に合格しました。以下のポイントをマスターしました。

  • (1) C言語のデータ型を習得し、文字データと整数データの内部関係を理解する。
  • (2) 各種数値データの正しい入力方法を習得する。
  • (3) C の関連する算術演算子、およびこれらの演算子を含む式、特に自己インクリメント ( + + ) および自己デクリメント (- -) 演算子の使用を学びます。
  • (4) 簡単なアプリケーションの書き方と実行方法を学びます。
  • (5) C プログラムの編集、コンパイル、リンク、および実行のプロセスにさらに精通する。

5. 実験の完全な手順

ここに画像の説明を挿入

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: プログラム設計の質問: 自国の GNP の年間成長率が 9% の場合、10 年後の自国の GNP の増加率を計算してください。プログラムを書くための完全なプログラム

完全なプログラムは次のとおりです。

#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