第七次课上课程序及习题参考程序文档格式.docx
- 文档编号:19816787
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:20
- 大小:71.69KB
第七次课上课程序及习题参考程序文档格式.docx
《第七次课上课程序及习题参考程序文档格式.docx》由会员分享,可在线阅读,更多相关《第七次课上课程序及习题参考程序文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
arr[i]=arr[min];
arr[min]=temp;
Thesortednumbers:
i++)/*数组的输出*/
printf("
%4d"
arr[i]);
return0;
}
例2:
冒泡法排序
intarr[10,i,j,temp;
for(i=0;
i++)/*数组的输入*/
i++)/*冒泡法从小到大排序*/
for(j=0;
j<
10–i-1;
if(arr[j]>
arr[j+1])
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
i<
i++)/*数组的输出*/
函数独立:
记忆1:
理解并记忆例1和例2选择法、冒泡法函数的声明、调用、定义
voidselect_sort(intarr[],intn);
/*选择法排序函数声明*/
intarr[10],i;
i++)
select_sort(arr,10);
/*选择法排序函数调用*/
i++)
voidselect_sort(intarr[],intn)/*选择法排序函数定义*/
{
inti,j,min,temp;
n-1;
n;
voidbubble_sort(intarr[],intn);
/*冒泡法排序函数声明*/
bubble_sort(arr,10);
/*冒泡法排序函数调用*/
voidbubble_sort(intarr[],intn)/*冒泡法排序函数定义*/
inti,j,temp;
n-i-1;
}
例3:
二维数组举例
58题码:
章节:
数组 考查点:
键盘输入技巧的掌握和二维数组的应用 难度:
2
编写一程序P2-216.C实现以下功能
求任意的一个m×
m矩阵的最大数及其所在的行列数,m(2<
=m<
=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:
printf("
Please
input
m:
"
)...、printf("
\nPlease
array:
)...、printf("
\nmax=...,i=...,j=...\n"
...。
程序的运行效果应类似地如图1所示,图1中的5和
1
45
67
235
464
35
6
89
32342
8
347
9346
47
95
746
46
785
436
19434
634
3235
567
24
8465
25
是从键盘输入的内容。
图1程序运行效果示例
分析结果:
输入:
m和arr[][]值
输出:
最大值max及其行标maxi和列标maxj
算法:
初值max=arr[0][0],maxi=0,maxj=0;
将max与arr[][]数组中所有元素进行比较找出最大值并记下其行标和列标
/*定义变量*/
intarr[20][20];
inti,j,m,max,maxi,maxj;
/*输入数据*/
Pleaseinputm:
"
scanf("
m);
\nPleaseinputarray:
m;
i++)/*i控制行*/
for(j=0;
j++)/*j控制列*/
scanf("
arr[i][j]);
/*处理数据*/
max=arr[0][0];
maxi=0;
maxj=0;
if(max<
arr[i][j])
max=arr[i][j];
maxi=i;
maxj=j;
/*输出数据*/
\nmax=%d,i=%d,j=%d\n"
max,maxi,maxj);
类似有59题(p2-217.c)、60题(p2-218.c)
例4:
顺序查找函数——有序表和无序表皆可
intsearch(inta[],intn,intx)
inti;
for(i=0;
n;
if(a[i]==x)
return(i);
return(-1);
例5:
折半查找函数——适用于有序表
intbinsearch(inta[],intn,intx)
intlow,high,mid;
low=0;
high=n-1;
while(low<
=high)
mid=(high+low)/2;
if(x>
a[mid])
low=mid+1;
elseif(x<
high=mid-1;
else
return(mid);
return(-1);
记忆2:
排序+查找:
理解并记忆例6
例6:
输入10个数,从小到大排序,然后输入一个数,要求找出该数是数组中第几个(序号从1开始计算)元素:
/*函数声明*/
intbinsearch(inta[],intn,intx);
/*函数声明*/
intarr[10],i,num,flag;
/*函数调用*/
inputthenumtolookfor:
num);
flag=binsearch(arr,10,num);
/*函数调用*/
if(flag!
=-1)
thepositionof%dis%d\n"
num,flag+1);
else
notfind!
voidselect_sort(intarr[],intn)/*函数定义*/
=i)
intbinsearch(inta[],intn,intx)/*函数定义*/
字符串与字符数组
记忆3:
理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出
例7_1:
一维字符数组逐个输入与输出,理解并记忆for中循环终止条件
charstr[80],ch;
Inputastring:
(ch=(char)getchar())!
='
\n'
;
i++)/*字符串输入遇上‘\n’结束*/
str[i]=ch;
str[i]='
\0'
/*人为加上结束符*/
outputastring:
/*字符串输出遇上结束符‘\0’结束*/
str[i]!
putchar(str[i]);
例7_2:
一维字符数组整体输入
使用scanf()和printf()——不能输入带空格字符串
使用gets()和puts()——可输入带空格的字符串
charstr[80];
gets(str);
/*scanf("
%s"
str);
*/
Outputastring:
puts(str);
/*printf("
str);
例8:
二维字符数组的输入和输出
charstr[5][80];
i<
5;
i++)
gets(str);
puts(str);
例9:
53题码:
章节:
数组 考查点:
字符数组的处理,循环和判断 难度:
编写一程序P2-220.C实现以下功能
从键盘读入一行字符(约定:
字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。
Pleaseinputstring:
\nzimu=...,shuzi=...,kongge=...,qita=..."
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。
charstr[128];
inti,zimu=0,shuzi=0,kongge=0,qita=0;
for(i=0;
if(((str[i]>
a'
)&
&
(str[i]<
z'
))||((str[i]>
A'
Z'
)))
zimu++;
elseif((str[i]>
0'
9'
))
shuzi++;
elseif(str[i]=='
'
)
kongge++;
else
qita++;
\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n"
zimu,shuzi,kongge,qita);
记忆4:
理解并记忆例10中二维字符数组的输入和输出及排序
例10:
95题码:
章节:
数组考查点:
排序算法,二维字符数组及字符串处理函数的应用难度:
3
编写一程序P7-719.C实现以下功能
从键盘上输入5个字符串(约定:
每个字符串中字符数≤80字节),对其进行升序排序并输出。
编程可用素材:
Input5strings:
---------------------------\n"
)...。
程序的运行效果应类似地如图1所示,图1中的
hello
my
friend
Areyouready?
help!
string.h>
voidsel_sort(chars[][81],intn);
charstr[5][81];
5;
gets(str[i]);
sel_sort(str,5);
puts(str[i]);
voidsel_sort(chars[][81],intn)
inti,j,min;
chartemp[81];
for(j=i+1;
if(strcmp(s[min],s[j])>
0)
=i)
strcpy(temp,s[i]);
strcpy(s[i],s[min]);
strcpy(s[min],temp);
习题参考程序
习题7-5
P7-771.c
思路:
找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>
maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。
charstr[128],temp[128],max[128];
inti,j=0,count=0,maxlen=0;
pleaseinputastring:
if(str[i]!
temp[j]=str[i];
j++;
count++;
elseif(j!
=0)/*处理单词和单词之间有多个空格*/
temp[j]='
if(count>
maxlen)
strcpy(max,temp);
maxlen=count;
j=0;
count=0;
}
if(count>
maxlen)/*处理最后一个单词是最长单词*/
strcpy(max,temp);
maxlen=count;
\nmax_lengthofthestringis:
%d\n"
maxlen);
习题7-6
P7-705.c
charch;
Pleaseinputtheletterofsomeday:
while((ch=(char)getchar())!
Y'
switch(ch)
case'
M'
:
printf("
Monday\n"
break;
W'
Wednesday\n"
F'
Friday\n"
T'
ch=(char)getchar();
if(ch=='
u'
{
printf("
Tuesday\n"
}
elseif(ch=='
h'
Thrusday\n"
else
ungetc(ch,stdin);
/*将ch中的字符还给stdin即键盘*/
dataerror\n"
S'
Saturday\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 上课 程序 习题 参考