当前位置:文档之家› C语言程序设计第九-十一章习题参考答案

C语言程序设计第九-十一章习题参考答案

C语言程序设计第九-十一章习题参考答案
C语言程序设计第九-十一章习题参考答案

C语言第九章参考答案

1.选择题:

12345 67890 12

ADCDB BCDDC BB

2.填空题:

(1)指针或者地址(2)110

(3)①char *p; ②p=&ch; ③scanf("%c",p); ④*p='a'; ⑤printf("%c",*p);

(4)10 (5)0、7 (6)ab (7)abcdcd (8) 7ㄩ1

(9)void (*p)(int * ,int*); (10)r+b[k] (11) '\0' 、n++; (12)aegi 3.改错题:

(1) 第一处改正:* sub=x-y

第二处改正:scanf("%f%f",&x,&y);

第三处改正:calc(x,y,&add,&sub);

(2)第一处:char swap (char *p1,char*p2)改为void swap (char *p1,char*p2)

第二处:strcpy(p,p1)改为strcpy(p,p2)

(3)第一处:p1=p1+m改为p1=p1+m-1

第二处:*p1=*p2改为*p2=*p1

第三处:*p2="\0"改为*p2='\0'

(4)第一处:char *fun(char *str,char t)改为char *fun(char *str,char *t)

第二处:s=NuLL改为s=NULL;

第三处:if(r==p)改为if(*r==*p)

(5)第一处:fun(int **b,int n)改为fun(int (*b)[N],int n)

第二处:b[j][k]=k*j 改为b[j][k]=(k+1)*(j+1)

4编程题

(1)

/*习题9-4-1 */

void move(int array[20],int n,int m) ;

main()

