当前位置:文档之家› c程序设计 第13章 文件 答案解析.

c程序设计 第13章 文件 答案解析.

c程序设计 第13章 文件 答案解析.
c程序设计 第13章 文件 答案解析.

第十三章

例13.1 程序为:

#include

#include

void main()

{

FILE *fp;

char ch,filename[10];

scanf("%s",filename);

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

{

printf("cannot open file\n");

exit(0);

}

ch=getchar();

ch=getchar();

while(ch!='#')

{

fputc(ch,fp);putchar(ch);

ch=getchar();

}

putchar(10);

fclose(fp);

}

例13.2 程序为:

#include

#include

void main()

{

FILE *in, *out;

char ch,infile[10],outfile[10];

printf("Enter the infile name:\n");

scanf("%s",infile);

printf("Enter the infile name:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

if((out=fopen(outfile,"w"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

while(!feof(in)) fputc(fgetc(in),out);

fclose(in);

fclose(out);

}

注:在该程序的运行中,每复制一次就会产生一个乱码置于最后,并依次叠加。这不是个优秀的程序。

13.5.1 rewind函数:

#include

void main()

{

FILE *fp1,*fp2;

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

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

while(!feof(fp1)) putchar(getc(fp1));

rewind(fp1);

while(!feof(fp1)) putc(getc(fp1),fp2);

fclose(fp1);fclose(fp2);

}

例13.5

#include

#include

struct student_type

{

char name[10];

int num;

int age;

char sex;

}stud[10];

void main()

{

int i;

FILE *fp;

if((fp=fopen("file22.c","rb"))==NULL)

{

printf("can not open file\n");

exit(0);

}

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

{

fseek(fp,i*sizeof(struct student_type),0);

fread(&stud[i],sizeof(struct student_type),1,fp);

printf("%s %d %d %c\n",stud[i].name,stud[i].num,stud[i].age,stud[i].sex);

}

fclose(fp);

}

注:这个程序是对的,但常用于处理二进制文件,因为文本文件要发生字符转换,计算位置时常发生混乱。

习题

13.1 对c文件操作有些什么特点?什么是缓冲文件系统?什么是非缓冲文件系统?这两者的缓冲区有什么区别?

答:c语言把文件看作是一个字符的序列级,即由一个一个字符的数据顺序组成。根据数据的组织形式,可以分为:ASCII文件(文本文件)和二进制文件。一个c文件是一个字节流或二进制流(流式文件)。它允许对文件存取一个字符,这就增加了处理的灵活性。

缓冲文件系统:是指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区,然后再从缓冲区逐个地将数据送到程序数据区中去。

非缓冲文件系统:是指系统不自动开辟确定大小的缓冲区,而有程序为每个文件设定缓冲区。用缓冲文件系统进行的输入输出又称高级磁盘输入输出,用非缓冲文件系统进行的输入输出又称为低级输出输入系统。ANSI C标准不采用非缓冲文件系统,而只采用缓冲文件系统,即既用缓冲文件系统处理文本文件,也用它处理二进制文件,也就是将缓冲文件系统扩充为可以处理二进制文件。

13.2 什么是文件型指针?通过文件型指针访问文件有什么好处?

答:缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字,文件的状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。这和一般使用指针变量的好处是一样的。

13.3 对文件的打开和关闭的含义是什么?为什么要打开和关闭文件?

答:打开的含义:带回指向a1文件的指针赋给fp,这样fp就和文件a1联系上了。或者说,fp指向a1文件。在使用完一个文件后应该关闭它,以防止它再被误用。“关闭”就是文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其联系的文件进行读写操作,除非再次打开,使该指针变量重新指向该文件。

13.4 程序为:

#include

#include

void main()

{

FILE *fp;

char ch,filename[10];

printf("please input the name of the file:\n");

scanf("%s",filename);

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

{

printf("cannot open file\n");

exit(0);

}

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

ch=getchar();

if('a'<=ch&&ch<='z')

ch=ch-32;

while(ch!='!')

{

fputc(ch,fp);putchar(ch);

ch=getchar();

if('a'<=ch&&ch<='z')

ch=ch-32;

}

putchar(10);

fclose(fp);

}

13.5 程序为:

#include

#include

#include

void main()

{

FILE *fp;

char a[100];

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

{

printf("文件打开错误");

exit(0);

}

int i=0;

a[i]=fgetc(fp);

while(a[i]!=EOF)

{

putchar(a[i]);

i++;

a[i]=fgetc(fp);

}

putchar('\n');

fclose(fp);

if((fp=fopen("test1.c","r"))==NULL)

{

printf("文件打开错误");

exit(0);

}

while(a[i]!=EOF)

{

putchar(a[i]);

i++;

a[i]=fgetc(fp);

}

a[i]='\0';

putchar('\n');

fclose(fp);

int n=i;

int k;

char t;

for(i=0;i

{

k=i;

for(int j=i+1;j

{

if(a[k]>a[j]) k=j;

}

if(k!=i)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

if((fp=fopen("test2.c","w"))==NULL) {

printf("文件打开错误");

exit(0);

}

i=0;

while(i

{

fputc(a[i],fp);

putchar(a[i]);

i++;

}

fclose(fp);

putchar('\n');

}

注:这个程序将处理数组的排序问题和文件读取的问题结合起来了。从而解决了这个题目。

13.6 程序为:(这个程序不难,自己编的,对其中文件类型和它和结构体数组之间信息的转换有了较深的认识)

#include

#define SIZE 5

struct student_type

{

int num;

char name[10];

float score1;

float score2;

float score3;

float avg;

}stud[SIZE];

void save()

{

FILE *fp;

int i;

if((fp=fopen("stu_list.c","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i

if(fwrite(&stud[i],sizeof(student_type),1,fp)!=1)

printf("file write error");

fclose(fp);

}

void main()

{

FILE *fp;

int i;

for(i=0;i

{

scanf("%d%s%f%f%f",&stud[i].num,stud[i].name,&stud[i].score1,&stud[i].score2,&stud[i].s core3);

stud[i].avg=(stud[i].score1+stud[i].score2+stud[i].score3)/3;

}

save();

fp=fopen("stu_list.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

printf("%-4d %-10s %-10.2f %-10.2f %-10.2f %-10.2f\n",stud[i].num,stud[i].name,stud[i].sc ore1,stud[i].score2,stud[i].score3,stud[i].avg);

}

}

13.7 程序为:

#include

#define SIZE 5

struct student_type

{

int num;

char name[10];

float score1;

float score2;

float score3;

float avg;

}stud[SIZE];

void save()

{

FILE *fp;

int i;

if((fp=fopen("stu_sort.c","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i

if(fwrite(&stud[i],sizeof(student_type),1,fp)!=1)

printf("file write error");

fclose(fp);

}

void main()

{

FILE *fp;

int i,j;

struct student_type temp;

fp=fopen("stu_list.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

}

for(i=0;i

for(j=i+1;j

{

if(stud[i].avg>stud[j].avg)

{

temp=stud[i];

stud[i]=stud[j];

stud[j]=temp;

}

}

save();

fp=fopen("stu_sort.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

printf("%-4d %-10s %-10.2f %-10.2f %-10.2f %-10.2f\n",stud[i].num,stud[i].name,stud[i].sc ore1,stud[i].score2,stud[i].score3,stud[i].avg);

}

}

13.9程序为:(这个题的程序要建立在前面那些程序的基础之上)

#include

#define SIZE 5

struct student_type

{

int num;

char name[10];

float score1;

float score2;

float score3;

float avg;

}stud[SIZE+1];

void save()

{

FILE *fp;

int i;

if((fp=fopen("stu_sort.c","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i

if(fwrite(&stud[i],sizeof(student_type),1,fp)!=1)

printf("file write error");

fclose(fp);

}

void main()

{

FILE *fp;

int i,j;

struct student_type temp,another;

scanf("%d%s%f%f%f",&another.num,https://www.doczj.com/doc/2114979114.html,,&another.score1,&another.score2,&another.s core3);

another.avg=(another.score1+another.score2+another.score3)/3;

fp=fopen("stu_list.c","ab");

fwrite(&another,sizeof(student_type),1,fp);

fclose(fp);

fp=fopen("stu_list.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

}

for(i=0;i

for(j=i+1;j

{

if(stud[i].avg>stud[j].avg)

{

temp=stud[i];

stud[i]=stud[j];

stud[j]=temp;

}

}

fclose(fp);

save();

fp=fopen("stu_sort.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

printf("%-4d %-10s %-10.2f %-10.2f %-10.2f %-10.2f\n",stud[i].num,stud[i].name,stud[i].sc

ore1,stud[i].score2,stud[i].score3,stud[i].avg);

}

fclose(fp);

}

13.8 程序为:(由上题易得该程序,这里建立的新文件的名字为:students.c)

#include

#define SIZE 5

struct student_type

{

int num;

char name[10];

float score1;

float score2;

float score3;

float avg;

}stud[SIZE+1];

void save()

{

FILE *fp;

int i;

if((fp=fopen("students.c","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i

if(fwrite(&stud[i],sizeof(student_type),1,fp)!=1)

printf("file write error");

fclose(fp);

}

void main()

{

FILE *fp;

int i,j;

struct student_type temp,another;

scanf("%d%s%f%f%f",&another.num,https://www.doczj.com/doc/2114979114.html,,&another.score1,&another.score2,&another.s core3);

another.avg=(another.score1+another.score2+another.score3)/3;

fp=fopen("stu_list.c","ab");

fwrite(&another,sizeof(student_type),1,fp);

fclose(fp);

fp=fopen("stu_list.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

}

for(i=0;i

for(j=i+1;j

{

if(stud[i].avg>stud[j].avg)

{

temp=stud[i];

stud[i]=stud[j];

stud[j]=temp;

}

}

fclose(fp);

save();

fp=fopen("students.c","rb");

for(i=0;i

{

fread(&stud[i],sizeof(student_type),1,fp);

printf("%-4d %-10s %-10.2f %-10.2f %-10.2f %-10.2f\n",stud[i].num,stud[i].name,stud[i].sc ore1,stud[i].score2,stud[i].score3,stud[i].avg);

}

fclose(fp);

}

13.10 程序为:

#include

#define SIZE 1

struct employee_type

{ char name[10];

int num;

int age;

char sex[5];

char health[10];

int salary;

char adress[10];

char edu[10];

}emp[SIZE];

struct wage_type

{

char name[10];

int salary;

}emp1[SIZE];

void save()

{

FILE *fp;

int i;

if((fp=fopen("employee_list.c","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i

if(fwrite(&emp[i],sizeof(employee_type),1,fp)!=1)

printf("file write error");

fclose(fp);

}

void save1()

{

FILE *fp;

int i;

if((fp=fopen("employee_list1.c","wb"))==NULL)

{

printf("cannot open file\n");

return;

}

for(i=0;i

if(fwrite(&emp1[i],sizeof(wage_type),1,fp)!=1)

printf("file write error");

fclose(fp);

}

void main()

{

FILE *fp;

int i;

for(i=0;i

{

scanf("%s%d%d%d%s%s%s%s",emp[i].name,&emp[i].num,&emp[i].age,&emp[i].salary,em p[i].adress,emp[i].edu,emp[i].health,emp[i].sex);

printf("%s %d %d %d %s %s %s %s\n",emp[i].name,emp[i].num,emp[i].age,emp[i].salary,e mp[i].adress,emp[i].edu,emp[i].health,emp[i].sex);

}

save();

fp=fopen("employee_list.c","rb");

for(i=0;i

{

fread(&emp[i],sizeof(employee_type),1,fp);

for(int j=0;j<10;j++)

emp1[i].name[j]=emp[i].name[j];

emp1[i].salary=emp[i].salary;

}

save1();

for(i=0;i

{

fread(&emp1[i],sizeof(wage_type),1,fp);

printf("%s %d\n",emp1[i].name,emp1[i].salary);

}

}

注意:这个程序的编写不难,主要是在于用scanf函数读入数据时的一些细节问题。

13.11 这个程序在上题的基础上比较简单,只需在从文件把数据到数组时,删掉一个即可(略)。

13.12 程序为:

#include

void main()

{

int i,flag;

char str[80],c;

FILE *fp;

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

flag=1;

while(flag==1)

{

printf("Input string:\n");

gets(str);

fprintf(fp,"%s",str);

printf("Continue?");

c=getchar();

if((c=='N')||(c=='n'))

flag=0;

getchar();

}

fclose(fp);

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

while(fscanf(fp,"%s",str)!=EOF)

{

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

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

str[i]-=32;

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

}

fclose(fp);

}

注:这个程序很简单,不用费多大功夫,只需关注这个程序的风格就行了。

一个笔试中常见的程序:

#include//是指标准库中输入输出流的头文件, cout就定义在这个头文件里

using namespace std;

int main()

{

int count=1;

label: //标记label标签

cout<

if(count<=100)

goto label;//如果count的值不大于100则转到1abel标签处开始执行程序cout<

return 0;

}

注意:整个程序中没有for,while,do...wihle语句,但却实现了循环。

用C++编写程序,完成从键盘录入学生成绩的同时,计算班级平均成绩和及格学生平均成绩。程序为:

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里using namespace std;

int main()

{

float score[10];

float sum1=0;

float sum2=0;

float avg1,avg2,count1=0;

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

{

cout<<"请输入学生成绩:"<

cin>>score[i];

sum1+=score[i];

if (score[i]<60 ) //若score[i]不及格则退出本次循环

continue;

sum2+=score[i];

count1+=1;

}

avg1 = sum1/10;

avg2 = sum2/count1;

cout<<"班级学生平均成绩为:"<

cout<<"及格学生平均成绩为:"<

return 0;

}

自己编的一个程序:

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里using namespace std;

int main()

{

int i,renshu,n=0,m=0;

float sum1=0,sum2=0,score,aver1,aver2;

cout<<"请输入学生人数:";

cin>>renshu;

cout<<"请依次输入学生成绩:"<

for(i=0;i

{

cin>>score;

if(score>=60)

{

sum1+=score;

n++;

}

sum2+=score;

m++;

}

aver1=sum1/n;

aver2=sum2/m;

cout<<"及格学生的人数和平均成绩:"<

return 0;

}

功能和上面那个程序是一样的!

基于C++的简单计算器程序:

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里using namespace std;

int main()

{

double displayed_value; //设置显示当前值变量

double new_entry; //定义参与运算的另一个变量

char command_character; //设置命令字符变量,用来代表+、-、*、/运算

displayed_value = 0; //设置当前值为0

cout << "简单计算器程序" << endl<< "----" << endl;

cout << "在'>' 提示后输入一个命令字符"<< endl; //输出提示信息

cout << "Value : " << displayed_value << endl; //输出当前值

cout << "command>";

cin >> command_character; //输入命令类型如+、-、*、/、C、Q

while (command_character != 'Q')

{ //当接收Q命令时终止程序运行

switch(command_character)

{ //判断switch语句的处理命令

case 'C':

displayed_value = 0; //当输入命令为“C”时,表示清除命令设置当前值为0

break; //转向switch语句的下一条语句

case '+':

cout << "number>"; //当输入命令为“+”时,执行如下语句

cin >> new_entry; //输入一起运算的第二个数

displayed_value += new_entry; //进行加法运算

break; //转向switch语句的下一条语句

case '-': //当输入命令为“-”时,执行如下语句

cout << "number>"; //输入一起运算的第二个数

cin >> new_entry;

displayed_value -= new_entry; //进行减法运算

break; //转向switch语句的下一条语句

case '*': //当输入命令为“*”时,执行如下语句

cout << "number>";

cin >> new_entry; //输入一起运算的第二个数

displayed_value *= new_entry; //进行乘法运算

break; //转向switch语句的下一条语句

case '/': //当输入命令为“/”时,执行如下语句

cout << "number>";

cin >> new_entry; //输入一起运算的第二个数

displayed_value /= new_entry; //进行除法运算

break; //转向switch语句的下一条语句

cout << "无效输入,请重新输入命令类型!"<

cin.ignore(100,'\n'); //在计数值达到100之前忽略提取的字符

} //结束switch语句

cout << "Value : " << displayed_value << endl;

cout << "command>";

cin >> command_character; //输入命令类型如+、-、*、/、C、Q

} //结束while循环语句

return 0;

}

算法举例2——求和:

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里using namespace std;

int main()

{

int num,sum=0;

cout<<"请输入整数,(直到输入0时结束)"<

cin>>num;

while(num!=0)

{

sum+=num;

cin>>num;

}

cout<<"\n这些整数的总和为:"<

return 0;

}

算法举例1——求和:

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里using namespace std;

int main()

{

int x,y,z,temp;

cout<<"请输入三个整数:"<

cin>>x>>y>>z;

if(x

{

temp=y;

y=x;

x=temp;

}

{

temp=z;

z=x;

x=temp;

}

if(y

{

temp=z;

z=y;

y=temp;

}

cout<<"把这三个数按从大到小排序后为:"<

return 0;

}

输出矩阵对角线上的元素和,程序为:

#include //是指标准库中输入输出流的头文件, cout就定义在这个头文件里using namespace std;

int main()

{

int a[4][4],i,j,input_a=1,sum_diag1=0,sum_diag2=0;

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

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

a[i][j]=input_a++;

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

{

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

{

cout<

}

cout<

}

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

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

{

if(i==j)

sum_diag1+=a[i][j];

if(i+j==3)

sum_diag2+=a[i][j];

}

cout<<"主对角线上的元素和为:"<

cout<<"次对角线上的元素和为:"<

return 0;

}

矩阵为:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

MATLAB程序:用来清除插值分析中龙格现象的方法(chebyshev方法)程序为:

N=4;

>> k=[0:N];

>> x=cos((2*N+1-2*k)*pi/(2*(N+1)));

>> y=1./(1+8*x.^2);

>> c=newtonp(x,y);

>> xx=[-1:0.02:1];

>> yy=1./(1+8*xx.^2);

>> yy1=polyval(c,xx);

>> plot(xx,yy,'k-',x,y,'o')

>> plot(xx,yy,'k-',x,y,'o')

>> hold on

>> plot(xx,yy1,'b','Linewidth',1.5)

>> %计算4阶插值分析

>> N=8;

>> k=[0:N];

>> x=cos((2*N+1-2*k)*pi/(2*(N+1)));

>> y=1./(1+8*x.^2);

>> c1=newtonp(x,y);

>> yy2=polyval(c1,xx);

>> plot(x,y,'*')

>> plot(x,y,'r*')

>> plot(xx,yy2,'m','Linewidth',1.5)

>> %计算8阶插值分析

>> N=10;

>> k=[0:N];

>> x=cos((2*N+1-2*k)*pi/(2*(N+1)));

>> y=1./(1+8*x.^2);

>> c2=newtonp(x,y);

>> yy3=polyval(c2,xx);

>> hold on

>> plot(x,y,'d')

>> plot(x,y,'gd')

>> hold on

>> plot(xx,yy3,'g','Linewidth',1.5)

>> plot(xx,yy3,'r','Linewidth',1.5)

>> plot(xx,yy3,'g','Linewidth',1.5)

>> grid on

>> title('Chebyshev Interpolation')

>> figure

>> plot(xx,yy1-yy,'b','Linewidth',1.5),hold on

>> plot(xx,yy2-yy,'m','Linewidth',1.5),hold on

>> plot(xx,yy3-yy,'g','Linewidth',1.5),hold on

>> grid on

>> title('The error of Chebyshev Interpolation')

>> legend('4阶','8阶','10阶')

>> %根据上面的实例结果可以看出,当前用户使用Chebyshev方法来选择基础数据点时,可以十分有效的清除Runge现象,提高插值效率

函数main()参数的使用

程序为:

#include

using namespace std;

int main(int argc, char* argv[])

{

int i=0; //声明变量

cout<<"main参数:"<

cout<<"argc="<

for(i=0;i

cout<<"argv["<

return 0;

}

内联函数的使用的例子

程序为:

#include

using namespace std;

inline int max(int ,int); //声明内联函数

int main(int argc, char* argv[])

{

int a[10],i; //声明数组和变量

cout<<"输入10个数据:"<

for(i=0;i<10;i++) //循环10次

{

cin>>a[i];

《C程序设计》作业内容

实验一C语言的运行环境的使用 一、目的与要求 1. 了解Windows系统下C语言的运行环境,熟悉C程序调试、运行的基本操作方法。 2. 熟练掌握编辑、编译、连接和运行C程序的方法。 3. 通过运行简单的C程序,初步了解C源程序的特点。 4. 初步理解C语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运 行结果的基本输出方法。 二、实验例题 在C语言运行环境下,按以下例题要求完成程序的编辑、编译、连接和运行,直至取得正确的运行结果。 【例1】编程实现在屏幕上显示如下三行文字 Hello, world ! Wolcome to the C language world! Everyone has been waiting for. (1)输入如下程序: #include int main() { printf("Hello,World!\n"); printf("Wolcome to the C language world!\n"); printf("Everyone has been waiting for.\n"); return 0; } (2)将输入的程序以文件名example.c存盘。 (3)编译:通过“组建”(Build) 下拉菜单中的“编译”(compile)命令,编译example.c,若出现编译错误,则修改程序,重新编译,直至编译成功,系统自动生成目标文件example.obj。 (4)连接:通过“组建”(Build)下拉菜单中的“组建”(Build)命令,生成以.exe为扩展名的可执行文件example.exe。 (5)运行:通过“组建”菜单下的“执行”(Excute)命令运行程序并观察运行结果。 【例2】编写程序,将两个整数相加,并输出结果。 #include int main() { int a,b,sum; a=123;b=456; sum=a+b; printf(“sum is %d\n”,sum); return 0;}

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

完整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语言程序设计习题参考答案第四章(数组)

第四章数组参考答案 一、选择题:1、 B 2、C 3、D 4、C 5、C 6、B 7、D 8、B 9、B 10、A 二、填空题: 1、首地址 2、按行存放 3、一个字符 4、′\0′ 5、字符数组名或字符串 6、9 0 7、6 8、j-1 str[j-1] 9、62 10、s1[i]=s2[i]; 三、改错题 1、错误语句:int a[3][ ]={2,4,6,8,10,12,14,16,18}; 正确语句:int a[ ][3]={2,4,6,8,10,12,14,16,18}; 2、错误语句:if (str[2]>string) string=str[2]; 正确语句:if (strcmp(str[2],string)>0) strcpy(string,str[2]); 3、错误语句:char c[5]={'C','h ','i','n','a '}; 正确语句:char c[6]={'C','h ','i','n','a '};或char c[ ]={“China”}; 4、错误语句:int a[3]={3*0} ; 正确语句:int a[4]; 5、错误语句:scanf(“%d%d%d”,&a); 正确语句:for (i=0; i<3; i++) scanf(“%d”,&a[i]); 或scanf(“%d%d%d”, &a[0], &a[1], &a[2]); 四、编程题 1、用数组来处理,求解Fibonacci数列前40项:1,1,2,3,5,8,13,21…。 #include void main() { int i; int t[40]={1,1}; for(i=2;i<40;i++) t[i]=t[i-2]+t[i-1]; for(i=0;i<40;i++) { if(i%5==0) printf("\n"); printf("%15d",t[i]); } } 2、用选择法对20个整数排序(由大到小)。 #include void main() {int i,j,min,t,x[20]; for(i=0;i<20;i++) scanf("%d",&x[i]); for(i=0;i<19;i++) {min=i; for(j=i+1;j<20;j++) if(x[min]>x[j])min=j; t=x[i];

C语言程序设计作业参考答案

《C语言程序设计》作业参考答案 作业一 C语言概述 一、选择题: 1-5 ACDCB 二、编程题: main() { printf(“****************************************\n”); printf(“ Hello,world! \n”); printf(“****************************************\n”); } 作业二程序的灵魂——算法 一、填空题: 1.确定性有效性有零个或多个输入有一个或多个输出 2.顺序结构选择结构循环结构 3.函数 作业三数据类型、运算符与表达式 一、选择题: 1-5 BDDAB 6-10 BCAAB 11-15 BCADC 16-20 DACCA 21-25 ADDBA 26-30 DDDDD 作业四顺序结构 一、选择题: 1-5 BCDDD 6-10 BDADD 二、填空题: 1.【31.415920,3.14159e+01】 2.【c=k】 3.【a=1,b=空格,c=2】 4.【a=12,b=345】 5.【c=A】 作业五选择结构 一、选择题:1-5 ADCBC 6-10 BBBBA 11-15 DBAAC 16-17 CB 二、填空题: 1.【-1】 2.【3】 3.【4】 4.【11】 5.【97或'a'】 作业六循环结构 一、选择题: 1-5 CBAAC 6-10 CBCCB 11-15 DBDDB 16-20 BCAAC 21-25 CDBBB

作业七数组 一、选择题: 1-5 CDDAC 6-10 CCDBC 11-15 DDBCA 16-20 DCBDD 21-23 BDB 二、填空题: 1. LBLMNP 2. SW* 3. mo 4. a=2,b=1 作业八函数 一、选择题: 1-5 AAACA 二、填空题: 1.【编程中的main( )函数】 2.【函数说明部分】和【函数体】 3.【–125= –5*5*5】 4.【void add (float a, float b)】【float add (float a, float b)】 5.【i=7; j=6; x=7 i=2; j=7; x=5】 6.【111】 三、编程题: 1.参考代码 main() { int score,temp,log; char grade; log=1; while (log) { printf(“enter score:”); scanf(“%d”,&score); if ((score>100)||(score<0)) printf(“\n error,try again! \n”); else log=0; } if (score==100)temp=9; else temp=(score-score%10)/10; switch(temp) { case 0:case 1:case2: case 3:case 4:case 5:grade=’E’;break; case 6:grade=’D’;break; case 7:grade=’C’;break; case 8:grade=’B’;break; case 9:grade=’A’; } printf(“score=%d,grade=%c\n”,score,grade); } 2.解:设计以高度n为参数的函数trangle(int n),打印等边三角形。参考程序如下: #include

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6 #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; }

3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } 3-2-2 #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

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语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 2.设函数Fun()的定义形式为: void Fun(char ch, float x){} 则以下对函数Fun()的调用语句中,正确的是。 A)Fun("abc", 3.0); B)t = Fun('D', 16.5); C)Fun('65', 2.8); D)Fun(32, 32); 解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\main.c */ #include /* 标准输入/输出头文件*/ int f1(int x, int y) { return x > y ? x : y; } int f2(int x, int y) { return x > y ? y : x; } int main(void) /* 主函数main() */ { int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/ e = f2(f1(a, b), f1(c, d)); f = f1(f2(a, b), f2(c, d));/* 调用函数*/ g = a + b + c + d - e - f; /* 算术运算*/ printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */ return 0; /* 返回值0, 返回操作系统*/ } 程序运行后的输出结果是。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4; f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3; g=a+b+c+d-e-f=4+3+5+2-4-3=7。

C程序设计作业样本

第一章作业 答案:一,59,14.4,28.e 二1小题,59 2,15 一、将数89、20.25、40.875用十六进制表达 二、填空 1.在C语言中,数值常量0x3b十进制值是。 2.字母f ASCII码为十进制数___________。 第三章作业 一、选取题: 1、下列变量名中, B 是非法。 A) Tom B) 3n C) little_boy D) c10 2、若有如下类型阐明 char a; int b; float c; double d;则表达式a*b+d-c成果类型是(A ) A)float B)char C)int D)double 3、若x为整型,则逗号表达式(x=4*5,x*5),x+25成果及x值分别是(C )对的答案是100,45 A)45 20 B)125 20 C)125 45 D)100 100 4、假设所有变量均为整型,则表达式(a=3,b=2,b++,a+b)值是 C 。 A) 5 B) 8 C) 6 D)7 5、已知c2为字符型,则执行语句c2=’E’+’8’-‘A’后,c2值为 C 。 A) 12 B) 11 C)不拟定值D) 10

6、设a为double变量,b为int型变量,c为字符型变量,则a+b+c为( C )型 A) int B) float C) double D) char 7、C语言中不可用作标记符字符有( C ) A下划线 B % C数字 D字母 8、下面四个选项中,均是合法整型常量是(D ) A)160 B)- 0xcdf C)- 01 D)0x - 0xffff 01a 0668 2e5 9、设a为字符变量,b为int型变量,c为double型变量,则a*b+c为( C )型 A. int B. float C. double D. char 10.若a是int型变量,则表达式(a=4*5,a*2),a+4值为( C ) A. 20 B.22 C. 24 D. 44 第四章作业 一、选取题 1、若x为int型变量,则执行如下语句后x= C 。 x=5; x-=x-=x+x; A. -10 B. -5 C.0 D.10 2、在printf()函数格式阐明符中,字符型数输出格式阐明符是 D 。

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } 3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;

标准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程序设计(第四版)谭浩强-课后答案.pdf(2)(最新整理)

C 语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

printf("The largest number is %d\n",max); return 0; } 第3 章 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5 年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2 年期,到期后将本息再存3 年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3 年期,到期后将本息再存2 年期 p4=p*pow(1+r1,5); // 存1 年期,到期后将本息存再存1 年期,连续存5 次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1 方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2 方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3 方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4 方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5 方案得到的本息和 return 0; } #include #include

c程序设计作业

1、分析下面程序: # include int main() { char c1,c2; c1=97; c2=98; printf("c1=%c,c2=%c\n"c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0; } (1)运行时会输出什么信息?为什么? (2)如果将程序第4,5行改为 c1=197; c2=198; 运行时会输出什么信息?为什么? (3)如果将程序第3行改为 int c1,c2; 运行时会输出什么信息?为什么? 答:(1)程序运行不了,因为程序存在错误。正确的程序为:#include int main() { char c1,c2; c1=97; c2=98; printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0; } (2)如果将程序第4,5行改为 c1=197; c2=198; 运行时会输出: (3)如果将程序第3行改为 int c1,c2; 运行时会输出:

因为int表示整型,%c是输出字符,a的ASCLL代码是97,b的是98,所以输出 c1=a,c2=b.%d是表示输出十进制整型,所以输出c1=97,c2=98 2、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。 问在键盘上如何输入? #include int main() { int a,b; float x,y; char c1,c2; scanf("a=%db=%d",&a,&b); scanf("%f%e",&a,&y); scanf("%c%c",&c1,&c2); return 0; } 答:输入如图: 输出如图: (此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容, 供参考,感谢您的配合和支持)

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

(完整版)《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程序设计第四版谭浩强完整版课后习题答案

C程序设计第四版谭浩强完整版课后习题答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 向屏幕输出文字. #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } P008 求两个数的和. #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum);

return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); }

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