国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

這篇具有很好參考價(jià)值的文章主要介紹了浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

你也可以上程序咖(https://meta.chengxuka.com),打開大學(xué)幕題板塊,不但有答案,講解,還可以在線答題。

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

一、選擇題
1.假定 int 類型變量占用兩個(gè)字節(jié),則以下定義的數(shù)組 a 在內(nèi)存中所占字節(jié)數(shù)是( )。

int a[10]={10,2,4};

A. 20
B.10
C.6
D.3

答:A

解析:題目中,根據(jù) int a[10] ,表示定義了數(shù)組的長度是 10 ,每個(gè)變量占用兩個(gè)字節(jié),一共就是 20 個(gè)字節(jié)。

2.若有定義:int a[2][3] ;以下選項(xiàng)中對(duì)數(shù)組元素正確引用的是( )。
A. a[2][0]
B. a[2][3]
C. a[0][3]
D. a[1>2][1]

答:D

解析:

題目中定義了二維數(shù)組 a[2][3] ,那么該數(shù)組表示一個(gè) 2 行 3 列的矩陣,行的下標(biāo)(第一個(gè)下標(biāo))的取值范圍就是 0,1,列的下標(biāo)(第二個(gè)下標(biāo))的取值范圍就是 0,1,2。這里是有選項(xiàng) D,a[1>2][1],實(shí)際上是 a[0][1],下標(biāo)的數(shù)值沒有越界。

3.以下程序段的輸出結(jié)果是( )。

int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i, s=0;
for(i=0; i<4; i++)
	s+=aa[i][3];
printf("%d\n", s);

A.11
B.19
C.13
D.20

答:D

解析:

題目中定義的是二維數(shù)組,4X4 的矩陣。

1	2 3 4
5 6 7 8
3 9 10 2
4 2 9 6

循環(huán)中 i 的值表示行,從 0 取到 3,而列的下標(biāo)固定是 3,所以表示累加最后一列的值。4+8+2+6 = 20。

4.設(shè)有數(shù)組定義:char array[]=“China” ; 則數(shù)組 array 所占的空間為( )字節(jié)。

A.4個(gè)
B.5個(gè)
C.6個(gè)
D.7個(gè)

答:C

解析:在題目的定義方式中,系統(tǒng)會(huì)自動(dòng)在數(shù)組最后加入一個(gè)’\0’,表示字符數(shù)組的結(jié)束,因此數(shù)組的長度就是 6 個(gè)字節(jié)。

5.下述對(duì)字符數(shù)組的描述中錯(cuò)誤的是( )。

A.字符數(shù)組可以存放字符串

B.字符數(shù)組中的字符串可以整體輸入、輸出

C.可以在賦值語句中通過賦值運(yùn)算符"="對(duì)字符數(shù)組整體賦值

D.不可以用關(guān)系運(yùn)算符對(duì)字符數(shù)組中的字符串進(jìn)行比較

答:C

解析:

選項(xiàng) A 正確,在 C 語言中可以將字符串作為一個(gè)特殊的一位字符數(shù)組來處理。例如:char array[]=“China” ;

選項(xiàng) B 正確,因?yàn)樽址麛?shù)組中直接使用數(shù)組名稱時(shí)數(shù)組會(huì)退化為指針而且字符串結(jié)尾會(huì)有“\0”,指針遇到“\0”會(huì)結(jié)束輸入或者輸出。用到的代碼是: char ch[100]; gets(ch); //整體輸入puts(ch);整體輸出。(同時(shí)這里提個(gè)醒字符數(shù)組可以進(jìn)行整體的輸入輸出,但是整型輸出是不可以進(jìn)行的整體輸入輸出)

選項(xiàng) C 不正確。在賦值語句中通過賦值運(yùn)算符"="對(duì)字符數(shù)組整體賦值,則就需要用到字符數(shù)組名,而對(duì)字符數(shù)組名進(jìn)行操作時(shí)其會(huì)退化為常量指針,而進(jìn)行賦值時(shí)左值必須是可以修改的變量。所以錯(cuò)誤。

選項(xiàng) D 正確。數(shù)組名會(huì)退化為指針,所以比較的其實(shí)就是指針?biāo)赶虻膬?nèi)存地址的大小,這個(gè)跟比較字符串的大小沒有關(guān)系。

6.對(duì)于以下定義,正確的敘述為( )。

char x[]="abcdefg", char y[]={'a','b','c','a','e','f','g'};

A.數(shù)組 x 和數(shù)組 y 等價(jià)
B.數(shù)組 x 的長度大于數(shù)組 y 的長度
C.數(shù)組 x 和數(shù)組 y 的長度相同
D.數(shù)組 x 的長度小于數(shù)組 y 的長度

答:B

解析:

char x[]=“abcdefg”,數(shù)組 x 的長度是 8,7個(gè)字符,以及系統(tǒng)自動(dòng)加的 ‘\0’。

char y[]={‘a(chǎn)’,‘b’,‘c’,‘a(chǎn)’,‘e’,‘f’,‘g’},數(shù)組 y 的長度是 7。

char x[]=”abcdefg”;
//等價(jià)于
char x[]={‘a(chǎn)’,'b’,'c’,'d’,'e’,‘f’,‘g’,’\0’};

二、填空題
1.寫出以下程序段的輸出結(jié)果:輸入4,則輸出( ),輸入5,則輸出( ),輸入12,則輸出( ),輸入-5,則輸出( )。

int i, n = 5, x, a[10] = {1, 3, 5, 7, 9};
scanf("%d", &x);
	for (i = n - 1; i >= 0; i--)
		if (x < a[i])
			a[i + 1] = a[i];
		else
			break;
	a[i + 1] = x;
	n++;
	printf("%d", i + 1);

答:2 3 5 0

解析:

循環(huán)中 i 的取值為 4,3,2,1,0。當(dāng)取到 -1 時(shí)結(jié)束 for循環(huán)。循環(huán)里就是在比較 x 和 a[i] 的大小。

第一個(gè)空,當(dāng) x 的值為 4 時(shí), 下標(biāo) i 的值為 1,對(duì)應(yīng)數(shù)組中的 3,if 語句不成立,break 了循環(huán),此時(shí) i 的值為1 。最終打印 i+1的值就是 2。

第二個(gè)空,當(dāng) x 的值為 5 時(shí),下標(biāo) i 的值為 2,對(duì)應(yīng)數(shù)組中的的 5,if 語句不成立,break 了循環(huán),此時(shí) i 的值為 2。最終打印 i+1 的值就是 3。

第三個(gè)空,當(dāng) x 的值為 12 時(shí),下標(biāo) i 的值為 4,對(duì)應(yīng)數(shù)組中的 9,if 語句不成立,break 循環(huán),此時(shí) i 的值為 4。最終打印 i+1 的值就是 5。

第四個(gè)空,當(dāng) x 的值為 -5 時(shí),整個(gè)數(shù)組中的所有值都比 x 大,循環(huán)結(jié)束時(shí) i 的值為 -1 。最終打印 i+1 的值就是 0。

2.求數(shù)組中相鄰元素之和。將數(shù)組 x 中相鄰兩個(gè)元素的和依次存放到 a 數(shù)組中。請(qǐng)?zhí)羁铡?/p>

	int i, a[9], x[10];
	for (i = 0; 1 < 10; i++)
		scanf("%d", &x[i]);
	for (_______; i < 10; i++)
		a[i - 1] = _______ + x[i];

答:i = 1 x[i - 1]

解析:因?yàn)橐硎緮?shù)組中相鄰的元素,可以使用 x[i-1] 和 x[i],所以在第二個(gè) for 循環(huán)中,i 的初始值為 1。

3.簡化的插入法排序。將一個(gè)給定的整數(shù) x 插到已按升序排列的整型數(shù)組 a 中,使 a 數(shù)組仍然按升序排列。假定變量都已正確定義并賦值,請(qǐng)?zhí)羁铡?/p>

	for (i = 0; i < n; i++)
	{
		if (________)
		{
			break;
		}
	}
	for (________)
	{
		a[j + 1] = a[j];
	}
	________;
	n++;

答:

x < a[i]

j = n - 1; j >= i; j–

a[i] = x

解析:

這里的思路是:第一個(gè) for 循環(huán),比較 x 和 數(shù)組中的元素,直到 x 大于數(shù)組中的某一個(gè)元素。然后記錄該值的下標(biāo)。

然后第二個(gè)循環(huán)將 i 后的每一個(gè)元素向后移動(dòng)一個(gè)位置。

最后將 x 插入到 下表 i 的位置上。

4.輸入 8 ,以下程序段的輸出結(jié)果為( ),輸入 5 ,輸出結(jié)果為( )。

	int i, max_sum, n, this_sum, a[] = {-1, 3, -2, 4, -6, 1, 6, -1};
	scanf("%d", &n);
	max_sum = this_sum = 0;
	for (i = 0; i < n; i++)
	{
		this_sum += a[i];
		if (this_sum > max_sum)
			max_sum = this_sum;
		else if (this_sum < 0)
			this_sum = 0;
	}
	printf("%d\n", max_sum);

答:7 5

解析:

第一空,當(dāng) n = 8 時(shí),for 循環(huán)遍歷了數(shù)組中的所有的元素,下標(biāo)從 0 到 7 。

i = 0 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[0] = -1 ,值為 -1,執(zhí)行 else if 的內(nèi)容,this_sum 的值被修改為 0。

i = 1 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[1] = 3,值為 3,執(zhí)行 if 的內(nèi)容,max_sum 的值為 3。

i = 2 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[2] = -2,值為 1,不執(zhí)行 if 也不執(zhí)行 else if,然后下一次循環(huán)。

i = 3 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[3] = 4,值為 5,執(zhí)行 if 的內(nèi)容,max_sum 的值為 5。

i = 4 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[4] = -6,值為 -1,執(zhí)行 else if 的內(nèi)容,this_sum 的值被修改為 0。

i = 5 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[5] =1,值為 1,不執(zhí)行if 也不執(zhí)行 else if,然后下一次循環(huán)。

i = 6 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[6]= 6,值為 7,執(zhí)行 if 的內(nèi)容,max_sum 的值修改為 7。

i = 7 時(shí),循環(huán)條件成立,進(jìn)入循環(huán),this_sum 累加完 a[7] = -1,值為 6。不執(zhí)行if 也不執(zhí)行 else if。

i = 8 時(shí),結(jié)束循環(huán)。

第二空,當(dāng) n = 5 時(shí),for 循環(huán)遍歷了下標(biāo)從 0 到 4。數(shù)值的遍歷從 -1 到 -6 。分析過程如上。

5.輸入 1 2 3 4 5 6 ,則程序段 A 的輸出結(jié)果是( ),程序段 B 的輸出結(jié)果是( )。

程序段 A

int i, j, table[3][2];
	for (i = 0; i < 3; i++)
		for (j = 0; j < 2; j++)
			scanf("%d", &table[i][j]);
	for (i = 0; i < 3; i++)
		for (j = 0; j < 2; j++)
			printf("%d#", table[i][j]);

程序段 B

	int i, j, table[3][2];
	for (j = 0; j < 2; j++)
		for (i = 0; i < 3; i++)
			scanf("%d", &table[i][j]);
	for (i = 0; i < 3; i++)
		for (j = 0; j < 2; j++)
			printf("%d#", table[i][j]);

答:

1#2#3#4#5#6#

1#4#2#5#3#6#

分析:

6.判斷二維數(shù)組是否對(duì)稱。檢查二維數(shù)組 a 是否對(duì)稱,即對(duì)所有 i ,j 都滿足a[i][j]a[j][i]的值相等。假定變量都已正確定義并賦值,請(qǐng)?zhí)羁铡?/p>

	found = 1;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			if (___________)
			{
				___________;
				break;
			}
		}
		if (___________)
			break;
	}
	if (found != 0)
		printf("該二維數(shù)組對(duì)稱\n");
	else
		printf("該二維數(shù)組不對(duì)稱\n");

答:

a[i][j] != a[j][i]

found = 0

found == 0

解析:

由打印輸出條件可以看的出來,found 的值為 1 時(shí),是對(duì)稱數(shù)組,found 為 0 時(shí),是非對(duì)稱數(shù)組。

所以第一個(gè)空,填入 a[i][j] != a[j][i],他倆的值不想等,那么就把 found 修改為 0。所以第二個(gè)空為 found = 0,執(zhí)行了 break,結(jié)束這個(gè) j 這個(gè)循環(huán)。第三個(gè)空要判斷 found 的值是否為 0 ,如果是 0 就結(jié)束整個(gè) i 的循環(huán),因?yàn)橐坏?found 被修改為 0,那么這個(gè)數(shù)組就不是對(duì)稱的了,后面的其他數(shù)值也不需要判斷了。

7.字符串復(fù)制。將字符串 str1 的內(nèi)容復(fù)制到字符串 str2 。 假定變量都已正確定義并賦值,請(qǐng)?zhí)羁铡?/p>

	i = 0;
	while (___________)
	{
		___________;
		i++;
	}
	___________;

答:

str1[i] != ‘\0’

str2[i] = str1[i]

str2[i] = ‘\0’

解析:這里循環(huán)復(fù)制就可以了。只不過使用 char[] 數(shù)組操作字符串,最后一個(gè)字符存儲(chǔ) ‘\0’。

8.刪除字符串中的空格。將字符串 str 中的所有空格都刪除。假定變量都已正確定義并賦值,請(qǐng)?zhí)羁铡?/p>

	i = j = 0;
	while (__________)
	{
		if (__________)
		{
			str[j] = str[i];
			__________
		}
		i++;
	}
	__________

答:

str[i] != ‘\0’

str[i] != ’ ’

j++;

str[j] = ‘\0’;

解析:

循環(huán)遍歷字符串,通過兩個(gè)下標(biāo) i 和 j 來操作。i 用于遍歷字符串中的每個(gè)字符,j 用于存儲(chǔ)非空格的字符。如果這個(gè)字符不是空格,就復(fù)制到 j 對(duì)應(yīng)的位置上。最后要記得末尾加 ‘\0’。

三、程序設(shè)計(jì)題
題目1:選擇法排序。輸入一個(gè)正整數(shù) n (1<n≤10),再輸入 n 個(gè)整數(shù),將它們從大到小排序后輸出。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int max(int a[], int len);
int main()
{
	// 習(xí)題(7.3.1)
	/*
	選擇法排序。輸入一個(gè)正整數(shù) n (1<n≤10),再輸入 n 個(gè)整數(shù),將它們從大到小排序后輸出。
	*/

	//數(shù)據(jù)存入
	int i, n;
	printf("input n number:");
	scanf("%d", &n);
	int a[n];
	for (i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}

	int len = sizeof(a) / sizeof(a[0]);
	//選擇排序
	for (i = len - 1; i > 0; i--)
	{
		int maxid = max(a, i + 1);
		int t = a[maxid];
		a[maxid] = a[i];
		a[i] = t;
	}

	for (i = len - 1; i >= 0; i--)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	return 0;
}
int max(int a[], int len) //找出數(shù)組中最大數(shù)
{
	int i, maxid = 0;
	for (i = 1; i < len; i++)
	{
		if (a[i] > a[maxid])
		{
			maxid = i;
		}
	}
	return maxid;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目2:求一批整數(shù)中出現(xiàn)最多的數(shù)字。輸入一個(gè)正整數(shù) n(1<n≤1 000), 再輸入 n 個(gè)整數(shù),分析每個(gè)整數(shù)的每一位數(shù)字,求出現(xiàn)次數(shù)最多的數(shù)字。例如輸入 3 個(gè)整數(shù) 1234、2345、3456, 其中出現(xiàn)次數(shù)最多的數(shù)字是 3 和 4 ,均出現(xiàn)了 3 次。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.2)
	/*
	求一批整數(shù)中出現(xiàn)最多的數(shù)字。輸入一個(gè)正整數(shù) n(1<n≤1 000), 再輸入 n 個(gè)整數(shù),分析每個(gè)整數(shù)的每一位數(shù)字,
	求出現(xiàn)次數(shù)最多的數(shù)字。例如輸入 3 個(gè)整數(shù) 1234、2345、3456, 其中出現(xiàn)次數(shù)最多的數(shù)字是 3 和 4 ,均出現(xiàn)了 3 次。
	*/

	int n, i, max = 0, temp, time[10] = {0};
	printf("input n:");
	scanf("%d", &n);
	printf("input %d integers:", n);
	for (i = 0; i < n; i++)
	{
		scanf("%d", &temp);
		while (temp != 0)
		{
			time[temp % 10]++;
			temp /= 10;
		}
	}
	for (i = 0; i < 10; i++)
	{
		if (max < time[i])
			max = time[i];
	}
	printf("出現(xiàn)最多次數(shù) %d 次的數(shù)字是:", max);
	for (i = 0; i < 10; i++)
		if (time[i] == max)
			printf("%d ", i);

	printf("\n");
	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

再輸入一組:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目3:判斷上三角矩陣。輸入一個(gè)正整數(shù) n(1≤n≤6)和 n 階方陣 a 中的元素,如果 a 是上三角矩陣,輸出 “YES", 否則,輸出 “NO"。 上三角矩陣指主對(duì)角線以下的元素都為 0 的矩陣,主對(duì)角線為從矩陣的左上角至右下角的連線。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.3)
	/*
	判斷上三角矩陣。輸入一個(gè)正整數(shù) n(1≤n≤6)和 n 階方陣 a 中的元素,如果 a 是上三角矩陣,輸出 “YES", 否則,輸出 “NO"。
	上三角矩陣指主對(duì)角線以下的元素都為 0 的矩陣,主對(duì)角線為從矩陣的左上角至右下角的連線。
	*/
	int a[6][6], flag, i, j, n;
	printf("input n: ");
	scanf("%d", &n);
	printf("input array: \n");
	for (i = 0; i < n; i++)
		for (j = 0; j < n; j++)
			scanf("%d", &a[i][j]);
	flag = 1;
	for (i = 0; i < n; i++)
		for (j = 0; j < i; j++)
			if (a[i][j] != 0)
				flag = 0;
	if (flag)
		printf("YES\n");
	else
		printf("NO\n");
	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目4:求矩陣各行元素之和。輸入 2 個(gè)正整數(shù) m 和 n (1≤m≤6,1≤n≤6) ,然后輸入矩陣 a ( m 行 n 列 ) 中的元素,分別求出各行元素之和,并輸出。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.4)
	/*
	求矩陣各行元素之和。輸入 2 個(gè)正整數(shù) m 和 n (1≤m≤6,1≤n≤6) ,然后輸入矩陣 a ( m 行 n 列 ) 中的元素,
	分別求出各行元素之和,并輸出。
	*/

	int a[6][6], i, j, m, n, sum;
	printf("input m,n : ");
	scanf("%d%d", &m, &n);
	printf("input array:\n");
	for (i = 0; i < m; i++)
		for (j = 0; j < n; j++)
			scanf("%d", &a[i][j]);
	for (i = 0; i < m; i++)
	{
		sum = 0;
		for (j = 0; j < n; j++)
			sum = sum + a[i][j];
		printf("sum of row %d is %d\n", i, sum);
	}
	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目5:找鞍點(diǎn)。輸入 1 個(gè)正整數(shù) n ( 1≤n≤6) 和 n 階方陣 a 中的元素,假設(shè)方陣 a 最多有 1 個(gè)鞍點(diǎn),如果找到 a 的鞍點(diǎn),就輸出其下標(biāo),否則,輸出“NO"。 鞍點(diǎn)的元素值在該行上最大,在該列上最小。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.5)
	/*
	找鞍點(diǎn)。輸入 1 個(gè)正整數(shù) n ( 1≤n≤6) 和 n 階方陣 a 中的元素,假設(shè)方陣 a 最多有 1 個(gè)鞍點(diǎn),
	如果找到 a 的鞍點(diǎn),就輸出其下標(biāo),否則,輸出“NO"。 鞍點(diǎn)的元素值在該行上最大,在該列上最小。
	*/

	int flag, i, j, k, row, col, n, a[6][6];
	printf("input n: ");
	scanf("%d", &n);
	printf("input array:\n");
	for (i = 0; i < n; i++)
		for (j = 0; j < n; j++)
			scanf("%d", &a[i][j]);
	for (i = 0; i < n; i++)
	{
		flag = 1;
		col = 0;
		for (j = 0; j < n; j++)
			if (a[i][col] < a[i][j])
				col = j;
		for (k = 0; k < n; k++)
			if (a[i][col] > a[k][col])
			{
				flag = 0;
				break;
			}
		if (flag)
		{
			row = i;
			break;
		}
	}
	if (flag)
		printf("a[%d][%d]=%d\n", row, col, a[row][col]);
	else
		printf("NO\n");
	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

再輸入一組:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目6:統(tǒng)計(jì)大寫輔音字母。輸入一個(gè)以回車結(jié)束的字符串(少于 80 個(gè)字符),統(tǒng)計(jì)并輸出其中大寫輔音字母的個(gè)數(shù)。大寫輔音字母是指除 ‘A’,‘E’ ,‘I’,‘O’, ‘U’ 以外的大寫字母。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.6)
	/*
	統(tǒng)計(jì)大寫輔音字母。輸入一個(gè)以回車結(jié)束的字符串(少于 80 個(gè)字符),統(tǒng)計(jì)并輸出其中大寫輔音字母的個(gè)數(shù)。
	大寫輔音字母是指除 'A','E' ,'T','O', 'U' 以外的大寫字母。
	*/

	int count, i;
	char ch, str[80];
	printf("input a string:");
	i = 0;
	while ((ch = getchar()) != '\n')
	{
		str[i++] = ch;
	}
	str[i] = '\0';
	count = 0;
	for (i = 0; str[i] != '\0'; i++)
		if (str[i] <= 'Z' && str[i] > 'A' && str[i] != 'E' && str[i] != 'I' && str[i] != 'O' && str[i] != 'U')
			count++;
	printf("count = %d\n", count);
	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目7:字符串替換。輸入一個(gè)以回車結(jié)束的字符串(少于 80 個(gè)字符),將其中的大寫字母用下面列出的對(duì)應(yīng)大寫字母替換,其余字符不變,輸出替換后的字符串。試編寫相應(yīng)程序。
原字母對(duì)應(yīng)字母
A→Z
B→Y
C→X
D→W

X→C
Y→B
Z→A

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.7)
	/*
	字符串替換。輸入一個(gè)以回車結(jié)束的字符串(少于 80 個(gè)字符),將其中的大寫字母用下面列出的對(duì)應(yīng)大寫字母替換,其余字符不變,輸出替換后的字符串。試編寫相應(yīng)程序。
	原字母對(duì)應(yīng)字母
	A→Z
	B→Y
	C→X
	D→W
	...
	X→C
	Y→B
	Z→A

	*/

	int i;
	char ch, str[80];
	printf("input a string:");
	i = 0;
	while ((ch = getchar()) != '\n')
	{
		str[i++] = ch;
	}
	str[i] = '\0';
	for (i = 0; str[i] != '\0'; i++)
		if (str[i] <= 'Z' && str[i] >= 'A')
			str[i] = 'A' + 'Z' - str[i];
	printf("After replaced:");
	for (i = 0; str[i] != '\0'; i++)
		putchar(str[i]);
	putchar('\n');
	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案

題目8:字符串轉(zhuǎn)換成十進(jìn)制整數(shù)。輸入一個(gè)以字符 “#” 結(jié)束的字符串,濾去所有的非十六進(jìn)制字符(不分太小寫),組成一個(gè)新的表示十六進(jìn)制數(shù)字的字存串,然后將其轉(zhuǎn)換為十進(jìn)制數(shù)后輸出。如果過濾后字符串的首字符為 “-“ 代表該數(shù)是負(fù)數(shù)。試編寫相應(yīng)程序。

答案代碼:

#include <stdio.h>
int main()
{
	// 習(xí)題(7.3.2)
	/*
	求一批整數(shù)中出現(xiàn)最多的數(shù)字。輸入一個(gè)正整數(shù) n(1<n≤1 000), 再輸入 n 個(gè)整數(shù),分析每個(gè)整數(shù)的每一位數(shù)字,
	求出現(xiàn)次數(shù)最多的數(shù)字。例如輸入 3 個(gè)整數(shù) 1234、2345、3456, 其中出現(xiàn)次數(shù)最多的數(shù)字是 3 和 4 ,均出現(xiàn)了 3 次。
	*/

	char str_old[81], str_new[81];
	int i = 0, j, flag = 0, temp; // flag用來表示是否有負(fù)號(hào)存在,0表示負(fù)數(shù),1表示正數(shù)
	long sum = 0;
	printf("input s string:");
	while ((str_old[i] = getchar()) != '#')
		i++; //輸入一個(gè)以'#'結(jié)束的非空字符串

	str_old[i] = '\0';

	for (i = 0; str_old[i] != '\0'; i++)
		if (str_old[i] == '-')
		{
			temp = i;
			break;
		} //找到第一個(gè)'-'出現(xiàn)的位置,用temp保存

	for (i = 0; i < temp; i++)
	{
		if ((str_old[i] >= '0' && str_old[i] <= '9') || (str_old[i] >= 'a' && str_old[i] <= 'f') || (str_old[i] >= 'A' && str_old[i] <= 'F'))
		{
			flag = 1;
			break;
		}
	} //遍歷字符串至temp,如果第一個(gè)'-'之前存在十六進(jìn)制數(shù)字,那么'-'無效,該數(shù)為正

	for (i = 0, j = 0; str_old[i] != '\0'; i++)
	{
		if ((str_old[i] >= '0' && str_old[i] <= '9') || (str_old[i] >= 'a' && str_old[i] <= 'f') || (str_old[i] >= 'A' && str_old[i] <= 'F'))
		{
			str_new[j] = str_old[i];
			j++;
		}
	} //濾去所有與十六進(jìn)制數(shù)無關(guān)的字符

	str_new[j] = '\0';

	for (j = 0; str_new[j] != '\0'; j++)
	{
		if (str_new[j] >= '0' && str_new[j] <= '9')
			sum = 16 * sum + str_new[j] - '0';
		else if (str_new[j] >= 'a' && str_new[j] <= 'f')
			sum = 16 * sum + str_new[j] - 'a' + 10;
		else if (str_new[j] >= 'A' && str_new[j] <= 'F')
			sum = 16 * sum + str_new[j] - 'A' + 10;
	} //十六進(jìn)制轉(zhuǎn)化為十進(jìn)制數(shù)

	if (flag == 0)
		sum = -sum;

	printf("%ld\n", sum);

	return 0;
}

運(yùn)行結(jié)果:

浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案文章來源地址http://www.zghlxwxcb.cn/news/detail-417122.html

到了這里,關(guān)于浙大版《C語言程序設(shè)計(jì)》第四版(何欽銘顏暉) 第7章 數(shù)組 課后習(xí)題答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包