{ int number[20],n,m,i;

printf("How many numbers?"); /*共有多少个数*/

scanf("%d",&n);

printf("Input %d numbers:\n",n); /*输入n个数*/

for(i=0;i

scanf("%d",&number[i]);

printf("How many place you want to move?"); /*后移多少个位置*/

scanf("%d",&m);

move(number,n,m); /*调用move函数*/ printf("Now,they are:\n");

for(i=0;i

printf("%d ",number[i]);

}

void move(int array[20],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); /*递归调用,当循环次数m减至0时,停止调用*/

}

(2)

/*习题9-4-2 */

#include

#include

#define TOTAL 6

int mseek(char*str[],char xstr[],int n)

{ int i;

for(i=0; i

{ if(strcmp(str[i],xstr)==0)

return 1;

}

return 0;

}

main()

{ char*name[TOTAL]={"Lining","Linshan","Tianyuan","Zhangqiang","Haipo","Fangbing"};

char xname[20];

printf("enter a name:");

gets(xname);

if(mseek(name,xname,TOTAL))

printf("Found!\n");

else

printf("Not found!\n");

}

(3)

/*习题9-4-3 */

#include

#include

void fun(char *str,int num[4])

{ int i;

for(i=0; i<4; i++) num[i]=0;

while(*str!='\0')

{ if(*str>='a' && *str<='z' || *str>='A' && *str<='Z')

num[0]++;

else if(*str==' ')

num[1]++;

else if(*str>='0' && *str<='9')

num[2]++;

else

num[3]++;

str++;

}

}

#define N 80

main()

{ int string[N];

int n[4],i;

gets(string);

fun(string,n);

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

printf("%d\t",n[i]);

}

(4)

/*习题9-4-4 */

/* 调试时,可这样输入数据:*/

/*11 12 13 14 15

21 22 23 24 25

31 32 33 34 35

41 42 43 44 45

51 52 53 54 55 */

#include

main()

{ int a[5][5],*p,i,j;

void change(int *p);

printf("Input matrix:\n");

for(i=0;i<5;i++) /*输入矩阵*/

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

scanf("%d",&a[i][j]);

p=&a[0][0]; /*使p指向0行0列元素*/ change(p); /*调用函数, 实现交换*/ printf("Now, matrix: \n");

for(i=0;i<5;i++) /*输出已交换的矩阵*/

{ for(j=0;j<5;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

void change(int *p) /*交换函数*/

{ int i,j,temp;

int *pmax,*pmin;

pmax=p;

pmin=p;

for(i=0;i<5;i++) /*找最大值和最小值的地址,并赋给pmax,pmin*/ for(j=0;j<5;j++)

{ if(*pmax<*(p+5*i+j)) pmax=p+5*i+j;

if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;

}

temp=*(p+12); /*将最大值换给中心元素*/

*(p+12)=*pmax;

*pmax=temp;

temp=*p; /*将最小值换给左上角元素*/

*p=*pmin;

*pmin=temp;

pmin=p+1;

for(i=0;i<5;i++) /*找第二最小值的地址赋给pmin*/ for(j=0;j<5;j++)

if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;

temp=*pmin; /*将第二最小值换给右上角元素*/

*pmin=*(p+4);

*(p+4)=temp;

pmin=p+1;

for(i=0;i<5;i++) /*找第三最小值的地址赋给pmin*/ for(j=0;j<5;j++)

if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j; /*将第三最小值换给左下角元素*/ temp=*pmin;

*pmin=*(p+20);

*(p+20)=temp;

pmin=p+1;

for(i=0;i<5;i++) /*找第四最小值的地址赋给pmin*/ for(j=0;j<5;j++)

if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;

temp=*pmin; /*将第四最小值换给右下角元素*/

*pmin=*(p+24);

*(p+24)=temp;

}

(5)

/*习题9-4-5 */

/*可以专门编写一个函数求各学生的平均分,存到aver[4]数组*/

#include

void avcour1(float score[][5]);

void fali2(int num[4],float score[4][5]);

void good(int num[4],float score[4][5]);

main()

{

int i,j,num[4];//数组num代表学号

float score[4][5];

printf("Input NO. and scores: \n");

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

{ printf("NO.");

scanf("%d",&num[i]);

printf("scores:");

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

scanf("%f",&score[i][j]);

}

printf("\n\n");

avcour1(score); /*求出第一门课的平均成绩*/ printf("\n\n");

fali2(num,score); /*找出2门课不及格的学生*/

printf("\n\n");

good(num,score); /*找出成绩好的学生*/

}

void avcour1(float score[][5]) /*第一门课的平均成绩的函数*/

{ int i;

float sum,average1;

sum=0.0;

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

sum=sum+score[0][i]; /*累计每个学生的得分*/ average1=sum/4; /*计算平均成绩*/

printf("course 1 average score: %6.2f. \n",average1);

}

void fali2(int num[4],float score[4][5])

/*找两门以上课程不及格的学生的函数*/

{ int i,j,k,label;

float sum=0;

printf("= = = = = = = =Student who is fail = = = = = = = = = = = =\n");

printf(" NO.");

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

printf("%10d",i+1);

printf(" average\n");

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

{ label=0;

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

if((score[i][j])<60.0) label++;

if(label>=2)

{ printf("%5d",num[i]);

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

{ printf("%10.2f",score[i][k]);

sum+=score[i][k];

}

printf("%10.2f\n",sum/5);

}

}

}

void good(int num[4],float score[4][5])

/*找成绩优秀的学生(各门85分以上或平均90分以上)的函数*/ { int i,j,k,n;

float sum=0,aver[4];

printf("= = = = = = = =Student whose score is good= = = = = = = =\n");

printf(" NO.");

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

printf("%10d",i+1);

printf(" average\n");

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

{ n=0;

sum=0;

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

{

if((score[i][j])>85.0) n++;

sum+=score[i][j];

}

aver[i]=sum/5;

if((n==5)||(aver[i]>=90))

{ printf("%5d",num[i]);

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

printf("%10.2f",score[i][k]);

printf("%10.2f\n",aver[i]);

}

}

}

(6)

/*习题9-4-6*/

#include

double sigma(double (*fn)(double),double l,double u)

{ double sum=0,d;

for(d=l; d

sum+=fn(d);

return sum;

}

void main()

{ double sum;

sum=sigma(sin,0.1,1.0);

printf("sum of sin from 0.1 to 1.0 is: %f\n",sum);

sum=sigma(cos,0.5,3.0);

printf("sum of cos from 0.5 to 3.0 is: %f\n",sum);

}

(7)

/*习题9-4-7 */

main()

{ int i;

char *month_name(int n);

printf("input Month No.:\n");

scanf("%d",&i);

printf("Month No.:%2d --> %s\n",i,month_name(i)); /*调用指针函数month_name()*/ }

char *month_name(int n)

/*定义一个指针函数month_name(),返回一个指向字符串的指针*/

{ static char *name[]={"Illegal Month",

"January", "February", "March", "April",

"May", "June", "July", "August",

"September", "October", "November", "December"};

return((n<1||n>12)?name[0]:name[n]);

}

(8)

/*习题9-4-8 */

#include

#include

#define N 10

main()

{ void sort(char *p[]);

int i;

char *p[N],str[N][20];

for(i=0;i

p[i]=str[i]; /*将第i个字符串的首地址赋予指针数组p的第i个元素*/ printf("Input strings:\n");

for(i=0;i

scanf("%s",p[i]);

sort(p);

printf("Now, the sequence is:\n");

for(i=0;i

printf("%s\n",p[i]);

}

void sort(char *p[])

{ int i,j;

char *temp;

for(i=0;i

for(j=0;j

if(strcmp(*(p+j),*(p+j+1))>0)

{ temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

(9)

/*习题9-4-9 */

#include

#define LINEMAX 20 /*定义字符串的最大长度*/

main()

{ void sort(char **p);

int i;

char **p,*pstr[5],str[5][LINEMAX];

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

pstr[i]=str[i]; /*将第i个字符串的首地址赋予指针数组pstr的第i 个元素*/

printf("Input 5 strings:\n");

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

scanf("%s",pstr[i]);

p=pstr;

sort(p);

printf("strings sorted:\n");

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

printf("%s\n",pstr[i]);

}

void sort(char **p) /*冒泡法对5个字符串排序的函数*/ { int i,j;

char *temp;

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

{ for(j=i+1;j<5;j++)

{ if(strcmp(*(p+i),*(p+j))>0) /*比较后交换字符串地址*/

{ temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

}

(10)

void StrOR(char xx[][80],int maxline)

{ int i,righto,j,s,k;

char temp[80];

for(i=0; i

for(j=strlen(xx[i])-1; j>=0; j--)

{ k=0; memset(temp,0,80);

if(xx[i][j]=='o')

{ righto=j;

for(s=righto+1; s

temp[k++]=xx[i][s];

for(s=0;s

if(xx[i][s]!='o') temp[k++]=xx[i][s];

strcpy(xx[i],temp);

}else continue;

}

}

C语言第十章参考答案

1. 选择

dccda cab

2..填空

(1)struct student

strcmp(str,stu[i].name)==0

break;

(2)p=person

p-person<3

old=p->age;

q->name,q->age

(3)p!=NULL

c++

p->next

(4)&per[i].body.eye

&per[i].body.f.height

&per[i].body.f.weight

3.编程题

(1)

#include

struct data

{ int year;

int month;

int day;

};

main()

{ struct data a;

int monthnum[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int i,sum=0;

scanf("%d%d%d",&a.year,&a.month,&a.day);

for(i=0;i

sum+=monthnum[i];

sum+=a.day;

if(a.year%4==0 && a.year%100!=0 ||a.year%400==0)

sum+=1;

printf("%d年%d月%d日is the %d day",a.year,a.month,a.day,sum); }

(2)

#include

#include

struct study

{ float chinese;

float maths;

float english;

float avg;

};

main()

{ struct study student;

scanf("%f%f%f",&student.chinese,&student.maths,&student.english);

student.avg=(student.chinese+student.maths+student.english)/3;

printf("average score is %f\n",student.avg);

}

(3)

#include

#include

struct study

{ int num;

float chinese;

float maths;

float english;

float avg;

};

main()

{ struct study s[3];

struct study *p;

for(p=s;p

{ scanf("%d%f%f%f",&(p->num),&(p->chinese),&(p->maths),&(p->english));

p->avg=(p->chinese+p->maths+p->english)/3;

}

for(p=s;p

printf("%d %3.1f %3.1f %3.1f %3.1f\n",p->num,p->chinese,p->maths,p->english,p->a vg);

}

(4)

#include

#include

#define N 3

typedef struct

{

char dm[5]; /*产品代码*/

char mc[11]; /* 产品名称*/

int dj; /* 单价*/

int sl; /* 数量*/

long je; /* 金额*/

} PRO;

void SortDat(PRO sell[],int n)

{ int i,j;

PRO xy;

for(i=0; i

for(j=i+1; j

if(strcmp(sell[i].mc,sell[j].mc)>0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je>sell[j].je) { xy=sell[i];

sell[i]=sell[j];

sell[j]=xy;

}

}

void main()

{ PRO sell[N];

int i;

for(i=0; i

{

scanf("%s%s",sell[i].dm,sell[i].mc); //可这样输入,如:101 aaa

scanf("%d%d",&sell[i].dj,&sell[i].sl); //可这样输入,如:10 20

sell[i].je=sell[i].dj*sell[i].sl;

}

SortDat(sell,N);

printf("dm\t\tmc\t\tdj\tsl\tje\n");

for(i=0; i

{

printf("%s\t\t%s\t\t%d\t%d\t%ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

}

}

(5)

#include

#include

main()

{

int *pi;

int i,j,t,n;

printf("输入整数个数:");

scanf("%d",&n);

pi=(int *)malloc(n*sizeof(int));

printf("输入整数:");

for(i=0; i

scanf("%d",&pi[i]);

for(i=0; i

for(j=i+1; j

if(pi[i]>pi[j])

{

t=pi[i]; pi[i]=pi[j]; p i[j]=t;

}

for(i=0; i

printf("%d ",pi[i]);

printf("\n");

free(pi);

}

#include

#include

struct stu

{ int num;

char name[20];

int age;

struct stu *next;

};

void list(struct stu *head)

{ struct stu *p;

printf("The list records are:\n");

p=head;

if(head!=NULL)

do

{ printf("%d\t%s\t%d\n",p->num,p->name,p->age);

p=p->next;

}while(p!=NULL);

else

printf("The list is null");

}

struct stu * insert(struct stu *head,struct stu *stud)

{ struct stu *p0,*p1,*p2;

p1=head; /*p1指向链表第一个节点*/ p0=stud; /*p0指向要插入的节点*/

if(head==NULL) /*原链表是空表*/

{ head=p0;

p0->next=NULL; /*p0作为头指针*/ }

else

{ while((p1!=NULL)&&(p0->num>=p1->num))

{ p2=p1;

p1=p1->next;

} /*p1指针后移*/

if(p1!=NULL)

{ if(head==p1) head=p0;/*插入链表开头*/

else p2->next=p0; /*插入到p2节点之后*/

p0->next=p1;

}

else

{ p2->next=p0;

p0->next=NULL;

}/*插入到最后*/

return head;

}

main()

{ struct stu *newstu,*head;

head=NULL;

int num;

scanf("%d",&num);

while(num!=0)

{ newstu=(struct stu *)malloc(sizeof(struct stu));

newstu->num=num;

scanf("%s",newstu->name);

scanf("%d",&newstu->age);

head=insert(head,newstu);

scanf("%d",&num);

}

list(head);

}

(7)

#include

void partition(unsigned long int num)

{ union a

{ unsigned short int part[2];

unsigned long int w;

}n,*p;

p=&n;

n.w=num;

printf("long int=%lx\n",num);

printf("low part num=%0x,high part num=%0x\n",p->part[0],p->part[1]); }

main()

{ unsigned long int x;

x=0x23456789; //这是为了调试方便,应改为scanf函数

partition(x);

}

C语言第十一章参考答案

一、选择

1.B

2.A

3.B

4.C

5.B

6.C

7.D

8.C

9.C、D 10.A 11.A 12.C 13.B

二、填空

1 :

fopen(fname,"w")

ch

2:

"r"

fgetc(fp) 或getc(fp)

3:

"bi.dat"

&j

fp

4:

==NULL

flag==1

s[strlen(s)-1]=='\n'

三、改错题

1:第一处改为:long num=0;

第二处改为: !feof(fp) 或!=0改为==0

2: 第一处改为:rewind(fp)

第二处改为: fgetc(fp)!= '\n' '\0'后面加上&& feof(fp)!=1

四、编程题

(1)

#include

#include

#include

main()

{

FILE *fp;

char str[100];

int i=0;

if((fp=fopen("myfile","w"))==NULL)

{ printf("Can not open the file.\n");

exit(0);

}

printf("Input a string:\n");

gets(str);

while(str[i]!='!')

{ if(str[i]>='a'&& str[i]<='z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("myfile","r");

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}

(2)

#include

struct student

{ char num[10];

char name[8];

int score[3];

float ave;

}stu[5];

main()

{

int i,j,sum;

FILE *fp;

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

{ printf("\nInput score of student %d:\n",i+1);

printf("NO.:");

scanf("%s",stu[i].num);

printf("name:");

scanf("%s",stu[i].name);

sum=0;

for(j=0;j<3;j++)

{ printf("score %d:",j+1);

scanf("%d",&stu[i].score[j]);

sum+=stu[i].score[j];

}

stu[i].ave=sum/3.0;

}

fp=fopen("stud","w");

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

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

printf("File write error\n");

fclose(fp);

fp=fopen("stud","r");

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

{ fread(&stu[i],sizeof(struct student),1,fp);

printf("%s,%s,%d,%d,%d,%6.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i

].score[2],stu[i].ave);

}

}

(3)

#include

#include

main()

{

char s[80];

int a;

FILE *fp;

if((fp=fopen("test","w"))==NULL)

{ printf("Cannot open file.\n");

exit(1);

}

fscanf(stdin,"%s%d",s,&a); //相当于scanf

fprintf(fp,"%s %d",s,a);

fclose(fp);

if((fp=fopen("test","r"))==NULL)

{ printf("Cannot open file.\n");

exit(1);

}

fscanf(fp,"%s %d",s,&a);

fprintf(stdout,"%s %d\n",s,a); //相当于printf fclose(fp);

}

(4)

#include

#include

main()

{

FILE *fp;

int i,j,n,i1;

char c[100],t,ch;

if((fp=fopen("A","r"))==NULL)

{

printf("Can not open the file.\n");

exit(0);

}

printf("\nfile A:\n");

for(i=0;(ch=fgetc(fp))!=EOF;i++)

{

c[i]=ch;

putchar(c[i]);

}

fclose(fp);

i1=i;

if((fp=fopen("B","r"))==NULL)

{ printf("\n Can not open the file.");

exit(0);

}

printf("\nfile B:\n");

for(i=i1;(ch=fgetc(fp))!=EOF;i++)

{

c[i]=ch;

putchar(c[i]);

}

fclose(fp);

n=i;

for(i=0;i

for(j=i+1;j

if(c[i]>c[j])

{ t=c[i];

c[i]=c[j];

c[j]=t;

}

printf("\n file C:\n");

fp=fopen("c","w");

for(i=0;i

{ putc(c[i],fp);

putchar(c[i]);

}

fclose(fp);

}

(5)

#include

main()

{

FILE *fp1,*fp2;

char ch;

fp1=fopen("file1.c","r");

fp2=fopen("file2.c","w");

ch=fgetc(fp1);

while(!feof(fp1))

{

putchar(ch);

ch=fgetc(fp1);

}

rewind(fp1);

while(!feof(fp1))

fputc(fgetc(fp1),fp2);

fclose(fp1);

fclose(fp2);

}

(6)

#include

main()

{

FILE *fp; long position;

fp=fopen("data.txt","w");

position=ftell(fp);

printf("position=%ld\n",position);

fprintf(fp,"Sample data\n");

position=ftell(fp);

printf("position=%ld\n",position);

fclose(fp);

}

第12章

1.选择题

(1)D (2)C (3)D (4)D (5)C

(6)D (7)D (8)B (9)A (10).C

2.填空题

(1) //

(2) public、private 、protected

(3) 函数类型类名::函数名(形参表列) 或类型类名::函数名(参数表)

(4) 内联函数

(5) 构造函数

(6) 类名, 创建对象时

(7) 私有

(8) 私有

(9) 基类的构造函数成员对象的构造函数派生类本身的构造函数

3.概念题

(1)答:本质差别是C++是面向对象的,而C语言是面向过程的。

(2)答:在面向过程的程序设计中,数据只被看成是一种静态的结构,它只有等待调用函数来对它进行处理。在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。另外,封装还提供一种对数据访问严格控制的机制。因此,数据将被隐藏在封装体中,该封装体通过操作接口与外界交换信息。

(3)答:类是面向对象系统中最重要的概念,面向对象程序设计中的所有操作都归结为对类的操作。类是对一组客观对象的抽象,它将该组对象所具有的共同特征集合起来,以说明该组对象的能力和性质。对于同一个类的不同实例之间,必须具有以下特点:1.相同的操作集合2.相同的属性集合3.不同的对象名

以下是一个简单的类Sample:

Class Sample

{

private:

int x,y;

public:

void setvalue(int i,int j)

{

x=i;

y=j;

}

void disp()

{

cout<<”x=”<

}

};

以下是该类的三个对象:

Sample obj1,obj2,obj3;

(4)见本课本(略)

(5)

#include

class AreaClass

{

public:

AreaClass(int x=0,int y=0):height(x),width(y){}

protected:

double height;

double width;

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

完整word版单片机C语言应用程序设计第五版马忠梅课后习题答案

第一章单片机由哪几部分组成?、80511可P2P0和个8位并行I/O口(其中8位中央处理器CPU、片内振荡电器及其时钟电路,4,个中断优先级)个中断源(具有2位定时器/计数器,5 用于外部存储器的扩展),2个16 全双工串行口,布尔处理器。单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?、80512 表P7 1-3个特殊功能寄存器,在物理 上是分散在片内各功能部件中,在数218051单片机内部有答:中,以便能使用统一的直接寻址方式80H~FFH学上把它们组织在内部数据存储器地址空间来访问。这些特殊功能寄存器颁 在以下各个功能部件中:主要完;DPH两个8位寄存器组成)PSW、SP、DPTR(由DPL和(1)CPU:ACC、B、成运算和逻辑判断功能;完成中断管理IP、IE;(2)中断系统:完成 定时或者计数功能、TH1;TCOM、TL0、TH0、TL1(3)定时器/计数器:TMOD、口带有可选的纵向拓展I/O完成I/O口功能,其中部分P1P0、、P2、P3(4)并行I/O口:功能。主要完成数据的串行发送和接收SBUF、PCON5)串行口:SCON、(、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的3 内容是什么信息?它的内容是下一条 将要执行的不是特殊功能寄存器,它是16位寄存器,是程序计数器PC,程序的地址的用途是什么?它由哪几个特殊功能寄存器组DPTRDPTR是什么特殊功能寄存器?4、成?位)和8DPL (数据指针低是16位数据指针寄存器,它由两个8位特殊功能寄存器DPTR位地址,作地址寄存器用,可寻址外部16DPTR用于保存DPH(数据指针高8位)组成,数据存储器,也可寻址程序存储器。线?它们和单片机对外的地址总线和数据总线有什么关系?地址的引脚有多少I/O5、8051 总线和数据总线各是多少位?线可以在外扩存储器时分时复根I/OP0口8I/O8051单片机的40个引脚中有32根口线,和P3.6位地址总线,P2口作为高8用作为外部存储器的低8位地址 总线和8位数据总线,位。16位,数据总线为8P3.7分别作为外部存储器的写和读控制线。地址总线单片机堆栈的最大容量不能超过多少字8051、什么是堆栈?堆栈指针SP的作用是什么? 6 节?堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启 用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作 数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051 的堆栈区是比较小的,使用时要注意到这个限制。 8、8051内部RAM低128字节可分为几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少? 8051内部RAM的低128字节可以分为通用寄存器区、位寻址区、便签(工作或者堆栈RAM)1 中的个字节。设置PSW区和特殊功能寄存器区。通用寄存器区的地址从00H到1FH共3212816个字节RS1可以切换当前通用寄存器组。位寻址区地址从20H到2FH共位RSO和127. 0到位,占用地址8051单片机对外有几条专用控制线?其功能是什么?9、,高电位有效,当有条专用控制线。它们是复位信号线RST一般的说法是8051单片机有4,低电平有效,当此复位信号从此线输入时,使单片机复位。访问外部存贮器控制信号EA先使用片单片机全部使用外部指令存贮器,而当此控制线为高电平时,控制线为低电平时,1000H(地址为,在4KB范围之外,才使用指令存贮器FFFFH内的4KB指令存贮器(0000H-)和外部地址锁存器允PSEN-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号。前者是低电平有效,在读外部程 序存贮器时使用。后者是高电平有效,在锁存ALE许信号P0口输出的低8位地址时使用。端必须怎样处理?为什么?10、8031的/EA为有效时,/EA访问内部ROM,当端是访问外部程序

c语言程序设计第二章课后参考答案

第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

c语言程序设计第五版习题答案()

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100;

a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include <> main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** *

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

标准C语言程序设计第五版课后练习题答案

课后练习题答案 Chapter 1 1.1×√×√√×√××√ 1.2b c 1.3ad 1.4semicolon printf math、h \n Chapter 2 2、1 ×√××√√×√××√× 2、2 typedef 255 external const Chapter 3 3、1 ×√××√√×××√√√ 3、2 integer modula 6 logical sizeof paratheses typeconversion precedence 3、3 F F T F F F 3、4 F T T T F 3、5 (b) (c) 3、6 0 -2 7 10、25 false 3 3 1 3、10 0 1 1 1 1 3、11 d } 100 3、12 110 111 3、13 1 3、14 200 3、15 x<=y 3、16 TRUE 3、19 2 1 4 3、20 -40 40 Chapter 4 4、1 ×√√√√√××√√√× 4、2 %hd %x ctype、h %l %*d [^] blank 6 - %e 4、4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c); (c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);

4、5 (a)10x1、230000 (b)1234x 1、23 (c)1234 456、000000 (d) “123、40 ” (e) 1020 1222(乱码) 4、7 (a)1988 x (b)乱码 (c)120 乱码 (d)乱码 x 4、8 (a)1275 -23 5、740000 (b) 1275 -235、740000 (c) 0 0、000000 (d) 1275xxxx-235、74 (e)Cambridge (f)1275 Cambridge 4、10 1988 无无 Chapter 5 5、1 √×√××××××√ 5、2 && switch break if-else x=y 5、4 (a)x = 2; y = 0; (b) x = 1; y = 0; 5、5 (a) if (grade <= 59) if (grade >= 50) second = second + 1; (b) if (number > 100) printf(“out of range”); else if (number < 0) printf(“out of range”); else sum = sum + number; (c) if (T > 200) printf(“admitted”); else if (M > 60) {if (M > 60) printf(“admitted”);} else printf(“not admitted”); 5、6 F T F T 5、8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0) (c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5) 5、9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1 (c) x = 5; y = 0; z =0 (d) 无变化 5、10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0; 5、12 8 5、13 Delhi Bangalore END 5、14 2 4 4 8 5、15 0 0 2 5、16 25 5、17 Number is negative 5、18 ABC

C语言详解(第五版)第二章程序设计项目答案

C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include #include int main(void) {float mile_1,mile_2,miles,consume,payment; printf("MILEAGE REIMBURSEMENT CALCULATOR\n"); printf("Enter begainning odometer reading>\n"); scanf("%f",&mile_1); printf("Enter endding odometer reading>\n"); scanf("%f",&mile_2); printf("Enter consume per mile>\n"); scanf("%f",&consume); miles=mile_2-mile_1; payment=miles*consume; printf("You traveled%f miles.At%f per mile,your reimbursement is%f",miles,consume,payment); system("pause"); return(0); } 2.编写一个程序,用于辅助设计水力发电大坝。提示用户输入大坝高度,以及水流量。如果水由重力所做的功有90%转化为电能,测算会有多少M瓦的功率。 #include #include int main(void) {double density,weight,gravitational_acceleration, efficiency,height,water_flow_rate,work,electricity_power; printf("Please type in the density of water>"); scanf("%lf",&density); printf("Please type in the gravitational_acceleration>"); scanf("%lf",&gravitational_acceleration); printf("Please type in the height of the water>"); scanf("%lf",&height); printf("Please type in the efficiency of the transformation\nfrom water to electricity>"); scanf("%lf",&efficiency); printf("Please type in the water_flow_rate>"); scanf("%lf",&water_flow_rate); weight=density*water_flow_rate; work=weight*height*gravitational_acceleration; electricity_power=work*efficiency/1000000; printf("The electric energy production is%fW",electricity_power); system("pause"); return0; }

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

C语言程序设计学习指导(第2版) 1-6

第一章概述 一、选择 1.C 2.B 3.C 4.D 5.D 6.A 7.B 8.C 9.A 10.B 11.C 12.D 13.B 14.B 第二章数据类型 一、选择 1.D 2.A 3.C 4.D 5.A 6.B 7.A 8.B 9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.C 第三章运算符和表达式 一、选择 1.A 2.D 3.D 4.D 5.D 6.A 7.C 8.C 9.B 10.B 11.C 12.C 13.A 14.A 15.A 16.A 17.B 18.C 19.C 20.D 21.A 22.A 23.C 24.C 25.A 26.B 27.D 28.A 29.B 30.C 31.D 32.D 33.D 34.B 35.A 36.A 37.B 38.C 39.D 40.B 41.B 42.C 43.B 第四章输入和输出 一、选择 1.C 2.D 3.C 4.C 5.C 6.B 7.B 8.C 9.D 10.D 11.D 12.D 13.B 14.A 15.B 16.B 二、编程 1.double fun(double m) { float n; n=(5.0/9.0)*(m-32); return n; } 2. char fun(char c) {c=c+32; return c;} 3.double fun(int m) { double y=0; y=sin(m)*10; return(y); } 4.float fun ( float h ) {return (long)( h * 100 + 0.5 )/ 100.0;}

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

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

相关主题
文本预览
相关文档 最新文档