习 题 课(作业)
第二章 1、阅读程序,写出输出结果。 main() { int x,y,z; x=y=2; z=3; y=x++-1; printf("%d,%d\t",x,y); y=++x-1; printf("%d,%d\t",x,y); y=z--+1; printf("%d,%d\t",z,y); y=--z+1; printf("%d,%d\t",z,y); } 3,1□□□□□4,3□□□□□ 2,4□□□□□1,2□□□□□
2、计算下列表达式的值。 (1)52%10/2+4.0*(8/5) =5.0 (2)20.0*(3/6*10.0) =0.0 (3)(int)(13.7+25.6)/4%4 =1
P25. 2.2 #include <stdio.h> main() { int i,j,m,n; i=3;j=5; m=++i;n=j++; printf(”%d,%d,%d,%d\n”,i,j,m,n); } 4,6,4,5
main() { int c1,c2; c1=97;c2=98; printf(”%c,%c\n”,c1,c2); printf(”%d,%d\n”,c1,c2); } a,b 97,98
aabb□□□□cc□□□□□□abc main() { char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf(”a%cb%c\tc%c\tabc\n”,c1,c2,c3); printf(”\t\b%c%c”,c4,c5); } aabb□□□□cc□□□□□□abc □□□□□□□AN
读程题:除了跟踪到正确的变量值 还要注意输出控制格式。 main() { int x=4,y=0,z; x*=3+2; printf(”%d\n”,x); x*=(y=(z=4)); printf(”%d”,x); } 20 80
第三章 注意:输入格式的匹配问题 1、编一程序,求两点之间的距离,已知直角坐标系 中求两点(x1,y1)和(x2,y2)之间距离公式为: /*distance*/ #include<math.h> #include<stdio.h> main() { float x1,x2,y1,y2,d; printf("Input point1 and point2:(x1,y1)(x2,y2):"); scanf("(%f,%f)(%f,%f)",&x1,&y1,&x2,&y2); d=sqrt(pow(x2-x1,2)+pow(y2-y1,2)); printf("The distance from point1 to point2 is %f",d); } 1、编一程序,求两点之间的距离,已知直角坐标系 中求两点(x1,y1)和(x2,y2)之间距离公式为: d= (x2-x1)2+(y2-y1)2
注意:数据类型的问题 2、编一程序,将输入的摄氏温度转换为华氏温度和 绝对温度。转换公式为: F= C+32 K=273.16+C 5 9 main() { float F,K,C; printf("Please input temperature C:"); scanf("%f",&C); F=5.0/9*C+32; K=273.16+C; printf(“F=%.2f,K=%.2f",F,K); } (float)(5/9)*c?
第四章 注意:优先级和结合方向 P65. 4.1 4.1 写出下面各逻辑表达式的值,其中a=3,b=4,c=5 (1)a+b>c&&b==c (2)a||b+c&&b-c 1 (3)!(a>b)&&!c||1 1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 1
1、case后为一个常量(整型和字符型); 注意:输入格式匹配; case 语句的要求: 1、case后为一个常量(整型和字符型); 2、case 与后面的常量之间用空格隔开。 main() { float x,y,result; char op; printf("Please input xopy(x+y):"); scanf("%f%c%f",&x,&op,&y); switch(op) { case '+':result=x+y;break; case '-':result=x-y;break; case '*':result=x*y;break; case '/':result=x/y;break; default: printf("Data error!");break; } printf("result=%f",result); 4.5 计算器程序。用户输入运算数 和四则运算符,输出计算结果。
第五章 套公式 分析:整体求和 1、循环 2、sum=sum+t; 次数:n t=0; for (i=1;i<=n;i++) main() { long sum; int i,j,t,n; sum=0; printf("Please input n:"); scanf("%d",&n); for(i=1;i<=n;i++) { t=0; for(j=1;j<=i;j++) t=t+j; sum=sum+t; } printf("\ns=1+(1+2)+(1+2+3)+...+(1+2+3+...n)=%ld",sum); 第五章 5.4 编写一个程序,求 s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。 分析:整体求和 1、循环 2、sum=sum+t; 次数:n t=0; for (i=1;i<=n;i++) { t=t+i; sum=sum+t; } 关键是单项t的变化很灵活。 单项t其实还是一个累加求和 1、循环 次数:与t的位置相关 2、t=t+i 单项i自加即可
#include <math.h> main() { float t=1,sum=0; int i; 5.5 编写一个程序,求 #include <math.h> main() { float t=1,sum=0; int i; for(i=2;i<=100;i++) { sum=sum+t; t=pow(-1,i-1)/i; } printf("The result is %f",sum); 2 — 1 3 4 s= - + … 100 99
分析:将每一位分解出来,只要不为0,做运算。 #include<math.h> main() { long num; int t,sum=0,i,x,y; printf("\nPlease input number(2/8/16):"); scanf("%d",&t); printf("Please input %d-number:",t); scanf("%ld",&num); for(i=0;num!=0;i++) { x=num%10; if(x!=0) { y=x*pow(t,i); sum+=y; } num=num/10; printf("\nThe 10-number is %d",sum); 5.6 编写一个程序,将一个二、八、 十六进制整数转换成十进制。 分析:将每一位分解出来,只要不为0,做运算。
for(i=1;1.0/t>=1e-7;i++) { t=t*i; e=e+1.0/t; } e≈1+1/1!+1/2!+…+1/n! main() { int t=1,i,j; float e; e=1.0; for(i=1;1.0/t>=1e-7;i++) { t=1; for(j=1;j<=i;j++) t=t*j; e=e+1.0/t; } printf("e=%f",e); t=1; for(i=1;1.0/t>=1e-7;i++) { t=t*i; e=e+1.0/t; }