第七次课上课程序及习题参考程序.docx
《第七次课上课程序及习题参考程序.docx》由会员分享,可在线阅读,更多相关《第七次课上课程序及习题参考程序.docx(20页珍藏版)》请在冰豆网上搜索。
第七次课上课程序及习题参考程序
第七次课上课程序
复习:
例1:
选择法排序:
#include
intmain(void)
{
intarr[10],i,j,temp,min;
printf("Pleaseinput10numbers:
\n");
for(i=0;I<10;i++)/*数组的输入*/
scanf("%d",&arr[i]);
}
for(i=0;i<10-1;i++)/*选择法从小到大排序*/
min=i;
for(j=i+1;j<10;j++)
if(arr[min]>arr[j])
min=j;
if(min!
=i)
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
printf("Thesortednumbers:
for(i=0;i<10;i++)/*数组的输出*/
printf("%4d",arr[i]);
return0;
例2:
冒泡法排序
intarr[10,i,j,temp;
for(i=0;i<10;i++)/*数组的输入*/
for(i=0;i<10-1;i++)/*冒泡法从小到大排序*/
for(j=0;j<10–i-1;j++)
if(arr[j]>arr[j+1])
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
函数独立:
记忆1:
理解并记忆例1和例2选择法、冒泡法函数的声明、调用、定义
voidselect_sort(intarr[],intn);/*选择法排序函数声明*/
intarr[10],i;
for(i=0;i<10;i++)
select_sort(arr,10);/*选择法排序函数调用*/
printf("\n");
voidselect_sort(intarr[],intn)/*选择法排序函数定义*/
inti,j,min,temp;
for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}例2:冒泡法排序#includevoidbubble_sort(intarr[],intn);/*冒泡法排序函数声明*/intmain(void){intarr[10],i;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}bubble_sort(arr,10);/*冒泡法排序函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");return0;}voidbubble_sort(intarr[],intn)/*冒泡法排序函数定义*/{inti,j,temp;for(i=0;i{for(j=0;j{if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}例3:二维数组举例58题码: 章节:数组 考查点:键盘输入技巧的掌握和二维数组的应用 难度:2 编写一程序P2-216.C实现以下功能 求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。编程可用素材:printf("Please input m: ")...、printf("\nPlease input array:\n")...、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[][]数组中所有元素进行比较找出最大值并记下其行标和列标#includeintmain(void){/*定义变量*/intarr[20][20];inti,j,m,max,maxi,maxj;/*输入数据*/printf("Pleaseinputm:");scanf("%d",&m);printf("\nPleaseinputarray:\n");for(i=0;i{for(j=0;j{scanf("%d",&arr[i][j]);}}/*处理数据*/max=arr[0][0];maxi=0;maxj=0;for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}例2:冒泡法排序#includevoidbubble_sort(intarr[],intn);/*冒泡法排序函数声明*/intmain(void){intarr[10],i;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}bubble_sort(arr,10);/*冒泡法排序函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");return0;}voidbubble_sort(intarr[],intn)/*冒泡法排序函数定义*/{inti,j,temp;for(i=0;i{for(j=0;j{if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}例3:二维数组举例58题码: 章节:数组 考查点:键盘输入技巧的掌握和二维数组的应用 难度:2 编写一程序P2-216.C实现以下功能 求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。编程可用素材:printf("Please input m: ")...、printf("\nPlease input array:\n")...、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[][]数组中所有元素进行比较找出最大值并记下其行标和列标#includeintmain(void){/*定义变量*/intarr[20][20];inti,j,m,max,maxi,maxj;/*输入数据*/printf("Pleaseinputm:");scanf("%d",&m);printf("\nPleaseinputarray:\n");for(i=0;i{for(j=0;j{scanf("%d",&arr[i][j]);}}/*处理数据*/max=arr[0][0];maxi=0;maxj=0;for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
voidbubble_sort(intarr[],intn);/*冒泡法排序函数声明*/
bubble_sort(arr,10);/*冒泡法排序函数调用*/
voidbubble_sort(intarr[],intn)/*冒泡法排序函数定义*/
inti,j,temp;
for(i=0;i{for(j=0;j{if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}例3:二维数组举例58题码: 章节:数组 考查点:键盘输入技巧的掌握和二维数组的应用 难度:2 编写一程序P2-216.C实现以下功能 求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。编程可用素材:printf("Please input m: ")...、printf("\nPlease input array:\n")...、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[][]数组中所有元素进行比较找出最大值并记下其行标和列标#includeintmain(void){/*定义变量*/intarr[20][20];inti,j,m,max,maxi,maxj;/*输入数据*/printf("Pleaseinputm:");scanf("%d",&m);printf("\nPleaseinputarray:\n");for(i=0;i{for(j=0;j{scanf("%d",&arr[i][j]);}}/*处理数据*/max=arr[0][0];maxi=0;maxj=0;for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
for(j=0;j{if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}例3:二维数组举例58题码: 章节:数组 考查点:键盘输入技巧的掌握和二维数组的应用 难度:2 编写一程序P2-216.C实现以下功能 求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。编程可用素材:printf("Please input m: ")...、printf("\nPlease input array:\n")...、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[][]数组中所有元素进行比较找出最大值并记下其行标和列标#includeintmain(void){/*定义变量*/intarr[20][20];inti,j,m,max,maxi,maxj;/*输入数据*/printf("Pleaseinputm:");scanf("%d",&m);printf("\nPleaseinputarray:\n");for(i=0;i{for(j=0;j{scanf("%d",&arr[i][j]);}}/*处理数据*/max=arr[0][0];maxi=0;maxj=0;for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
例3:
二维数组举例
58题码:
章节:
数组 考查点:
键盘输入技巧的掌握和二维数组的应用 难度:
2
编写一程序P2-216.C实现以下功能
求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:
printf("Please input m:
")...、printf("\nPlease input array:
\n")...、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;
/*输入数据*/
printf("Pleaseinputm:
");
scanf("%d",&m);
printf("\nPleaseinputarray:
for(i=0;i{for(j=0;j{scanf("%d",&arr[i][j]);}}/*处理数据*/max=arr[0][0];maxi=0;maxj=0;for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
for(j=0;j{scanf("%d",&arr[i][j]);}}/*处理数据*/max=arr[0][0];maxi=0;maxj=0;for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
scanf("%d",&arr[i][j]);
/*处理数据*/
max=arr[0][0];
maxi=0;
maxj=0;
for(i=0;i{for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
for(j=0;j{if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
if(max{max=arr[i][j];maxi=i;maxj=j;}}}/*输出数据*/printf("\nmax=%d,i=%d,j=%d\n",max,maxi,maxj);return0;}类似有59题(p2-217.c)、60题(p2-218.c)例4:顺序查找函数——有序表和无序表皆可intsearch(inta[],intn,intx){inti;for(i=0;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
max=arr[i][j];
maxi=i;
maxj=j;
/*输出数据*/
printf("\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;i{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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
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开始计算)元素:#includevoidselect_sort(intarr[],intn);/*函数声明*/intbinsearch(inta[],intn,intx);/*函数声明*/intmain(void){intarr[10],i,num,flag;printf("Pleaseinput10numbers:\n");for(i=0;i<10;i++){scanf("%d",&arr[i]);}select_sort(arr,10);/*函数调用*/printf("Thesortednumbers:\n");for(i=0;i<10;i++){printf("%4d",arr[i]);}printf("\n");printf("inputthenumtolookfor:\n");scanf("%d",&num);flag=binsearch(arr,10,num);/*函数调用*/if(flag!=-1){printf("thepositionof%dis%d\n",num,flag+1);}else{printf("notfind!\n");}return0;}voidselect_sort(intarr[],intn)/*函数定义*/{inti,j,min,temp;for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
high=mid-1;
else
return(mid);
记忆2:
排序+查找:
理解并记忆例6
例6:
输入10个数,从小到大排序,然后输入一个数,要求找出该数是数组中第几个(序号从1开始计算)元素:
voidselect_sort(intarr[],intn);/*函数声明*/
intbinsearch(inta[],intn,intx);/*函数声明*/
intarr[10],i,num,flag;
select_sort(arr,10);/*函数调用*/
printf("inputthenumtolookfor:
scanf("%d",&num);
flag=binsearch(arr,10,num);/*函数调用*/
if(flag!
=-1)
printf("thepositionof%dis%d\n",num,flag+1);
printf("notfind!
voidselect_sort(intarr[],intn)/*函数定义*/
for(i=0;i{min=i;for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
for(j=i+1;j{if(arr[min]>arr[j]){min=j;}}if(min!=i){temp=arr[i];arr[i]=arr[min];arr[min]=temp;}}}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);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
intbinsearch(inta[],intn,intx)/*函数定义*/
elseif(x{high=mid-1;}else{return(mid);}}return(-1);}字符串与字符数组记忆3:理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出例7_1:一维字符数组逐个输入与输出,理解并记忆for中循环终止条件#includeintmain(void){inti;charstr[80],ch;printf("Inputastring:");for(i=0;(ch=(char)getchar())!='\n';i++)/*字符串输入遇上‘\n’结束*/{str[i]=ch;}str[i]='\0';/*人为加上结束符*/printf("outputastring:");/*字符串输出遇上结束符‘\0’结束*/for(i=0;str[i]!='\0';i++){putchar(str[i]);}printf("\n");return0;}例7_2:一维字符数组整体输入使用scanf()和printf()——不能输入带空格字符串使用gets()和puts()——可输入带空格的字符串#includeintmain(void){charstr[80];printf("Inputastring:");gets(str);/*scanf("%s",str);*/printf("Outputastring:");puts(str);/*printf("%s",str);*/printf("\n");return0;}例8:二维字符数组的输入和输出#includeintmain(void){charstr[5][80];printf("Inputastring:");for(i=0;i<5;i++){gets(str);}printf("Outputastring:");for(i=0;i<5;i++){puts(str);}printf("\n");return0;}例9:53题码: 章节:数组 考查点:字符数组的处理,循环和判断 难度:2 编写一程序P2-220.C实现以下功能 从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Pleaseinputstring:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。 程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。#includeintmain(void){charstr[128];inti,zimu=0,shuzi=0,kongge=0,qita=0;printf("Pleaseinputstring:");gets(str);for(i=0;str[i]!='\0';i++){if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z'))){zimu++;}elseif((str[i]>='0')&&(str[i]<='9')){shuzi++;}elseif(str[i]==''){kongge++;}else{qita++;}}printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);return0;}记忆4:理解并记忆例10中二维字符数组的输入和输出及排序例10:95题码:章节:数组考查点:排序算法,二维字符数组及字符串处理函数的应用难度:3 编写一程序P7-719.C实现以下功能 从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的hellomyfriendAreyouready?help! 是从键盘输入的内容。#include#includevoidsel_sort(chars[][81],intn);intmain(void){charstr[5][81];inti;printf("Input5strings:\n");for(i=0;i<5;i++){gets(str[i]);}sel_sort(str,5);printf("---------------------------\n");for(i=0;i<5;i++){puts(str[i]);}return0;}voidsel_sort(chars[][81],intn){inti,j,min;chartemp[81];for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
字符串与字符数组
记忆3:
理解并记忆例7和例8一维字符数组和二维字符数组的输入和输出
例7_1:
一维字符数组逐个输入与输出,理解并记忆for中循环终止条件
charstr[80],ch;
printf("Inputastring:
for(i=0;(ch=(char)getchar())!
='\n';i++)/*字符串输入遇上‘\n’结束*/
str[i]=ch;
str[i]='\0';/*人为加上结束符*/
printf("outputastring:
");/*字符串输出遇上结束符‘\0’结束*/
for(i=0;str[i]!
='\0';i++)
putchar(str[i]);
例7_2:
一维字符数组整体输入
使用scanf()和printf()——不能输入带空格字符串
使用gets()和puts()——可输入带空格的字符串
charstr[80];
gets(str);/*scanf("%s",str);*/
printf("Outputastring:
puts(str);/*printf("%s",str);*/
例8:
二维字符数组的输入和输出
charstr[5][80];
for(i=0;i<5;i++)
gets(str);
puts(str);
例9:
53题码:
字符数组的处理,循环和判断 难度:
编写一程序P2-220.C实现以下功能
从键盘读入一行字符(约定:
字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。
printf("Pleaseinputstring:
")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwaflfaf32535是从键盘输入的内容。
charstr[128];
inti,zimu=0,shuzi=0,kongge=0,qita=0;
if(((str[i]>='a')&&(str[i]<='z'))||((str[i]>='A')&&(str[i]<='Z')))
zimu++;
elseif((str[i]>='0')&&(str[i]<='9'))
shuzi++;
elseif(str[i]=='')
kongge++;
qita++;
printf("\nzimu=%d,shuzi=%d,kongge=%d,qita=%d\n",zimu,shuzi,kongge,qita);
记忆4:
理解并记忆例10中二维字符数组的输入和输出及排序
例10:
95题码:
数组考查点:
排序算法,二维字符数组及字符串处理函数的应用难度:
3
编写一程序P7-719.C实现以下功能
从键盘上输入5个字符串(约定:
每个字符串中字符数≤80字节),对其进行升序排序并输出。
printf("Input5strings:
\n")...、printf("---------------------------\n")...。
程序的运行效果应类似地如图1所示,图1中的
hello
my
friend
Areyouready?
help!
voidsel_sort(chars[][81],intn);
charstr[5][81];
gets(str[i]);
sel_sort(str,5);
printf("---------------------------\n");
puts(str[i]);
voidsel_sort(chars[][81],intn)
inti,j,min;
chartemp[81];
for(i=0;i{min=i;for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
for(j=i+1;j{if(strcmp(s[min],s[j])>0){min=j;}}if(min!=i){strcpy(temp,s[i]);strcpy(s[i],s[min]);strcpy(s[min],temp);}}}习题参考程序习题7-5P7-771.c思路:找到一个单词将其放在temp[128]数组中,并用count统计其长度,若count>maxlen,则将temp[128]中的暂存单词复制到max[128]中,并用maxlen(maxlen=count)记下该单词长度。#include#includeintmain(void){charstr[128],temp[128],max[128];inti,j=0,count=0,maxlen=0;printf("pleaseinputastring:\n");gets(str);for(i=0;str[i]!='\0';i++){if(str[i]!=''){temp[j]=str[i];j++;count++;}elseif(j!=0)/*处理单词和单词之间有多个空格*/{temp[j]='\0';if(count>maxlen){strcpy(max,temp);maxlen=count;}j=0;count=0;}}if(count>maxlen)/*处理最后一个单词是最长单词*/{strcpy(max,temp);maxlen=count;}printf("\nmax_lengthofthestringis:%d\n",maxlen);return0;}习题7-6P7-705.c#includeintmain(void){charch;printf("Pleaseinputtheletterofsomeday:");while((ch=(char)getchar())!='Y'){switch(ch){case'M':printf("Monday\n");break;case'W':printf("Wednesday\n");break;case'F':printf("Friday\n");break;case'T':ch=(char)getchar();if(ch=='u'){printf("Tuesday\n");}elseif(ch=='h'){printf("Thrusday\n");}else{ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/printf("dataerror\n");}break;case'S':ch=(char)getchar();if(ch=='a'){printf("Saturday\n");}elseif(ch=='u'){
if(strcmp(s[min],s[j])>0)
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;
printf("pleaseinputastring:
if(str[i]!
='')
temp[j]=str[i];
j++;
count++;
elseif(j!
=0)/*处理单词和单词之间有多个空格*/
temp[j]='\0';
if(count>maxlen)
strcpy(max,temp);
maxlen=count;
j=0;
count=0;
if(count>maxlen)/*处理最后一个单词是最长单词*/
printf("\nmax_lengthofthestringis:
%d\n",maxlen);
习题7-6
P7-705.c
charch;
printf("Pleaseinputtheletterofsomeday:
while((ch=(char)getchar())!
='Y')
switch(ch)
case'M':
printf("Monday\n");
break;
case'W':
printf("Wednesday\n");
case'F':
printf("Friday\n");
case'T':
ch=(char)getchar();
if(ch=='u')
printf("Tuesday\n");
elseif(ch=='h')
printf("Thrusday\n");
ungetc(ch,stdin);/*将ch中的字符还给stdin即键盘*/
printf("dataerror\n");
case'S':
if(ch=='a')
printf("Saturday\n");
elseif(ch=='u')
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1