"Cプライマープラス"(第6版)の回答(6.16)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_43219615/article/details/99944674

準備学習「Cプライマープラス」C初心者を使用します。質問のいくつかは異なる場合があり、自分で確認してください。

  1. 配列は26の文字が含まれて作成するプログラムを書き、そして26の小文字を格納します。次に、配列の内容全体を印刷します。
#include <stdio.h>
int main(void)
{
	char c[26];
	int cnt = 0;
	
	/*C99支持for循环内定义变量 如果报错就把变量声明提到外面*/
	for(char i = 'a'; i <= 'z'; i++) {
		c[cnt++] = i;
	}

	for(int i = 0; i < cnt; i++) {
		printf("%c ", c[i]);
	}
	
	return 0;
}
  1. ネストされたループ、次の形式で印刷文字:
    画像フォーマット
#include <stdio.h>
int main(void)
{
	/*第一个循环控制打印的行数 第二个循环控制每行的输出*/
	for(int i = 0; i < 5; i++) {
		for(int j = 0; j < i + 1; j++) {
			printf("$"); 
		}
		printf("\n");
	}
	
	return 0;
}
  1. ネストされたループ、手紙は次の形式で出力します。
    画像フォーマット
    注意:お使いのシステムは、ASCIIまたはコードの番号順にコード化された他のを使用していない場合は、文字列がアルファベットの文字に初期化されて置くことができます:
       charができます[26です] =「ABCDEFGHIJKLMNOPQRSTUVWXYZ」;
      次いで、例えば、[0]「A」は、等することができ、単一の文字を選択する配列のインデックスを使用します。
#include <stdio.h>
int main(void)
{
	/*第一个循环控制行数 第二个循环控制输出 可以观察每行的输出和行数的关系*/
	for(int i = 1; i <= 6; i++) {
		for(int j = 'F'; j > 'F' - i; j--) {
			printf("%c", j);
		}
		printf("\n");
	} 
	
	return 0;
}
  1. ネストされたループを使用して、手紙は次の形式で出力します。
    画像フォーマット
#include<stdio.h>
int main(void)
{
	char ch='A';
	
	for(int i=0; i < 6; i++)
	{
		for(int j=0; j <= i; j++)
			printf("%c", ch++);
		printf("\n");
	}
	
	return 0;
}
  1. プログラムは次のような大文字、ピラミッド画像生成ネストされたループパターンを入力するようユーザーに要求してみましょう:
    画像フォーマット
      このパターンは、ユーザによる文字入力に拡張されます。例えば、入力パターンのフロントE.を生成するために必要です 注:各列インナーループ三、処理空間、昇順、降順印刷文字の文字印刷を行を処理するための外部ループを使用します。お使いのシステムは、番号順に符号化表現の厳密な文字にASCIIまたは類似を使用していない場合は、プログラミング演習3で与えられた勧告を参照してください。
#include <stdio.h>
int main(void)
{
	char c;
	
	scanf("%c", &c);
	for(int i = 'A'; i <= c; i++) {
		//打印空格 
		for(int j = i; j < c; j++) {
			printf(" ");
		}
		//升序打印字母 
		for(int j = 'A'; j <= i; j++) {
			printf("%c", j);
		}
		//降序打印字母 
		for(int j = i-1; j >= 'A'; j--) {
			printf("%c", j);
		}
		printf("\n");
	}
	
	return 0;
}
  1. テーブルを印刷するプログラムを書いて、テーブルの各列は、整数、その​​正方形そのキューブを与えます。ユーザ入力テーブルは、上限値と下限値を必要とします。forループを使用してください。
#include<stdio.h>
int main(void)
{
	int i_max;
	int i_min;
	
	printf("请输入上下限:");
	scanf("%d%d", &i_max, &i_min);
	for(int i=i_min; i<=i_max; i++)
	{
		printf("%d %d %d\n",i, i*i, i*i*i);
	}
	
	return 0;
}
  1. そして、文字配列に単語を読んで単語の逆を印刷するプログラムを書きます。ヒント:最後の文字のはstrlen()配列のインデックスを使用します(第4章)を算出します。
#include<stdio.h>
#include<string.h>
int main(void)
{
	char word[40];
	int limit;
	
	printf("Enter a word:");
	scanf("%s",&word);
	limit = strlen(word);
	for(int i = limit-1; i>=0; i--)
		printf("%c", word[i]);
	
	return 0;
}
  1. 二つの入力浮動小数点数を必要とするプログラムを作成し、その後、両者の差を有する2つの生成物を分割した結果を印刷します。ユーザは、各入力値ペアの非数値入力プログラムループ処理を入力する前に。
#include<stdio.h>
int main(void)
{
	double one,two;
	printf("Enter q to quit:"); 
	
	while(scanf("%lf%lf", &one, &two) == 2)
	{
		printf("%-16f", (one-two) / (one*two));
	}
	printf("Done!");
	
	return 0;
}
  1. 計算された値を返す関数を持って、それを修正するための演習8。
#include<stdio.h>

double f(double one, double two) {
	return (one-two) / (one*two);
}

int main(void)
{
	double one,two;
	printf("Enter q to quit:"); 
	
	while(scanf("%lf%lf", &one, &two) == 2)
	{
		printf("%-16f", f(one, two));
	}
	printf("Done!");
	
	return 0;
}
  1. プログラムを作成、入力するユーザ下限と上限整数整数を必要とし、順次添加の下限値から上限値までの各整数の二乗を計算し、最終的な結果が表示されています。プログラムは、ユーザ入力に等しい下限整数アップ未満の整数になるまで、上限値を入力する下限および上部整数整数をユーザに促すと解答を表示し続けます。次のようにサンプルの結果は実行されるべきである:
    整数下限と上限:. 5. 9入力
    25〜81乗255からの和の
    25 3:リミット値の次のセットを入力
    から5520 9に正方形IS 625の合計のを
    入力してくださいSET次:. 5. 5の限界を
    完了します
#include <stdio.h>
int main(void)
{
	int lower, upper;
	
	printf("Enter lower and upper integer limits:");
	scanf("%d %d", &lower, &upper);
	
	while(upper > lower) {
		int sum = 0;
		for(int i = lower; i <= upper; i++) {
			sum += i * i;
		}
		printf("The sums of the squares from %d to %d is %d\n", lower*lower, upper*upper, sum);
		printf("Enter next set of limits:");
		scanf("%d %d", &lower, &upper);
	} 
	
	printf("Done");
	return 0;
}
  1. 配列内の8つの整数に読み込まれたプログラムを書くと、出力を反転。
#include <stdio.h>
int main(void)
{
	int arr[8];
	
	printf("请输入八个整数:\n");
	for(int i = 0; i <= 7; i++)
	{
		scanf("%d", &arr[i]);
	}
	for(int i = 7; i >= 0; i--)
	{
		printf("%d ", arr[i]);
	}
	
	return 0; 
}
  1. これらの二つの無限級数を考えてみましょう:
      1.0 + 1.0 / + 2.0 1.0 / 3.0 + 1.0 / + 4.0 ...
      1.0 + 3.0から1.0 / 4.0 / 1.0 + 1.0 / 2.0に...
      合計が変化する二つの配列を計算するプログラムを書きますそれが一定回数に達するまで。ユーザーが対話的にこの番号を入力することができます。20倍、100倍、500倍の合計を見た後。各シーケンスは、一定値に収束しているようだかどうか?ヒント:偶数1は-1が乗算されながら-1を乗じ奇数は、-1です。
#include <stdio.h>
double series1(int);
double series2(int);
int main(void)
{
	int count;
	
	printf("请输入要计算的次数:\n");
	scanf("%d", &count);
	printf("Result:\n%lf\t%lf\t%lf+%lf=%lf", series1(count), series2(count), series1(count), series2(count), series1(count)+series2(count));
	
	return 0;
}
double series1(int count)
{
	int i;
	double sum = 0;
	double temp;
	
	for(i = 1; i <= count; i++)
	{
		temp = 1.0 / i;
		sum += temp;
	}
	
	return sum;
}
double series2(int count)
{
	int i;
	double sum = 1;
	double temp = -1;
	
	for(i = 2; i <= count; i++)
	{
		temp = temp / i;
		sum += temp;
	}
	
	return sum;
}
  1. 8つの要素のアレイは、INT、および前部要素8は、2の累乗に提供し、次にそれらの値を印刷している作成するプログラムを書きます。ループの値を設定するために使用し、バリエーションのために、ループは、これらの値を表示するようにしながら、やる使用しています。
