C语言习题答案2012年版- 副本- 副本(5)

2019-06-11 00:57

}

2.下面程序实现从键盘输入两个字符串a和b,再将a和b的对应位置字符中的较大者存放在数组c中,填空完成该程序。

while(*p&&*q) {

if(*p>*q 或 *p>=*q)c[k]=?p; else c[k]=?q; p++; q++; k++; }

3.完成下面的程序,以实现单词的输出功能。

q=&s[k]; 4.下列程序实现截取字符串s中从第m个位置开始的n个字符,返回所截字符串的首地址。

sub[k]= s1[m1-1+k]; return sub; 5.下列程序实现在N个元素的数组中查找最小的元素的功能。

return min; min=minunm(a,N); 6.下列程序的功能为求数组元素的平均值。

avg=avg/n ; avg=f( a ,10);

7.下列程序完成3个操作。

(1)输入10个字符串(每串不多于9个字符),依次放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始。

(2)输入每个字符串。

(3)从这些字符串中选出最小的那个字符串并输出。

for(i=0;i<10;i++) { scanf(\%s\ str[i]= sp ; k=strlen(sp); sp+= k ; } k=0;

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

if(strcmp(str[i],str[k]) <0 )k=i; printf(“%s\\n”,str[k]) 或puts(str[k]) ;

8.以下程序利用指针法将两个数按从大到小的顺序显示。

int a,b, *p,*p1,*p2 ; p1=&a ;

printf(\%d,min=%d\\n\ ); 9.下列程序把十进制数n转换成八进制数输出。

if( n<0 ) j= n%8 ; printf(\%c\ *(s+i-1) );

10.下面程序把数组元素按相反的顺序进行存放。

for(i=x,j=x+n?1; i

11.用指针法求出数组中的最大元素与最小元素。

int max=array[0],min=array[0]; for( p=array ;p

12.把一个字符串按从小到大的顺序输出。

void sort(char *name[],int n) if( strcmp(name[k],name[j])>0 ) k=j; printf(\%s\\n\ name[i] ; 13.

av= s/N ; y[ j++ ]=x[i]; x[i]=?1;}

if( x[i]!= -1 ) y[j++]=x[i];

四、编程题 1.(1)定义一个函数separate(int ?data,int n),该函数将n的各个位上的数分离保存在data所指向的数组中。

(2)定义一个函数judge(int ?data,int len),判断data所指向的数组是否为回文。 (3)在main函数中调用上述函数,完成程序的功能。 参考代码:

#include \#include \#define N 10

int separate(int *data,int n) {

int i,k=0,temp; while(n>0) {

data[k]=n; n=n/10; k++; }

for(i=0;i<=k/2;i++) { temp=data[i]; data[i]=data[k-1-i]; data[k-1-i]=temp; }

return k; }

int judge(int *data,int len) {

int i,j;

i=0;j=len-1; while(i

return 1; }

void main() {

int data[N],n,len;

printf(\请输入要转换的数n:\\n\ scanf(\ len=separate(data,n); if(judge(data,len)==1)

printf(\是回文数\\n\ else

printf(\不是回文数\\n\ }

2.从键盘输入两个字符串,输出第一个字符串在第二个字符串中第一次出现的位置(即第一个字符串的首字母在第二个字符串中的位置,如“abc”在“bbacccabcddaw3”中的位置为7)。

要求:使用指针的方法遍历数组。 参考代码:

#include

int find(char *s,char *t); main() { int n; char a[]=\ char b[]=\ n=find(a,b); if(n!=-1) printf(\ else printf(\未找到!\}

int find(char *s,char *t) { char *p,*q,*r; int len,Loc=1; while(*s) { p=s;r=t; while(*r) if(*p==*r) { p++;r++; } else break;

if(*r=='\\0') return Loc; s++;Loc=Loc+1; } return -1; }

3.有n个人围成一圈,顺序排号。从第一个人开始报数(从1~3报数),报到3的人退出圈子,问最后留下的是原来第几号的人。 参考代码:

#include \

#define N 20 /*总人数*/ void main() { int i,a[N],num,dist; num=0; for(i=0;i

if(a[i]==1) dist++; if(dist==3) { printf(\ a[i]=0; dist=0; num++; } i=(i+1)%N; } printf(\最后留下的人是:%d号\\n\}

4.编写一个程序,实现两个顺序字符串(ASC码值由小到大)的连接,连接后的字符串仍为顺序串。如字符串1为“aty”,字符串2为“eknx”,连接后的字符串为“aekntxy”。 参考代码:

#include \

void fun(char *s,char *t,char str[]) /*串s和t按ascii码顺序连接存入str中*/ {

int k=0;

while(*s&&*t) { if(*s<*t) str[k++]=*s++; else str[k++]=*t++; }

while(*s) str[k++]=*s++; /*把串s剩余字符存入str中*/ while(*t) str[k++]=*t++; /*把串t剩余字符存入str中*/ str[k]='\\0'; }

void main()

{ char s[20],t[20],str[40]; printf(\请输入字符串s和t\\n\ scanf(\ fun(s,t,str); printf(\}

5.输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符各有多少? 参考代码:

#include \void main() { char str[40],*p,n1=0,n2=0,n3=0,n4=0,n5=0; gets(str); p=str; while(*p) { if(*p>='A'&&*p<='Z') n1++; else if(*p>='a'&&*p<='z') n2++; else if(*p>='0'&&*p<='9') n3++; else if(*p==' ') n4++; else n5++; p++; } printf(\大写字母:%d 小写字母:%d

数字:%d 空格:%d 其它:%d\\n\

}

6.输入一个字符串,内有数字和非数字字符,如:a123x456=4567?45at587,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123存放在a[0],456存放在a[1],?,统计共有多少个整数,并输出这些数。 参考代码:

#include \#define N 10 void main() { char str[40],*p; int k,i,a[N]; gets(str); p=str; k=0; /*k保存字符串中数的个数*/ for(;*p!='\\0';p++)

if(*p>='0'&&*p<='9') /*计算连续的数字,遇到非数字结束计算,并将该数

保存*/

{ a[k]=*p-'0'; p++; while(*p>='0'&&*p<='9') {


C语言习题答案2012年版- 副本- 副本(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:根据安县人事局关于做好2009年度全县机关事业单位技术工人晋升(

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: