C语言程序设计参考答案与复习题(7)

2019-03-22 11:47

30 C程序设计基础习题集

{ int i;

for(i=0;i

if(isupper(str[i])) str[i]=str[i]+32; }

9. 写出下列程序的输出结果。

#include #include void del_bk(char *p) { char *p1; p1=p; while(*p1!='\\0')

if(*p1==' '&&*(p1+1)==' ') strcpy(p1,p1+1); else p1++; }

void main()

{ char aa[]=\

printf(\ }

输出结果: aa bb cccc ddd efg h aa bb cccc ddd efg h

10. 编制函数,将字符串中连续的相同字符仅保留1个(字符串\处理后为\)。

解答:#include #include void sub(char *p) { int i, j;

for(i=1;i

for(j=i;j

11. 下列程序求二维数组a中最大值与b中最大值之差,填空将下列程序补充完整。

#include #include

float find_max( float **x,int m,int n) { int i,j; float max=x[0][0]; for(i=0;i

if(*(*(x+i)+j)>max) max= *(*(x+i)+j); 或 x[i][j]; return max; }

程序设计基础习题集 31

void main()

{ float a[5][5],b[6][4], *pa[5],*pb[6] ; int i,j; for(i=0;i<5;i++) pa[i]=a[i]; for(i=0;i<6;i++) pb[i]=b[i];

for(i=0;i<5;i++) for(j=0;j<5;j++) scanf(\ for(i=0;i<6;i++) for(j=0;j<4;j++) scanf(\ printf(\ }

12. 编制函数,将float类型二维数组的每一行同除以该行上绝对值最大的元素。要求分别以8.4.2节介绍的两种方法编写,并上机调试。

解答:方法一:

#include #include

void f(float **x, int m, int n) { int i,j; float max; for(i=0;i

for(j=1;jfabs(max)) max=x[i][j]; for(j=0;j

void main()

{ float a[5][6]; int i,j; float *b[5];

for(i=0; i<5; i++) for(j=0;j<6;j++) scanf(\ for(i=0;i<5;i++) b[i]=a[i]; f(b,5,6);

for(i=0;i<5;i++) { for(j=0;j<6;j++) printf(\ } 方法二:

#include #include

void f(float *p, int m, int n) { int i,j; float max; for(i=0;i

for(j=1;jfabs(max)) max=p[i*n+j]; for(j=0;j

void main()

{ float a[5][6]; int i,j;

for(i=0;i<5;i++) for(j=0;j<6;j++) scanf(\

32 C程序设计基础习题集

f(a[0],5,6)

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

{ for(j=0;j<6;j++) printf(\ }

13. 编制函数,在字符串数组中查找与另一字符串相等的字符串,函数返回值为该字符串的地址或NULL(当查找不到时)。

解答: #include #include

char *str(char *str[], int n, char *s) { int i;

for(i=0; i

void main()

{ char *s[5]={\ printf(\ }

14. 下列程序中,函数find_data在已从小到大排序好的数组中寻找指定数data,采用二分查找算法,找到则返回该数组元素地址,找不到返回NULL。请填空将程序补充完整。

#include

float* find_data(float *a,int n,float data) { int low,mid,high ; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(a[mid]>data) high=mid-1; else

if(a[mid]

return NULL ; }

void main()

{ float b[10],*p,data;

for(int i=0;i<10;i++) scanf(\要求输入数据值从小到大 */ scanf(\输入待查找的数据 */ p=find_data(b,10,data); if(p) printf(\

else printf(\查找不到%f\\n\ }

程序设计基础习题集 33

15. 程序填空,将求下列两个定积分之和的程序补充完整。

?62(x2?x?sinx)dx??(log10x2?x?3)dx37其中,求定积分的函数采用用梯形公式n(main中对应的实参取50)等份积分区间。 #include #include

float f1(float),f2(float);

float fs( float a,float b,int n, float(*f)(float)) { float s=0,x=a,h=(b-a)/n; int i;

for(i=1;i<=n;i++) { s+=((*f)(x)+(*f)(x+h))*h/2; x+=h; } return s ; }

void main() { float y;

y=fs(2,6,50,f1)+fs(3,7,50,f2); printf(\ }

float f1(float x)

{ return x*x+x*sin(x); } float f2(float x)

{ return log10(x*x)-x+3 ;}

习 题 九

1. 构造一个表示通讯录中每个“记录”的数据类型,声明该类型的标识符。

解答:struct person{ char name[9];int pho;};

⒉ 编程,先输入n,再输入通讯录中若干个人的记录到结构体数组中,按电话号码的升序对结构体数组排序后输出。

解答: #include #include

struct person{ char name[9]; int pho; }; void main()

{ struct person *p,temp; int n,i,j,k;

scanf(\ for(i=0;i

k=i; for(j=i+1;j

for(i=0;i

34 C程序设计基础习题集 3. 改写第2题,调用自定义函数对结构体数组各元素按电话号码的升序排序。

解答: #include #include

struct person{ char name[9]; int pho; }; void sort(struct person *p,int n) { struct person temp; int i,j,k; for(i=0;i

k=i; for(j=i+1;j

void main()

{ struct person *p,temp; int n,i,j,k;

scanf(\ for(i=0;i

for(i=0;i

解答: #include #include #include

struct node { char x; struct node* t; }; void main()

{ struct node *h=NULL,*p1,*p2; char ch; while((ch=getchar())!='.') {

p2=(struct node*) malloc(sizeof(struct node)); p2->x=ch; if(h==NULL) h=p1=p2; else { p1->t=p2; p1=p2;} }

p2->t=NULL; p1=h;

while(p1!=NULL){ if(isalpha(p1->x))putchar(p1->x); p1=p1->t; } putchar('\\n'); }

5.阅读下列程序,写出输出结果。

程序⑴ #include void main()

{ struct T1{ char c[4],*s;} s1={\ struct T2{ char *cp; T1 ss1;} s2={\ printf(\ printf(\ printf(\ printf(\ }


C语言程序设计参考答案与复习题(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:事业单位财务管理

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

马上注册会员

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