上机实验七 二维数组字符数组答案

发布 2022-09-05 03:06:28 阅读 5147

1算法提示:分析一个10行的杨辉三角,需要一个10×10的二维矩阵a,则:

1) 杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,..9)前i+1个元素,即a[i][j]!=0 (j=0...i).

2) 每行的第0列元素均为1,即a[i][0]=1;

3) 每行的主对角线元素也均为1,即a[i][i]=1;

4) 从第2行开始,每行夹在第0列元素与主对角线元素之间的元素a[i][j]( i=2,3,..9, j=1,..i-1 ) 等于其左上方元素a[i-1][j-1]与正上方元素a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j];

5) 输出该矩阵的下三角,即得出杨辉三角的前10行。

源程序:#include<>

void main()

int i, j, int a[10][10];

for(i=0; i<10; i各行的第0列元素与主对角线元素赋1

a[i][0a[i][i] =1;

for( i=2; i<10; i为第2~9行的夹在第0列与主对角线之间的元素赋值。

for(j=1;j< i ;j++)

a[i][j]= a[i-1][j-1]+a[i-1][j

for(i=0; i<10; i输出矩阵中的下三角矩阵。

for(j=0; j <=i ; j++)

printf("%5d", a[i][j]);

printf("");line 12

问: 如果删除line 12,程序运行结果有何不同?

答: 所有数字都没有换行。

实验题3】程序改错:输入一个以回车结束的字符串(有效长度少于80),将其中的小写字母统一更换成对应的大写字母。

提示:三项任务:1、输入字符串,并存储在字符数组中;

2、遍历字符串的每个元素,如果是小写字母('a'97~'z'122),则更换成大写字母。

3、输出更新后的字符串。

源程序:#include<>

void main()

int i;

char s[80];

i=0;while( (s[i] =getchar())n' )i输入字符串,以回车结束。记住这个写法。

s[i]= 0输入字符串结束符号。

for( i=0; s[i]!=0' ;i将遍历字符串,将小写字母转换成大写字母。

if( s[i]>=a'&&s[i]<=z')

s[i]= s[i] -32

for( i=0; s[i]!=0'; i++

printf("%c",s[i输出字符串,每次输出一个字符。

printf("");

运行程序,输入:tom&jack-s10

输出结果: tom&jack-s10

实验题4】程序填空:输入一个以回车结束的字符串(有效长度少于80),将该字符串中的字符重新排列,使原先第0个字符出现在最后一位,原先第1个字符出现在倒数第2位,。。原先最后1个字符出现在第0位,例如:

字符串"abcdef"经重排后变成"fedcba"。

算法分析: 该问题类似于方阵转置,即把特定位置的数组元素进行交换。本题中的字符串存放在一维字符型数组s中,需要解决以下问题:

1) 计算字符串s的有效长度len

2) 将字符串s的前半部分(0~len/2-1)与字符串的后半部分对调,即交换对称元素,与s[i]对称的元素是s[len-1-i],如下图所示:

abcdef

len=6

源程序:#include <>

#include <>

void main()

int i, len=0;

char s[80],temp;

printf("input a string(<80):");

gets(s调用字符串输入函数gets(),输入字符串到s

len = strlen(s统计字符串有效长度len

for( i=0; i< len/2 ; i++)

puts(s调用字符串输出函数puts, 输出处理后的字符串s

选做题。实验题5】

1) 利用公式,

编写一个计算pi的近似值程序,当最后一项小于10-5时为计算终止条件。

源**粘贴处。

#include <>

int main()

int i;

double t=1.0,sum = 1.0;

//t用来表示出每一项1/3*2/5...i=1时t=1/3;i=2时t=1/3*2/5...

//sum是一个累加器。

for(i = 1; t > 1e-5; i++)

printf("%f",sum);

return 0;

(2) 求所有四位数中的可逆素数个数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。

本题答案应该是204个。

源**粘贴处。

#include <>

int main()

int g,s,b,q,i,num,r_num,sum=0;//g,s,b,q分别表示个、十、百、千位。

for(num = 1000; num < 10000; num++

printf("%d",sum);

return 0;

上机实验七 二维数组字符数组答案

1算法提示 分析一个10行的杨辉三角,需要一个10 10的二维矩阵a,则 1 杨辉三角为下三角矩阵,只需要求出第i行 i 0,1,2,9 前i 1个元素,即a i j 0 j 0.i 2 每行的第0列元素均为1,即a i 0 1 3 每行的主对角线元素也均为1,即a i i 1 4 从第2行开始,每...

上机实验六一维数组 答案

班级学号姓名 本次题目一共5题,必做4个,选做1个。选做题可能有点难度,请尝试着做一下,能做出来说明目前你已经很强了!一 目的要求。1 掌握一维数组的基本概念,定义和初始化方法 2 掌握一维数组的基本操作,如输入 输出 引用数组元素 3 掌握与数组有关的基本算法,如寻找最大 最小值 排序等。二 实验...

上机实验六一维数组 答案

班级学号姓名 本次题目一共5题,必做4个,选做1个。选做题可能有点难度,请尝试着做一下,能做出来说明目前你已经很强了!一 目的要求。1 掌握一维数组的基本概念,定义和初始化方法 2 掌握一维数组的基本操作,如输入 输出 引用数组元素 3 掌握与数组有关的基本算法,如寻找最大 最小值 排序等。二 实验...