#include <stdio.h>
#include <math.h>
int main(void)
{
	int a[8];
	
	for(int i = 0; i < 8; i++) {
		a[i] = pow(2, i+1);
	}
	
	int i = 0;
	do {
		printf("%d ", a[i]);
		i++;
	} while(i < 8);
	
	return 0;
}
  1. 二つの要素8の二重アレイを作成するためのプログラムを書き、ユーザーが最初の配列の8つの要素の値を入力できるようにするためにループを使用します。最初の配列要素および累積に二番目の配列のプログラム要素。例えば、二番目の配列の4番目の要素は、最初の4つの最初の要素及びアレイに等しくなければならない、二番目の配列の5番目の要素は、埋め込まれたとの最初の5つの要素と最初の配列(に等しくなければなりませんループのセットは、これを行うことができるが、二番目の配列の4番目の要素がプラスだけネストを回避するという事実の第1のアレイの五行に等しい5つの要素の二番目の配列を有します単一サイクル)は、このタスクを完了します。各要素は、第一の配列の対応する要素の下に表示されている二番目の配列ながら最後に、ループの使用は、二つの配列1行の最初の列の内容を表示します。
#include <stdio.h>
int main(void)
{
	double a[8];
	double _a[8];
	
	printf("请输入八个数字:\n");
	for(int i = 0; i <= 7; i++)
		scanf("%lf",&a[i]);
		
	for(int i = 0; i <= 7; i++)
	{
		for(int j = 0; j <= i; j++)
		{
			_a[i] += a[j];
		}
	}
	
	for(int i = 0; i <= 7; i++)
	{
		printf("%.2f ",a[i]);
	}
	
	printf("\n");
	
	for(int i = 0; i <= 7; i++)
	{
		printf("%.2f ",_a[i]);
	}
	
	return 0;
}
  1. その行の印刷を逆転、その後、入力の行を読み込み、プログラムを書きます。あなたはchar型の配列に格納され入力できます。行が255文字以下であることを前提としています。あなたはscanf関数の%cの指定子を持つことができますリコール()は最初の入力から文字を読み込み、Enterキーを押すとキーが改行文字(\ n)を生成します。
#include <stdio.h>
#include <string.h>
int main(void)
{
	char arr[256];
	char temp;
	int i = 0;
	int maxLength;
	
	while((temp = getchar()) != '\n' && i < 256)
	{
		arr[i] = temp;	
		i++;
	}
	
	maxLength = strlen(arr);
	
	for(i = maxLength -1; i >= 0; i--)
	{
		printf("%c",arr[i]);
	}
	putchar(temp);
	
	return 0;	
} 
  1. ダフネ10%単利は(つまり、年利は、元の投資額の10%に相当の投資を獲得した)$ 100投資しました。ディアドラは年間5%の複利が(つまり、関心の現在の残高は、前の利息を含め、5%である)$ 100投資し配置します。ディアドラダフネの多くの年以上になります必要な投資を計算するプログラムを書き、そして二人の時間の投資を示しています。
#include <stdio.h>
int main()
{
	double daphne = 100;
	double deidre = 100;
	int year = 0;
	double RATE_SIMP = .1;
	double RATE_COMP  = .05;
	double INIT_AMT = 100;
	
	while(deidre <= daphne)
	{
		daphne += RATE_SIMP * INIT_AMT;
		deidre += RATE_COMP * deidre;
		year++;
	}
	printf("Investment values after %d years:\n", year);
	printf("Daphne: %.2f\tDeidre: %.2f", daphne, deidre);
	
	return 0;
}
  1. 小石ラッキー彼は、アカウントの年間8%の勝利に入れて$ 1万ドルを獲得しました。各年の最後の日に、小石が$ 100,000撤回します。小石が自分のアカウントを空にする方法を長年を計算するプログラムを書きます。
#include<stdio.h>
int main(void)
{
	double d = 100;
	int year = 0;
	
	while(d > 0) {
		d += d * 0.08;
		d -= 10;
		year++;
	}
	
	printf("%d years later, Chuckie Lucky whill do that.", year); 
	
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_43219615/article/details/99944674