当前位置:文档之家› C程序设计第四版第四章答案

C程序设计第四版第四章答案

C程序设计第四版第四章答案
C程序设计第四版第四章答案

//5.输入一个小于1000的正数,先判断是否小于1000,若小于输出平方根的整数//部分,否则重新输入。

/*#include

#include

double Proot(double n)

{

double d;

if(n>1000)

{

printf("重新输入\n");

}

else

{

d=(double)sqrt(n);

}

return d;

}

int main()

{

printf("%.0f\n",Proot(9));

printf("%.0f\n",Proot(19));

printf("%.0f\n",Proot(1119));

return 0;

}*/

//6.当x<1时,y=x,当1<=x<10时,y=2x-1;当x>=10时,y=3x-11.编写程序。

/*#include

double Fun(double x)

{

double y;

if(x<1)

{

y=x;

}

else if(x>=1&&x<10)

{

y=2*x-1;

}

else

{

y=3*x-11;

}

return y;

}

int main()

{

printf("%f\n",Fun(0));

printf("%f\n",Fun(8.9));

printf("%f\n",Fun(11110));

printf("%f\n",Fun(-1.5));

return 0;

}*/

//7.当x<0时,y=-1,当x=0时,y=0;当x>0时,y=1.编写程序。/*#include

double Fun(double x)

{

double y;

if(x<0)

{

y=-1;

}

else if(x==0)

{

y=0;

}

else

{

y=1;

}

return y;

}

int main()

{

printf("%f\n",Fun(0));

printf("%f\n",Fun(10));

printf("%f\n",Fun(-0.01));

return 0;

}*/

//8.成绩分等级

/*#include

void Graded(float g)

{

if(g>=90&&g<=100)

{printf("A\n");}

else if(g>=80&&g<90)

{printf("B\n");}

else if(g>=70&&g<80)

{printf("C\n");}

else if(g>=60&&g<70)

{printf("D\n");}

else if(g<60)

{printf("E\n");}

else

{printf("others\n");}

}

int main()

{

Graded(98);

Graded(198);

Graded(68);

Graded(58);

return 0;

}*/

#include

void Dengji(char s)

{

switch(s/5)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:

case 10:

case 11:printf("D\n");break;

case 12:

case 13:printf("C\n");break;

case 14:

case 15:

case 16:printf("B\n");break;

case 17:

case 18:

case 19:

case 20:printf("A\n");break;

default:printf("error\n");

}

}

int main()

{

Dengji(100);

Dengji(110);

Dengji(80);

Dengji(40);

return 0;

}

/*9.给一个不多于5位的正整数,求出它是几位数,分别输出每一位数字,按义序输出

各位数字*/

/*#include

int Count(int n)

{int num;

if(n>9999)

{return num=5;}

else if(n>999)

{return num=4;}

else if(n>99)

{return num=3;}

else if(n>9)

{return num=2;}

else

{return num=1;}

}

int Printnum(int n)

{

int wan=n/10000;

int thou=(n-wan*10000)/1000;

int hund=(n-wan*10000-thou*1000)/100;

int shi=(n-wan*10000-thou*1000-hund*100)/10;

int ge=n-wan*10000-thou*1000-hund*100-shi*10;

printf("%d,%d,%d,%d,%d\n",wan,thou,hund,shi,ge);

printf("%d,%d,%d,%d,%d\n",ge,shi,hund,thou,wan);

return 0;

}

//int Orderfan(int n){

int main()

{printf("%d\n",Count(6789));

Printnum(7689);

printf("%d\n",Count(89));

Printnum(760);

return 0;

}*/

//10.分别用if和switch语句编写程序,求应发的奖金总额。

//if语句

/*#include

double Summoney(double x)

{

double y;

if(0

{y=0.1*x;}

else if(100000

{y=100000*0.1+(x-100000)*0.075;}

else if(200000

{y=100000*(0.1+0.075)+(x-200000)*0.05;}

else if(400000

{y=100000*(0.1+0.075)+200000*0.05+(x-400000)*0.03;}

else if(600000

{y=100000*(0.1+0.075)+200000*(0.05+0.03)+(x-600000)*0.015;}

else

{y=100000*(0.1+0.075)+200000*(0.05+0.03)+400000*0.015+(x-1000000)*0. 01;}

return y;

}

int main()

{

printf("%f\n",Summoney(99999));

printf("%f\n",Summoney(999999));

return 0;

}*/

//switch语句

#include

double Summoney(int x)

{

double y,y1,y2,y4,y6,y10;

y1=100000*0.1;

y2=y1+100000*0.075;

y4=y2+200000*0.05;

y6=y4+200000*0.03;

y10=y6+400000*0.015;

int f;

f=x/100000;

if(f>10)

{f=10;}

switch(f)

{

case 0:y=0.1*x;break;

case 1:y=y1+(x-100000)*0.075;break;

case 2:

case 3:y=y2+(x-200000)*0.05;break;

case 4:

case 5:y=y4+(x-400000)*0.03;break;

case 6:

case 7:

case 8:

case 9:y=y6+(x-600000)*0.015;break;

case 10:y=y10+(x-1000000)*0.01;break;

}

return (int)y;

}

int main()

{

printf("%f\n",Summoney(999999));

printf("%f\n",Summoney(99999));

return 0;

}

//11.输入4个整数,要求按由小到大的顺序输出/*#include

int *Ordernum(int *arr,int len)

{

int tmp;

for(int i=0;i

{for(int j=0;j

{

if(arr[j]>arr[j+1])

{

tmp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=tmp;

}

}

}

return arr;

}

void prinft(int *arr,int len)

{

for(int d=0;d

{

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

}

}

int main()

{

//int arr[4]={4,3,2,1};

int arr[4]={78,90,788,4};

prinft(Ordernum(arr,4),4);

return 0;

}*/

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语言程序设计教程 清华大学出版社 陈明主编 第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语言程序设计教程第四章练习试题解析[1]

单选题 1、关于C语言中的函数,下列描述正确的是() A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的嵌套均不可以嵌套 D.函数的定义和函数的调用均不可以嵌套 答案:B 解析:函数的定义不可以嵌套,但函数的调用可以嵌套 2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A 解析:(v1, v2), (v3,v4,v5)和v6一共三个实参 3、关于C语言中print()函数与scanf()函数,下列描述中正确的是() A.printf()函数可以向任何地方输出数据 B.printf()只向控制台输出数据 C.scanf()只能输入英文字母和数字 D.scanf()函数可以识别输入的空格 答案:B 解析:printf()是向控制台输出的函数 4、在C语言中,内部函数需要添加的关键字是() A.extern B.static C.this D.auto 答案:B 解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。 5、当调用时,会调用内部函数 A.当调用时,会调用内部函数 B.当调用时,会调用外部函数 C.当调用时,会调用两次,先调用内部函数再调用外部函数 D.都不调用,会报错 答案:A 解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是() A.extern B.static C.this

答案:A 解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字 7、关于C语言中的局部变量,下列描述中错误的是() A.局部变量就是在函数内部声明的变量 B.局部变量只在函数内部有效 C.局部变量只有当它所在的函数被调用时才会被使用 D.局部变量一旦被调用,其生存周期持续到程序结束 答案:D 解析:当函数调用结束时局部变量就会失去作用 8、关于C语言中的全局变量,下列描述中正确的是() A.全局变量的作用域一定比局部变量的作用域范围大 B.静态类别变量的生存周期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量 D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 答案:B 解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用; 选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量; 选项4不对:static变量定义时就存储地全局区,初始化为0; 9、当全局变量与局部变量重名时,那么在调用时() A.局部变量会被屏蔽 B.全局变量会被屏蔽 C.都不会调用,系统会报错 D.会调用两次,先调用局部变量,再调用全局变量 答案:B 解析:当局部变量与全局变量重名时,全局变量会被屏蔽。 10、在C语言中,关于变量的作用域,下列描述中错误的是() A.局部变量只在整个函数的运行周期中有效 B.全局变量的作用域为整个程序的运行周期 C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量 D.全局变量会覆盖掉所有与它重名的局部变量 答案:D 解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉 11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量() A.只在该复合语句中有效,在该复合语句外无效 B.在该函数中任何位置都有效 C.在本程序的原文件范围内均有效 D.此定义方法错误,其变量为非法变量 答案:D 解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量 4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的 12、C语言程序的基本单位是()。

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

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); }

C语言程序设计第二版第四章第七章课后答案

1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、 printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b); printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、 void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main()

C程序设计(第四版)(谭浩强)完整版_课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 1.1 向屏幕输出文字. #include//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to https://www.doczj.com/doc/7315438141.html,\n"); return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;. } P008 1.2 求两个数的和. #include int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 1.3 调用函数比较两个数的大小. #include int main() { int max(int x,int y); //被调用函数在主函数后面,用前先声明. int a,b,c; scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误. c=max(a,b); //a,b作为实参传入被调用函数中. printf("The max is %d .\n",c); return 0; } int max(int x,int y) //定义了两个形参. {

int z; //z属于局部变量,可与主函数中相同名字. if (x>y) z=x; else z=y; return(z); //z作为整个程序的出口值,赋给主函数中的c. } #include int main() { int a,b,c,d; //d是用于存储最大值的. int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明. 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); // d可以换成max(a,b,c). } 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); //返回值m给主函数中的d. } C程序设计(第四版)(谭浩强)第2章课 后习题答案 算法——程序的灵魂

c语言程序设计第四版第四章答案谭浩强

第四章 什么是算术运算什么是关系运算什么是逻辑运算 解:略。 C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假” 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include <> main() { int a,b,c; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)a:b; /* 将a和b中的大者存人temp中 */ max=(temp>c)temp:c; /* 将a和b中的大者与c比较,取最大者*/ printf("3个整数的最大数是%d\n”,max); }

最新C++程序设计基础课后答案--第四章

4.1 阅读下列程序,写出执行结果 1.#include void main() { int i, conut=0, sum=0 ; float average ; int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ; for( i=0; i<10; i++ ) { if( a[i] % 2 == 0 ) continue ; sum += a[ i ] ; conut ++ ; } average = sum / conut ; cout << "conut = " << conut << '\t' << "average = " << average << endl ; } 2.#include void main() { int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; int *p = a , sum = 0 ; for( ; p='A' && x<='Z') { x=x+32; /*是大写,转换为小写,至于为什么要+32吗,请看看 大小写字母的ASCII码差值*/ } else if( x>='a' && x<='z') { x=x-32; /*是小写,转换为大写*/ } /*其它不用理*/ printf("%c\n",x); } 2:输入一个大写字母实现,输出字母表中的前后字母,但是当时A 或是Z时提示输出的“没有前面的字母”,“没有后面的字母” #include void main() {char x; printf("输入一个大写字母x:\n"); scanf("%c",&x); if (x=='A') {printf("没有前面的字母");} if( x=='Z') { printf("没有后面的字母");} else// (x>'A'||x<'Z') {printf("%c, %c",x-1,x+1);} } 3:实现的是对百分制的评等级

#include void main() { float x; printf("请输入学生的成绩x的值\n"); scanf("%f",&x); if(x>=90&&x<=100) {printf("等级为A ");} else { if (x>=80&&x>=89) {printf("等级为B "); } else if (x>=70&&x<=79) {printf("等级为C "); } else if (x>=60&&x<=69) {printf("等级为D "); } else { printf("等级为E "); } } } 4:知道今天的日期,年月日,求出明天的年月日 #include int main() { int year,month,day; int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入年月日,中间用空格隔开!\n"); scanf("%d %d %d",&year,&month,&day); if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29;//闰年二月最大值是29 if(month>12 || month<1) { printf("日期不合法!\n"); return 0; } if(day>maxdays[month-1])

C程序设计课后习题1-3(答案)

C程序设计课后习题 第一章习题 1.选择题 (1)C语言程序的执行总是从(A)开始。 A.main函数的入口 B.编译预处理命令 C.源程序的第一个函数 D.源程序的第一行语句 (2)在C语言的源程序中,主函数的位置(C)。 A.必须在编译预处理命令的后面 B.必须在源程序的最后 C.任意 D.必须在源程序的开头 (3)下列变量名中合法的是(C)。 A. B.C.Tom B.3a6b C._6a7b D.$ABC (4)下面两对用户定义标识符哪个可读性更强:(C) A.checkquality B.salarytotal C.check_quality C.sal_ary_tot_al (5)C程序是由(D)组成。 A.若干个过程 B.若干子程序 C.一个主程序和若干子程序 D.若干函数 2.填空题 (1)一个函数一般由两部分组成,它们分别是_函数首部______和__函数体____。 (2)编译预处理命令___是_____(填“是”或“不是”)C语

言文本的一部分。 (3)一个C语言程序至少应包含一个__主函数或main()__。 (4)C语言的标准输入函数是_scanf()__,标准输出函数是 ___printf()____。 (5)函数体用___{______符号开始,用_____}______符号结束。 (6)注释的开始和结束标志分别为__/*____和____*/____。为 增强程序的__可读性___,应该为程序写上清晰的注释。 3.编程题:参考本章例题,编写一个C程序,输出以下信息。 ********************** *The data is * * 2005-03-23 * ********************** 程序如下: #include Void main() {printf(“**********************\n”); printf(“*The data is *\n”); printf(“* 2005-03-23 *\n”); printf(“**********************\n”); }

C语言程序设计 第四章

C语言程序设计 第四章分支结构程序设计 1、分支(选择)结构的基本形式: If (表达式) 语句 注:if(表达式)后面没有“;” 2、分支(选择)结构的标准形式: If (表达式)语句1 else 语句2 3、多分支(选择)结构的形式: if (表达式)语句1 else if (表达式)语句2 else if (表达式)语句3 … else if (表达式)语句n else 语句n+1 4、对if语句的说明如下: ①三种形式的if语句中在if后面都有表达式,一般为逻辑表达式或关系表达式,但也可以是其他表达式,如赋值表达式等,甚至可以是一个变量。 例如,if(a=5);语句、if(b);语句都是允许的。只要表达式的值为非0,即为“真”。 如在if(a=5)…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。 ②第二、第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。 ③在if和else后面可以只含有一个内嵌的操作语句,也可以由多个操作语句组成,此时用花括号{}将几个语句括起来组成一个符合语句。 5、if语句的嵌套: C语言规定,缺省{}时,else总是与上面最近的、没有匹配过的if匹配。 例如:改写下列if语句,使else和第一个if配对。 If(X<2) If(X<1)Y=X+1; else Y=X+2:; ①通过添加{}改变配对关系: If(X<2) { If(X<1)Y=X+1; } else Y=X+2:; ②或者,通过添加else语句改变配对关系: If(X<2) If(X<1)Y=X+1; else;

C语言程序设计第3版何钦铭颜晖第4章循环结构

第4章循环结构 【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果就是什么?为什么?如果将精度改为 10-3,运行结果有变化不?为什么? 解答: 如果对 item 赋初值 0,则程序运行结果就是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。 【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化不?如果第一个输入数据就是 -1,运行结果就是什么?为什么? 解答: 如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数就是一结束标志,不进行统计,故任意一个负数都可以。如果第一个输入数据就是-1,运行结果就是:Grade averageis 0,因为第一个输入就就是-1,则 while 循环条件不成立,不执行循环体。 【练习 4-3】序列求与(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。试编写相应程序。 解答: #include #include int main(void) { int denominator, flag; double item, s,eps; printf(“Input eps:”); scanf(“%lf”,&eps); flag = 1; denominator = 1 ; item = 1、0; s = 0; while(fabs (item) >= eps) { item = flag * 1、0 / denominator; s = s + item; flag = -flag; denominator = denominator +3; } printf ( “s = %f\n”, s);

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

第四章 4.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 解:略。 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 4.4 有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include main() { int a,b,c; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; /* 将a和b中的大者存人temp中*/ max=(temp>c)?temp:c; /* 将a和b中的大者与c比较,取最大者*/ printf("3个整数的最大数是%d\n”,max); }

c语言程序设计第四版第九章答案谭浩强

第九章 9.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。解:Struct {int year; int month; int day; }date; main() {int days; printf(“Input year,month,day:”); scanf(“%d,%D,%d”,&date.year,&date.month,&date.day); switch(date.month) {case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+31; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334; break; } if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)days+=1; printf(“\n%d/%d is the %dth day in%d.”,date.month,data.day,days,date,year); } 9.2写一个函数days,实现上面的计算。由主函数将年、月、日传递给days 函数,计算后将日数传回主函数输出。 解:struct y_m_d {int year: int month; int day; }date; intdays(struct y_m_d date1) {int sum; switch(data.month) {case 1:sum=date1.day; break; case 2:sum=date1.day+31; break; case 3:sum=date1.day+59; break; case 4:sum=date1.day+90; break; case 5:sum=date1.day+120; break; case 6:sum=date1.day+151; break;

C语言程序设计教程第四章练习题解析(20200930222025)

单选题 1、关于C 语言中的函数,下列描述正确的是( ) A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B?函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的嵌套均不可以嵌套 D?函数的定义和函数的调用均不可以嵌套 答案:B 解析:函数的定义不可以嵌套,但函数的调用可以嵌套 2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A 解析:(v1, v2),(v3,v4,v5)和v6 一共三个实参 3、关于 C语言中print()函数与scanf()函数,下列描述中正确的是() A. printf() 函数可以向任何地方输出数据 B. printf() 只向控制台输出数据 C. sca nf()只能输入英文字母和数字 D. sca nf()函数可以识别输入的空格 答案:B 解析:printf() 是向控制台输出的函数 4、在C语言中,内部函数需要添加的关键字是( ) A. extern B. static C. this D. auto 答案:B 解析:在定义内部函数时,需要在函数的返回值类型前面添加static 关键字(又称为静态函数)。 5、当调用时,会调用内部函数 A. 当调用时,会调用内部函数 B. 当调用时,会调用外部函数 C. 当调用时,会调用两次,先调用内部函数再调用外部函数 D都不调用,会报错 答案:A 解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是( ) A. extern B. static C. this D. auto

C程序设计第四版第四章答案

//5.输入一个小于1000的正数,先判断是否小于1000,若小于输出平方根的整数//部分,否则重新输入。 /*#include #include double Proot(double n) { double d; if(n>1000) { printf("重新输入\n"); } else { d=(double)sqrt(n); } return d; } int main() { printf("%.0f\n",Proot(9)); printf("%.0f\n",Proot(19)); printf("%.0f\n",Proot(1119)); return 0; }*/ //6.当x<1时,y=x,当1<=x<10时,y=2x-1;当x>=10时,y=3x-11.编写程序。 /*#include double Fun(double x) { double y; if(x<1) { y=x; } else if(x>=1&&x<10) { y=2*x-1; } else { y=3*x-11;

} return y; } int main() { printf("%f\n",Fun(0)); printf("%f\n",Fun(8.9)); printf("%f\n",Fun(11110)); printf("%f\n",Fun(-1.5)); return 0; }*/ //7.当x<0时,y=-1,当x=0时,y=0;当x>0时,y=1.编写程序。/*#include double Fun(double x) { double y; if(x<0) { y=-1; } else if(x==0) { y=0; } else { y=1; } return y; } int main() { printf("%f\n",Fun(0)); printf("%f\n",Fun(10)); printf("%f\n",Fun(-0.01)); return 0; }*/ //8.成绩分等级 /*#include

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

第四章 4.1什么是算术运算?什么是关系运算?什么是逻辑运算?解: 略。 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?解: 设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。 但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。 例如3&&5的值为“真”,系统给出3&&5的值为 1。 4.3写出下面各逻辑表达式的值。 设a=3,b=4,c= 5。 (1) a+b>c&&b==c(2) a||b+c&&b- c(3) !(a>b)&&!c||1(4) !(x=a)&&(y=b)&&0(5) !(a+b)+c-1&&b+c/2解: (1) 0(2) 1(3) 1(4) 0(5) 14.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一#include main(){ int a,b,c;printf("请输入3个整数: ");scanf("%d,%d,%d",&a,&b,&c);if(a

程序如下: #include main(){ int a,b,c,temp,max;printf("请输入3个整数: ");scanf("%d,%d,%d",&a,&b,&c);temp=(a>b)?a: b;/*将a和b中的大者存人temp中*/max=(temp>c)?temp: c;/*将a和b中的大者与c比较,取最大者*/printf("3个整数的最大数 是%d\n”,max);} 4.6有一函数: 写一程序,输入x值,输出y值。 解: #include main(){int x,y;printf("输入x: ");scanf("%d",&x);if(x<1)/* x<1 */{ y=x;printf("x=%3d, y=x=%d\n",x,y);}else if (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,y);}} 4.8给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。 90分以上为’A’,80~90分为’B’,70~79分为’C’,60分以下为’D’。 解: 程序如下: #include main(){ float score;char grade;printf("请输入学生成绩: ");scanf("%f",&score);while(score>100||(score<0){ printf("\n输入有误,请重新输入: ");scanf("%f",&score);}switch((int)(score/10)){ case 10: case 9:

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