C语言程序设计(第二版)习题参考答案

发布时间 : 星期日 文章C语言程序设计(第二版)习题参考答案更新完毕开始阅读

解:adepsxy

6.

#include <> void main() {

char h[11]; int d[10];

int i,n=0,x=1;

gets(h); 统计在一个字符串中各元音字母(a、e、i、o、u)出现的次数。

#include <> void main() {

char s[80];

int i, ;

printf(\

gets(s); for(i=0; ;i++) if( )

a[0]++; else if(s[i]=='e'||s[i]=='E')

a[1]++; else if(s[i]=='i'||s[i]=='I')

a[2]++; else if(s[i]=='o'||s[i]=='O')

a[3]++; else if(s[i]=='u'||s[i]=='U')

a[4]++;

printf(\ A E I O U\\n\ for(i=0;i<5;i++)

}

解:① a[5] ②s[i]!= '\\0' ③s[i]== 'a'|| s[i]== 'A' ④ printf(“]”,i)

五、编程题

1.在数组x的10个数中求平均值v,找出与v相差最小的数组元素。 解:#include <>

#include <> void main()

{ double x[10],v,d; int i;

for(i=0,v=0;i<10;i++) { scanf(\ v+=x[i]; }

v=v/10; d=x[0];

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

if(fabs(d-v)>fabs(x[i]-v)) d=x[i];

printf(\平均值:%-8.2f,与平均值最近元素:%-8.2f\\n\ }

2.输入n(n≤20)个数放在一维数组中,找出其中最小的数,将它与数组最前面的元素交换后输出这些数。 解:#include <>

void main()

{ int i,k,temp,n,a[20]; printf(\ scanf(\ for(i=0;i

scanf(\ for(k=0,i=1;i

temp=a[0];a[0]=a[k];a[k]=temp;

for(i=0;i

3.输入一个字符串,统计其中数字字符出现的次数。

解:#include <> void main()

{ char s[80]; int i,n=0; gets(s);

for(i=0;s[i]!='\\0';i++)

if(s[i]>='0'&&s[i]<='9') n++;

printf(\中包含%d个字符\\n\ }

4.设有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。问在第20年时,共有多少头牛分别输出从第1年至第20年每年的母牛数。

解:#include <> #define N 20 void main() { int x[N+1]={1},i; 0’0’0’0’0’0’0’.2f0’0’4.1f12

deldeldel++.2f.2f8.2f-8.2f-8.2f0’0’deldel8.2f.0f,\

\ puts(p[m-1]);

}

void main() { int no;

printf(\请输入月份(1--12)\\n\ scanf(\

if (no>=1&&no<=12) findmonth(no); else printf(\数据输入错误!\\n\ }

15.输入5个字符串,输出其中最长的字符串。

解:#include \ #include \ void main()

{ char str[5][100],*p[5];

int i,k; ame); B.printf(\,&stu[1].name);

C.printf(\,stu[1].name[0]); D.printf(\,&stu[1].name[0]); *5.以下程序的输出结果是( )。

#include <> void main()

{ int x=1,y=2,z=3;

struct aa { int a; int *p; } s[ ]={4,&x,5,&y,6,&z}; struct aa *q=s+1;

printf(\–>p)++); }

A.1 B.2 C.3 D.4

6.有以下定义语句:

struct node { int n; struct node *next; } x,y,*p=&x,*q=&y; 则能将y节点链接到x节点之前的语句是( )。

A.=p B.=q C.=p D.=q *7.以下程序的输出结果为( )。

#include <> void main()

{

struct node{ int n;

struct node *next; }a[4]; int i;

for(i=0;i<3;i++){

(a+i)–>n=i+1;

(a+i)->next=a+i+1; }

(a+i)->next=a;

printf(\ }

A.1,2 B.2,1 C.1,3 D.3,1

8.已建立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点,将p2所指节点从链表中删除并释放的语句为( )。

A.p1=p2;free(p2); B.p1–>next=p2–>next;free(p2); C.*=*;free(p2); D.p1=p2–>next;free(p2);

9.已建立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点;指针变量p指向新申请节点,将p所指节点插入到链表中p1与p2之间的语句为( )。

A.p–>next=p2;p1–>next=p; B.p1–>next=p;p–>next=p2; C.p=p2;p1–>next=p; D.p1=p;p–>next=p2;

10.若要利用下面的程序片段使指针变量p指向一个整型变量的存储单元则括号中需填入的内容是( )。

int *p;

p=( )malloc(sizeof(int));

A.int B.*int C.&int D.int *

解:(1)B (2)C (3)A (4)D (5)B (6)C (7)D (8)B (9)A (10)D

二、写出下列程序的输出结果 1.

#include <> struct st { int num;

char name[10]; int age;

}x[3]={{1,\ void main()

{ printf(\ }

解:wang,19 *2.

#include <> #include <>

struct s { int a[4]; char *pa[4]; }x,*p=&x;

void main() { int i;

char y[4][8]={\ for(i=1;i<4;i++) [i]=y[i];

for(i=1;i<4;i++) [i]=strlen[i]);

printf(\ }

解:2,4,BC *3.

#include <>

struct ks {int a;int *b;}s[4],*p;

联系合同范文客服:xxxxx#qq.com(#替换为@)