- 第一题:P14
- 第二题:P18
- 第三题:P19
- 第四题:P24
- 第五题:P25
- 第六题:P27
- 第七题:P29
- 第八题:P30
- 第九题:P34
- 提前小练习
- 第九题习题
- 第十题:P40
- 第十一题:P37
- 第十二题:P43
- 第十三题:P43
- 第十四题:P45
- 第十五题:P46
- 第十六题:P51
1、加入我国国民生产总值的年增长率为7%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为p=(1+r)^n
其中:r为年增长率,n为年数,p为与想在相比的倍数
# include第二题:P18# include int main() { float p,r,n; r=0.07; n=10; p=pow(1+r,n);//pow函数:pow(a,b)与a的b次方是等价的 printf("增长为%f",p); return 0; }
2、用scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=‘A’,c2=‘a’
# include第三题:P19int main() { int a,b; float x,y; char c1,c2; scanf("%d %d %f %f %c %c",&a,&b,&x,&y,&c1,&c2); //scanf函数的作用是获取键盘上输入的内容 //在键盘上输入的内容应该是:3 7 8.5 71.82 A a //因为第七行,%和%之间有空格,所以输入的时候也要加空格 printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c",a,b,x,y,c1,c2); return 0; }
3、密码规律是:用原来的字母后面第四个字母代替原来的字母。
请将China译成密码。
#include第四题:P24int main() { char c1='C',c2='h',c3='i',c4='n',c5='a'; c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf("密码是:%c%c%c%c%c",c1,c2,c3,c4,c5); return 0; }
4、判断下列逻辑表达式的结果为真还是假。设a=3,b=4,c=5.
a+b>c&&b==c //a+b=7>5为真,4=5为假,真&&假,结果为假 a||b+c&&b-c //a=1 为真,b+c=9为真,b-c=-1为真,真&&真为真,真||真为真,结果为真 !(a>b)&&!c||1 //a=3>b=4为假,!(a>b)就为真,c=5为真,!c为假,1为真,真&&假为假,假||真为真,结果为真 !(x=a)&&(y=b)&&0 //x=a=3为真,!(x=a)为假,y=b=4为真,0为假,假&&真为假,假&&假为假,结果为假 !(a+b)+c-1&&b+c/2 //!(a+b)=0,0+c=5,5-1=4为真,b+c/2=4+2.5=6.5为真,真&&真,结果为真
在逻辑运算符操作中只有0,1之分,也就是false和true之分,负数对应的逻辑值是true
第五题:P255、从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为小于1000的正数。若不是,则要求重新输入。
#include第六题:P27#include int main() { int i,j; printf("请输入小于1000的正数:"); scanf("%d",&i); while(i>1000) { printf("输入的数不满足要求,请重新输入:"); scanf("%d",&i); } j=sqrt(i); printf("平方根的整数部分为:%d",j); return 0; }
6、有一个函数:
写程序,输入x的值,输出y相应的值。
#include第七题:P29int main() { int x,y; printf("请输入一个数:"); scanf("%d",&x); if(x<1) { y=x; } else if(x>=1&&x<10) { y=2*x-1; } else if(x>=10) { y=3*x-11; } printf("y=%d",y); return 0; }
7、给出一百分制成绩(存在0.5分的情况),要求输出成绩等级为’A’,‘B’,‘C’,‘D’,‘E’。90分及以上为A,80 ~ 89分为B, 70 ~ 79分为C,60 ~ 69分为D,60分一下为E。
#include第八题:P30int main() { float i; char j; printf("请输入一个成绩:"); scanf("%f",&i); while(i>100) //使用循环,直到输入一个小于100的数,停止循环 { printf("超出总分范围,请重新输入:"); scanf("%f",&i); } if(i>=90) { j='A'; } else if(i>=80&&i<90) { j='B'; } else if(i>=70&&i<80) { j='C'; } else if(i>=60&&i<70) { j='D'; } else { j='E'; } printf("成绩等级为:%c",j); return 0; }
8、给一个不多于5 位的正整数,要求:
① 求出它是几位数;
② 分别输出每一位数字
③ 按逆序输出各位数字,例如原数为123,输出应为321。
#include第九题:P34 提前小练习int main() { int i,num,bit,ten,hundred,thousand,thousand_up; printf("请输入一个不多于5位数的正整数:"); scanf("%d",&i); while(i>100000) { printf("数字超过100000,请重新输入:"); scanf("%d",&i); } if(i>=10000&&i<99999) { num=5; } else if(i>=1000&&i<9999) { num=4; } else if(i>=100&&i<999) { num=3; } else if(i>=10&&i<99) { num=2; } else { num=1; } thousand_up=i/10000; thousand=(int)(i-10000*thousand_up)/1000; hundred=(int)(i-10000*thousand_up-1000*thousand)/100; ten=(int)(i-10000*thousand_up-1000*thousand-100*hundred)/10; bit=(int)(i-10000*thousand_up-1000*thousand-100*hundred)%10; switch(num) { case 1:printf("%d是一位数n",i); printf("每一位数字是:%dn",bit); printf("逆序输出为:%dn",bit);break; case 2:printf("%d是一两位数n",i); printf("每一位数字是:%d,%dn",ten,bit); printf("逆序输出为:%d,%dn",bit,ten);break; case 3:printf("%d是三位数n",i); printf("每一位数字是:%d,%d,%dn",hundred,ten,bit); printf("逆序输出为:%d,%d,%dn",bit,ten,hundred);break; case 4:printf("%d是四位数n",i); printf("每一位数字是:%d,%d,%d,%dn",thousand,hundred,ten,bit); printf("逆序输出为:%d,%d,%d,%dn",bit,ten,hundred,thousand);break; case 5:printf("%d是五位数n",i); printf("每一位数字是:%d,%d,%d,%d,%dn",thousand_up,thousand,hundred,ten,bit); printf("逆序输出为:%d,%d,%d,%d,%dn",bit,ten,hundred,thousand,thousand_up);break; } return 0; }
输入三个正整数,要求按由大到小的顺序输出。
方法一:
#includeint main() { int a,b,c,t; printf("请输入三个数字(中间用空格分开):"); scanf("%d %d %d",&a,&b,&c); if(a>b) { if(a>c) { if(b>c) printf("%d %d %d",a,b,c); else printf("%d %d %d",a,c,b); } else printf("%d %d %d",c,a,b); } else { if(a 方法二:
在方法二之前,可以再先看一个小代码:#includeint main() { int i=17; int j=28; int k; k=i; i=j; j=k; printf("i=%dn",i); printf("j=%d",j); return 0; } 这个小代码的输出结果为:
i=28 j=17可以发现,借助一个变量k,将i和j的值进行了交换。方法二就是利用这个小技巧。
#includeint main() { int i,j,k,t; printf("请输入三个数(中间用空格分开):"); scanf("%d %d %d",&i,&j,&k); if(i 为了更方便地查看过程,可以多打印几行
#includeint main() { int i,j,k,t; printf("请输入三个数(中间用空格分开):"); scanf("%d %d %d",&i,&j,&k); printf("i=%d,j=%d,k=%dn",i,j,k); if(i 结果为:
请输入三个数(中间用空格分开):12 23 34 i=12,j=23,k=34 i=23,j=12,k=34 i=34,j=12,k=23 排序结果为:34 23 12第九题习题有了上面练习的铺垫,这题直接拿捏!
9、输入4个整数,要求按照由小到大的顺序输出。#include第十题:P40int main() { int a,b,c,d,t; printf("请输入4个整数(中间用空格隔开):"); scanf("%d %d %d %d",&a,&b,&c,&d); if(a>b) { t=a;a=b;b=t; } if(a>c) { t=a;a=c;c=t; } if(a>d) { t=a;a=d;d=t; } if(b>c) { t=b;b=c;c=t; } if(b>d) { t=b;b=d;d=t; } if(c>d) { t=c;c=d;d=t; } printf("排序结果为:%d %d %d %d",a,b,c,d); return 0; } 10、输入两个正整数m和n,求其最大公约数和最小公倍数。
拿到这题,是有点懵的,平时都用的短除法,这应用到程序里面,似乎不太行,我就百度了一下,如何求最大公约数。(两数乘积除以最大公约数就是最小公倍数)
百度结果如下:
求最大公约数
使用辗转相除法。
#includeint main() { int a,b,t,p,r; printf("请输入两个数(中间用空格隔开):"); scanf("%d %d",&a,&b); if(a 第十一题:P37 11、输出一下4x5的矩阵。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20#include第十二题:P43int main() { int i,j,k; k=1; for(i=0;i<4;i++) { for(j=0;j<5;j++) { printf("%dt",k);//其中t的作用是将当前位置移到下一个tab位置 k++; } printf("n"); } return 0; } 输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如153是水仙花数,因为153=1^3 + 5^3 + 3^3。#include第十三题:P43int main() { int i,a,b,c; i=100; while(i<=999) { a=i/100; b=(i-a*100)/10; c=(i-a*100)%10; if(i==a*a*a+b*b*b+c*c*c) { printf("%dn",i); } i++; } return 0; } 13、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,又6=1+2+3,所以6是完数。编程找出1000之内的所有完数,并按照以下格式输出其因子:
6 its factors are 1,2,3#includeint main() { int i,j,k; i=2; while(i<1000) { k=0; for(j=1;j 第十四题:P45 14、有一个分数序列:
求出这个数列的前20项之和。#include第十五题:P46int main() { int i=1; float m,t=0.0,j=2.0,k=1.0;//需要一起计算的变量,最好统一 while(i<21) { t=t+j/k;//分数 累加 m=j;//将旧的分子j暂存在m中 j=j+k;//新的分子为旧的分子加分母 k=m;//新的分母为旧的分子 i++; // printf("j=%fn",j); // printf("k=%fn",k); // printf("t=%fn",t); } printf("前20项的和为:%f",t); return 0; } 15、一个球从100m高度自由落下,每次落地后反跳到原高度的一半,再落下,再反弹,求它在第10次落地时,共经过多少米,第10次反弹多高。
#include第十六题:P51int main() { float s=100,h=s/2; int i; for(i=2;i<=10;i++) { s=s+2*h;//经过的米数 h=h/2;//反弹的高度 } printf("共经过%f米,第十次反弹%f米",s,h); return 0; } 16、输出以下图案:
* *** ***** ******* ***** *** *#includeint main() { int i,j,k; for(i=1;i<=4;i++)//打印上4行 { for(j=1;j<=4-i;j++)//每行需要打印的空格 printf(" "); for(k=1;k<=2*i-1;k++)//每行需要打印的* { printf("*"); } printf("n"); } for(i=1;i<=3;i++)//打印下三行 { for(j=1;j<=i;j++) printf(" "); for(k=1;k<=7-2*i;k++) { printf("*"); } printf("n"); } return 0; }



