14.以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG AB CDEFGH IJKL<回车>,则输出结果为 IJKLCDEFGHAB 。
# include “stdio.h”
void main( int argc,char *argv[]) { while(--argc>0)
printf(\,argv[argc]);
}
15. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。int mystrlen(char *str) { int i;
for(i=0; *(str+i) != '\\0';i++)
;
return ( i ); }
16. 以下程序判断整型数组是否“对称”(即顺读和倒读都一样,如: 1 2 3 3 2 1 # include \ # define N 10
void main()
{ int a[N],*p1=a,*p2;
for(p2=a;p2
scanf(“%d”,p2);
p2= a+N-1 ; while( p1 p1++; p2-- ; } if(p1 prinf(\ else prinf(\ } 25 )。 17. 下面程序的功能是在字符串str中找出最大字符并放在第一个位置上,并将该字符前的原字符 往后顺序移动,如chyab变成ychan。 # include \void main() { char str[128],*p=str,*q,max; gets(p); max=*p; while( *p!= '\\0' ) { if(max<=*p) { max=*p; q=p } p++; } p=q; while( p>str ) { *p=*(p-1); p-- } *p=max; puts(p); } 18. 下面程序的功能是将两个字符串s1和s2连接起来。 #include \ char* conj(char *p1,char *p2) { char *p=p1; while(*p1) p1++ ; while(*p2){ *p1= *p2 ; p1++; p2++;} *p1='\\0'; return p ; } void main() { char s1[80],s2[80]; gets(s1); gets(s2); conj(s1,s2); puts(s1); } 26 19. 以下函数Remove_blank删除字符串中所有空格。 # include \Remove_blank(char *s) { int i, tmp; char tmpstr[128]; for (i = 0, tmp = 0; s[i] != '\\0' ; i++) if(s[i] != ' ') tmpstr[ tmp++ ]=string[i]; tmpstr[tmp]= '\\0' ; strcpy(s,tmpstr); } 20.以下递归函数将n个整数的前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。 void move(int array[],int n,int m) { int *p,array_end; array_end= *(array+n-1) ; for(p=array+n-1;p>array;p--) *p=*(p-1); *array= array_end ; m--; if(m>0) move(array,n,m) ; } 三、编程题(共30分,每题5分) 1.从键盘输入两个字符串a和b,要求不用strcat把b中的前五个字符连接到a中,如果b的长度 小于5,则把b的所有元素都连接到a中。试编程。 2.请编写函数fun,该函数的功能是将M行N列的二维数组中的数据,按列的顺序依次放到一维数 组中。在主函数中输入/输出数组。 3.请编一个的函数fun(char *s),该函数(非递归)的功能是把字符串中的内容逆置。要求不得 使用C语言的字符串函数,在主函数中进行字符串的输入与输出。 例如:输入字符串为abcdefg,则调用该函数后,字符串中的内容为gfedcba。 4.设有一数列,包含10个数,已按升序排好。现要求编程实现从指定位置开始的n个数按逆序重 新排列并输出新的完整数列。进行逆序处理要求用指针方法。(例如:原数列为 2,4,6,8,10,12,14,16,18,20, 若要求把从第4个数开始的5个数按逆序重新排列,则得到的新数列为 2,4,6,16,14,12,10,8,18,20) 27 5.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部 删除,前面和中间的*号不删除。在主函数中输入、输出字符串。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****A*BC*DEF*G。(不得使用C语言提供的字符串函数) 6.M个学生的成绩存放在score数组中,请编写函数,其功能是:将低于平均分的人数作为函数值 返回,将低于平均分的分数放在below所指的数组中。在主函数中输出人数和below数组。 2. 1. #include void strcat5(char *p1,char *p2) { int i=0; while(*p1!='\\0')p1++; /*移到字符串最后*/ while(*p2!='\\0'&&i<5) /*拷贝字符到后面*/ {*p1=*p2;p1++;p2++;i++;} *p1='\\0'; } void main() { char s1[80],s2[80]; gets(s1); gets(s2); strcat5(s1,s2); puts(s1); } #include void Fun(int a[][N],int b[]); void main() { int a[M][N] = {1,2,3,4,5, 6,7,8,9,10, 11,12,13,14,15, 16,17,18,19,20}; int b[M*N]; int i,j; Fun(a,b); printf(\); for(i=0;i printf(\); for(i=0;i void Fun(int a[][N],int b[]) { int i=0,j=0; int *p=b; for (j = 0; j < N; j++) for (i = 0; i < M; i++) *p++=a[i][j]; } for(j=0;j printf(\,a[i][j]); printf(\); 28 3. #include \ void fun(char *s) { char t,*s1,*s2; s1=s2=s; while(*s2!='\\0')s2++; /*移到字符串最后*/ s2--; while(s1 } } void main() { char p[80]; gets(p); fun(p); puts(p); } 4. #include \ void fun(int *p,int n,int start,int count) { int t,*p1,*p2; p1=p+start-1; p2=p+start+count-2; while(p1 p1++;p2--; } } void main() { int a[10]; int i,start,count; printf(\请输入10个数:\\n\); for(i=0;i<10;i++) scanf(\,&a[i]); printf(\请输入起始位置:\\n\); scanf(\,&start); printf(\请输入个数:\\n\); scanf(\,&count); if(start<1||start>10||count<1||count>10 ||start+count-1>10) { printf(\起始位置或个数的范围错误!\\n\); return ; } fun(a,10,start,count); printf(\处理后的结果:\\n\); for(i=0;i<10;i++) printf(\,a[i]); } 29 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库作业本_《C程序设计Ⅱ》答案(6)在线全文阅读。
相关推荐: