内容发布更新时间 : 2024/11/5 22:00:00星期一 下面是文章的全部内容请认真阅读。
printf(“请输入一个实数\\n”); scanf(“%lf”,&x); y=x>=0?x:-x;
printf(“|%g|=%g\\n”,x,y); }
6.输入梯形的上底、下底和高,求梯形面积。
解:#include
double a,b,h,s;
printf(“请输入梯形的上底,下底,高\\n”); scanf(“%lf,%lf,%lf”,&a,&b,&h); s=(a+b)*h/2;
printf(“ 梯形面积=%f\\n”,s); }
7. 输入矩形的边长,求矩形面积。
解:#include
double a,b,s;
printf(“请输入矩形的长,宽\\n”); scanf(“%lf,%lf”,&a,&b); s=a*b;
printf(“ 矩形面积=%f\\n”,s); }
8. 已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。
解:#include
int a,d,n,sum;
printf(“请输入等差数列的首项 公差 项数\\n”); scanf(“%d%d%d”,&a,&d,&n); sum=a*n+n*(n-1)*d/2;
printf(“ sum=%d\\n”,sum); }
9. 编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。
解:#include
int d,h,m,t;
printf(“请输入天 小时 分钟\\n”); scanf(“%d%d%d”,&d,&h,&m); t=d*24*60+h*60+m;
printf(“%d天%d小时%d分钟=%d分钟\\n”,d,h,m,t); }
10
10. 编写程序,求出给定半径r的圆以及内接正n边形的面积,输出计算结果。r和n的值由键盘输入。
解:#include
double r,s1,s2; int n;
printf(“Input r n\\n”); scanf(“%lf%d”,&r,&n); s1=PI*r*r;
s2=n/2.0*r*r*sin(2*PI/n);
printf(“圆面积=%f,正内接%d边形面积=%f\\n”,s1,s2); }
习 题 4
一、单项选择题
1.下列语句将小写字母转换为大写字母,其中正确的是( )。
A.if(ch>='a'&ch<='z')ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32; C.ch=(ch>='a'&&ch<='z')?ch-32:' '; D.ch=(ch>'a'&&ch<'z')?ch-32:ch;
2.下列各语句中,能够将变量u、s中最大值赋给变量t的是( )。
A.if(u>s)t=u;t=s; B.t=s;if(u>s)t=u; C.if(u>s)t=s;else t=u D.t=u;if(u>s)t=s;
3.假设变量x、k都已定义,下列语句片段中,无语法错误的是( )。
A. switch(x){
case x>=90: putchar('A'); case x<60: putchar('E'); }
B. switch(x) {
case 1+2: k='A'; defualt: k='E'; case 2*4: k='B'; }
C. switch(x){
case 2+x: k=x-2; case 3*x: k=x+3; default: k=0; }
D. switch(x){
case 3.5: k=0.5*x; case 7.8: k=8*x; default: k=0; }
*4.与语句while(!s )中的条件等价的是( )。
11
A.s==0 B.s!=0 C.s==1
D.s=0
5.下列语句中,哪一个可以输出26个大写英文字母( )。
A.for(a='A';a<='Z';printf(\,++a)); B.for(a='A';a<'Z';a++)printf(\,a); C.for(a='A';a<='Z';printf(\,a++)); D.for(a='A';a<'Z';printf(\,++a));
6.判断下面的while循环体的执行次数( )。
i=0; k=10;
while( i=8 ) i=k––;
A.8次 B.10次 C.2次 D.无数次
解:(1) B (2) B (3) B (4) A (5) C (6) D 二、写出下列程序的输出结果 1.#include
void main() {
char x;
int n=0,k=0;
while((x=getchar())!='#'){ //运行时输入:a the ftheth e
there#
switch(x){
case 't': k++; break;
case 'h': if(k==1) k++; break; case 'e': if(k==2) k++; break; default: k=0; }
if(k==3) n++; } printf(\} 解:3
*2.
#include
void main( ) {
int k=0; char c='A';
do {
switch (c++) {
case 'A': k++; break; case 'B': k--;
case 'C': k+=2; break; case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3;
12
} k++;
}while(c<'G');
printf(\}
解:k=8
*3.
#include
char a,b,x; int i; do
x=getchar(); //运行时输入:2abcD while (isupper(x)==0);
for(a='A'; a<=x; a++){ for(b='A'; b<'A'+x-a; b++) putchar(' '); for(i=1;i<=2*(a-'A')+1;i++) putchar(a);
putchar('\\n'); } }
注:isupper(x)是判断x是否大写字母的函数,如果x是大写字母函数值为1
否则为0。
解: A BBB CCCCC
DDDDDDD 4.
#include
int i,n;
scanf(\输入2520 i=2;
while(n>1) if(n%i==0){
printf(\ n/=i; }
else i++; printf(\}
13
解: 2 2 2 3 3 5 7
三、填空题
1.求1~10的乘积,写作:
for( , i=1; i<=10; ++i) s*=i;
解: s=1
2.下面程序段执行后,x、y的值分别为 。
y=1; x=5;
while(x) { x--; y++; }
解: x、y分别为0和6
*3.输入若干个以问号结束的字符,同时输出这串字符(不包括问号);
while( !='?') putchar(ch);
解: (ch=getchar()) //注意外面的这对括号不能少
*4.有以下程序片段:
s=1.0;
for(k=1;k<=n; k++) s+=1.0/(k*(k+1)); printf(\填空,使下程序段与上程序段功能完全相同。
s=0.0;
; k=0; do
{ s+=d;
; d=1.0/(k*(k+1)); }
while( ); printf(\
解: d=1 k++ k<=n
5.下列程序输出6~10000之间的亲密数对,填空将程序补充完整。若a、b是亲密数对,则a的因子和等于b,b的因子和等于a,且a不等于b。
#include
{ int a,b,c,i;
for(a=6;a<=10000;a++) { b=1;
for(i=2;i<=a/2;i++)
if( ) b+=i;
for(i=2;i<=b/2;i++) if(b%i==0) c+=i;
14