朱昌杰 C语言程序设计课本习题解答 - 图文(7)

2019-04-17 00:25

【参考答案】

一.选择题

C B B A C B B C D C C C D C B B D B C C 二.填空题 (1) p (2) *p (3) 1 2 3 4 (4) 10,0

(5)strcmp(str2,str1);

(6) 定义指针数组p,它由4个指向整型数据的指针元素组成 (7) p为指向含4个元素的一维数组的指针变量 (8) p是返回一个指针的函数,该指针指向整型数据 (9) p为指向函数的指针,该函数返回一个整型值 (10) abCdabCdabCd 三.编程题

(1)定义3个整数及整数指针,仅用指针方法按由小到大的顺序输出。 #include void main() {

int *p1,*p2,*p3,i,j,k,temp; printf(\scanf(\p1=&i; p2=&j; p3=&k; if(*p1>*p2) {

}

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 #include int main() {

int m,i,j,a[10],*p1,*p2; p1=p2=a; }

if(*p1>*p3) { }

if(*p2>*p3) { }

printf(\

temp=*p3; *p3=*p2; *p2=temp; temp=*p1; *p1=*p3; *p3=temp; temp=*p1; *p1=*p2; *p2=temp;

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

scanf(\输入

31

p2--;

for(m=1,i=0;m<10;m++)

if(a[m]

i=m; //找出最小值

j=a[i]; a[i]=*p1;

*p1=j; //交换最小值与第一个数

for(m=1,i=0;m<10;m++) if(a[m]>a[i])

i=m; //找出最大值

j=a[i]; a[i]=*p2;

*p2=j; //交换最大值与第一个数

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

printf(\ printf(\ return 0;

}

编写程序实现将一个整数字符串转换为一个整数。 #include \#include \int Fun(char *str) {

int num,i,digital,len; num = 0; len=strlen(str); while(*str!='\\0') {

digital=*str-'0'; for(i=0; i

return num; }

int main() {

char n[80 ]; int number;

gets(n); number=Fun(n); printf(\ return 0; }

编写程序实现在主函数中输入字符串,并在lenth 函数中输出其长度。 #include #include int lenth(const char *str) { int i = -1;

while (str[++i]); // while循环在 str[++i] 为

'\\0' 时结束 return i;

}

int main() { char str[1000];

printf(\ gets(str);

printf(\ return 0;

} 编写transposition函数(参数用指针)将一个4×4矩阵转置。

#include \

void transposition(int *str) {

int i,j,t; for(i=0;i<4;i++) for(j=i;j<4;j++) {

t=*(str+4*i+j);

*(str+4*i+j)=*(str+4*j+i); *(str+4*j+i)=t; }

}

int main() {

int a[4][4],*p,i;

printf(\ for(i=0;i<4;i++)

32

scanf(\[3]);

printf(\ for(i=0;i<4;i++)

printf(\[i][3]); p=&a[0][0]; transposition(p); printf(\ for(i=0;i<4;i++)

printf(\[i][3]); return 0; }

不用字符串处理函数strcmp,编写自定义函数实现两个字符串的比较。 #include

int scmp(char *p1,char *p2) { int i=0;

while(*(p1+i)==*(p2+i)) if(*(p1+i++)=='\\0') return 0;

return(*(p1+i)-*(p2+i)); }

void main() { char str1[80],str2[80],*p1,*p2; int t;

printf(\ gets(str1);

printf(\ gets(str2); p1=str1; p2=str2; t=scmp(p1,p2); printf(\

} 编程实现统计子串substr在母串str中出现的次数。 #include

int count(char *str,char *substr)

{ int i,j,k,num=0; for(i=0;str[i];i++)

for(j=i,k=0;substr[k]==str[j];k++,j++) if(substr[k+1]=='\\0') { num++; break; }

return(num);

}

void main() { char str[80], substr[80]; int n;

printf(\ gets(str);

printf(\ gets(substr);

printf(\

}

不用字符串处理函数strcat,编程实现两个字符串s1和s2连接。

#include \#include \

char *stringcat(char s1[],char s2[]) { int i,j;

for(i=0;s1[i]!=0;i++); for(j=0;s2[j]!=0;i++,j++) s1[i]=s2[j]; s1[i]=0; return s1;

}

int main() { char str1[1000],str2[80],*s; printf(\ gets(str1);

printf(\ gets(str2);

s=stringcat(str1,str2);

printf(\33

return 0;

习 一、选择题

1.以下程序的运行结果是( )。

#include main() { struct date

{ int year,month,day; }today; union

{

long a; int b; char c; }m;

printf(\

}

A.6 4

B.8 5

C.10 6 D.12 7

2.若有以下定义和语句,不正确的引用是( )。

struct student { int age; int num; }; struct

student

stu[3]={{1001,20},{1002,19},{1003,21}}; main()

{ struct student *p; p=stu; ... }

}

题10

A.(p++)->num B.p++ C

(*p).num

D.p=&stu.age

3.以下程序的输出结果为( )。

#include main() { union { int a[2]; long b; char c[4]; }s;

s.a[2]=0x39; s.a[1]=0x38;

printf(\}

A.390039 39 B.380039 9

C

3938

38

D.3839 8

二、填空题

1、在以下嵌套结构中填空,给出李冬的姓名、年龄(20岁)、性别(男)、生日(1993年5月16日)、语种(c)及系别(计算机系)的信息,并输出这些信息。

#include struct date

{ int month; int day; int year; };

struct student {

_________ name[20]; _________ age;

34

_________sex;

_________date_birthday; _________Language; _________department[30]; }; main() {

struct student s1=_________; printf ___________; }

2.结构体数组中存有3个人的姓名和年龄,以下程序输出3个人中最年长者的姓名和年龄,在横线上填上正确的内容。

static struct man { char name[20]; int age;

}person[]={{\ng\main()

{ struct man *p,*q; int old=0;

for(_______;______;p++) if (oldage) { q=p;

________; }

printf(\ }

三、编程题

1.定义一个结构体变量(包括年、月、日),计算该天在本年中为第几天?(需考虑闰年问题)要求写一个days函数来实现。由主函数将年月日传递给days函数,计算后将天数传回主函数输出。

2.有若干个学生,每个学生的记录包括学号、姓名和三门课的成绩,从键盘输入学生数据(学号为0000时,输入结束),要求输出每个学生的三门课总平均成绩。

3.编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。

4.设计候选人得票统计的程序,要求随机设定候选人,每次输入一个得票候选人的名字,最后输出各人得票情况。 5.有一个链表,每个结点包括:学号、姓名、性别和年龄。编写函数,实现如下功能:每输入一个学生信息,比较新输入学生学号与框表中已有结点的学号信息是否重复,如果重复则提示“学号重复!”,并重新输入下一个学生信息;如果不重复,则把该学生信息放到链表的最后,输出该链表中的学生信息。

【参考答案】

一.选择题 1 D 2 D 3 B 二.填空题

1.char 、int、char、struct data、char、char、(“李冬,20,1,1993-5-16

c,

int days(date d) {

int num = 0; int m, da, i;

if ((d.year %4 == 0 && d.year 0!=0)||(d.year % 400 == 0)) {

for (m = 1; m <= d.month ; m++) {

if (m == 2) da = 29;

else if (m==4||m==6||m==8||m==11) da = 30; else da = 31;

for (i = 1; i <= da;i++) {

(“%s,%d,%d,%s,%s\\n”,s1.name,s1.age,s1.data_birthday,s1.Language,s1.departmet)

2. p=person、p<3、old=p->age、q->nam,q->old 三.编程题 1、

#include typedef struct {

int year; int month; int day; }date;

35


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

下一篇:新课标人教化学必修一第一章 - 图文

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

马上注册会员

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