实验 8 二维数组与字符数Word格式文档下载.docx
- 文档编号:20532360
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:14
- 大小:411.97KB
实验 8 二维数组与字符数Word格式文档下载.docx
《实验 8 二维数组与字符数Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验 8 二维数组与字符数Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
i++)
for(j=0;
j<
j++)
scanf("
%d"
&
a[i][j]);
for(i=0;
i++){
sum1+=a[i][i];
sum2+=a[i][3-i];
}
printf("
sum1=%d,sum2=%d\n"
sum1,sum2);
}
【实验题2】程序填空,打印杨辉三角形前10行:
1
11
121
1331
14641
15101051
……………………
分析一个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,..,i1
)等于其左上方元素a[i1][
j1]
与正上方元素
a[i1][
j]之和,即a[i][j]=a[i1][
j1]+
j];
5)输出该矩阵的下三角,即得出杨辉三角的前10行。
l问:
如果删除Line12,程序运行结果有何不同?
inti,j;
inta[10][10];
10;
a[i][0]=a[i][i]=1;
for(i=2;
for(j=1;
i;
a[i][j]=a[i-1][j-1]+a[i-1][j];
=i;
printf("
%5d"
a[i][j]);
}
无法成三角形
【实验题3】程序填空,输入一个以回车结束的字符串(有效长度少于80),
将其中的小写字母统一更换成对应的大写字母。
1、输入字符串,并存储在字符数组中,’\n’表示回车;
2、遍历字符串的每个元素,如果是小写字母(’a’97~’z’122),则更换成大写字母;
3、输出更新后的字符串。
运行程序,输入:
Tom&
Jacks10
输出结果:
inti;
chars[80];
i=0;
while((s[i]=getchar())!
='
\n'
)i++;
s[i]='
\0'
;
80;
i++)
if(s[i]>
a'
&
s[i]<
z'
)s[i]-=32;
s[i]!
%c"
s[i]);
【实验题4】程序填空,输入一个以回车结束的字符串(有效长度少于80),
将该字符串中的字符重新排列,使原先第0个字符出现在最后一位,原先第1
个字符出现在倒数第2位,……,原先最后1个字符出现在第0位,例如:
字符
串”abcdef”经重排后变成”fedcba”。
该问题类似于方阵转置,即把特定位置的数组元素进行交换。
本
题中的字符串存放在一维字符型数组s中,需要解决以下问题:
1)计算字符串s的有效长度len
2)将字符串s的前半部分(0~len/21)与字符串的后半部分对调,即交换对称元素,与s[i]对称的元素是s[len1i],
如下图所示:
012345
abcdef\0…
inti,len=0;
chars[80],temp;
Inputastring(<
80):
gets(s);
len++;
=len/2-1;
temp=s[i];
s[i]=s[len-1-i];
s[len-1-i]=temp;
putchar(s[i]);
【实验题5】将一个整数字符串转换为整数输出。
(注:
整数字符串和整数是
不同的,比如"
123"
是一个整数字符串,每个元素都是一个数字,但不能进行数
值运算,而123是一个整数,可以进行数值运算。
两者外观形态相似,本质不同)
【算法分析】利用与字符’0’的ASCII之差进行计算。
#include<
{
charstr[10];
doublet=0;
请输入一个数字字符串(<
=10位)"
gets(str);
str[i]!
t=t*10+(str[i]-'
0'
result=%.0f"
t);
\n谢谢,按回车键结束"
【实验题6】程序填空,编写一个字符串复制程序,它的功能是把一个字符串
的所有内容复制给另一个字符串,并输出复制后的字符串。
chars1[80],s2[80];
请输入字符串s1(<
=80字符)\n"
gets(s1);
s1[i]!
i++)//判断s1的结束标志
s2[i]=s1[i];
s2[i]='
s2=%s\n"
s2);
谢谢,按回车键结束"
【实验题7】程序填空,编写一个求字符串长度的程序,它的功能求出一个字
符串中有效字符的个数。
intlen=0;
请输入一个字符串:
"
gets(s);
;
len=i;
字符串有效长度=%d"
len);
\n谢谢,按回车键结束"
【实验题8】程序填空,编写一个字符串连接程序,它的功能是把两个不知道
长度的字符串s1、s2的内容连接成为一个字符串,并保存在字符串s1中。
(提
示:
要定义足够长的字符串s1)
请输入字符串s1:
gets(s1);
请输入字符串s2:
gets(s2);
i++);
for(j=0;
s2[j]!
j++)
s1[i+j]=s2[j];
s1[i+j]='
连接后的s1=%s"
s1);
******以下题目为选做题******
【实验题9】程序填空,判断一个字符串是否为回文,如果是输出“yes”,否
则输出“no”。
所谓回文是指正读和反读相同的字符串,比如“12321”
请输入一个字符串:
//求出字符串的长度
len++;
len=len-1;
=len/2;
if(s[i]!
=s[len-i])//比较
break;
//跳出循环
if(i>
len/2)//判断
yes"
else
no"
【实验题10】有一篇文章,共有3行文字,每行有80个字符,统计这篇文章
中各个英文字母的个数。
(提示:
可以定义一个长度为26的整型数组num,分别记录26个英文字母的个数,比如读入的字母为'
,则num[0]++,读入的字母为'
b'
,则num[1]++,......)
charstr[3][80],c;
intcnt[26],i,j;
26;
cnt[i]=0;
3;
{
请输入第%d行字符:
i+1);
gets(str[i]);
str[i][j]!
{
c=str[i][j];
if(c>
c<
)
cnt[c-'
]++;
elseif(c>
A'
Z'
%c:
%d\t"
'
+i,cnt[i]);
【实验题11】该程序功能:
输入1个字符串,按字母出现次序输出其中所出现
过的大写英文字母。
如运行时输入字符串"
FONTNAMEandFILENAME"
,应输
出"
FONTAMEIL"
。
该文件中“/*****N*****/”的下一行中有错误,请改正!
charx[80],y[26];
inti,j,ny=0;
gets(x);
for(i=0;
x[i]!
if(x[i]>
&
x[i]<
for(j=0;
ny;
/*****1*****/
if(y[j]==x[i])break;
if(j==ny){y[ny]=x[i];
ny++;
/*****2*****/
printf("
y[i]);
【实验题12】程序填空,二-十进制转换:
输入一个8位二进制字符串b(由字符’1’和’0’组成),输出对应的十进制整数。
例如,输入二进制字符串10010001,
输出十进制整数145
1、由于二进制字符串b的长度固定为8,因此定义字符数组charb[8]即
可,每个元素对应一个二进制位;
2、循环1:
输入二进制字符,输入的每一个字符先暂存在字符变量ch
中,检查ch是否是’0’或’1’,是则存入数组b,并令数组下标i增1,不是
则跳过该字符。
3、循环2:
二-十进制转换:
从前往后,带权累加数组b各元素对应的数
值b[i]‘0’:
d=d×
2+b[i]‘0’
inti,d;
charch,b[8];
Intput8-bitbinary:
while(i<
8){
ch=getchar();
if(ch=='
||ch=='
1'
){b[i]=ch;
i++;
d=0;
8;
i++)d=d*2+b[i]-'
digit=%d\n"
d);
l思考:
如果改为输入一个4位长度的十六进制字符串,如”2f3a”,要输出对应的十进制整数,上面的程序需要如何修改?
charch,b[4];
Intput4-bitbinary:
4){
if(ch>
ch<
9'
||ch>
f'
F'
)
{b[i]=ch;
{if(b[i]>
b[i]<
)d=d*16+(b[i]-'
if(b[i]>
+10);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 二维数组与字符数 二维 数组 字符