1、7-21 超速判断
#include <stdio.h>
int main()
{
int speed;
scanf("%d",&speed);
if(speed <= 60){
printf("Speed: %d - OK",speed);
}
if(speed > 60){
printf("Speed: %d - Speeding",speed);
}
return 0;
}
2、7-22 用天平找小球
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a==b){
printf("C\n");
}
else if(b==c){
printf("A\n");
}
else{
printf("B\n");
}
return 0;
}
3、7-23 分段计算居民水费
#include<stdio.h>
int main(){
double x,y;
scanf("%lf",&x);
if(x<=15){
y=4*x/3;
}
else{
y=2.5*x-17.5;
}
printf("%.2f\n",y);
return 0;
}
4、7-24猜数字游戏
#include <stdio.h>
int main() {
int n0, N, count = 0;
scanf("%d %d", &n0, &N);
int n;int flag=1;
while (flag==1) {
scanf("%d", &n);
count++;
if ((count > N) || (n < 0 && count <= N)) {
printf("Game Over\n");
flag=0;break;
}
if (n > n0) {
printf("Too big\n");
}
if (n < n0) {
printf("Too small\n");
}
if (n == n0) {
if (count == 1) {
printf("Bingo!\n");
}
else if (count <= 3) {
printf("Lucky You!\n");
}
else {
printf("Good Guess!\n");
}
flag=0;break;
}
}
}
5、7-25 求奇数和
#include <stdio.h>
int main(){
int sum=0, n=-1;
while(1){
scanf("%d", &n);
if(n<=0){
break;
}
if(n%2==1){
sum += n;
}
}
printf("%d\n", sum);
return 0;
}
6、7-26 最大公约数和最小公倍数
#include <stdio.h>
int main ()
{
int M,N;
scanf("%d %d",&M,&N);
int a=M;
int b=N;
int t;
//辗转相除法求最大公约数
while(b!=0){
t=a%b;
a=b;
b=t;
}
//数a、b的最大公约数m和最小公倍数n的关系:ab=mn
printf("%d %d\n",a,M*N/a);
return 0;
}
7、7-27 兔子繁衍问题
/* 解释
month 1 2 3 4 5 6 7
number 1 1 2 3 5 8 13
规律:第n个月的兔子数是n-2月+n-1月的兔子的和
*/
#include <stdio.h>
int main (){
int N,month=0,i,number=1;
scanf("%d",&N);
int count [2];
while(number < N){
month ++;
i = month%2;
if (month <= 2){
count [i]=number;
// printf("month = %d,number = %d\n",month,number);
continue;
}
number = count[0] + count[1];
// printf("month = %d,number = %d\n",month,number);
count[0] = count [1];
count[1] = number;
}
if (number==1) //月份最少为1
month ++;
printf("%d\n",month);
return 0;
}
8、7-28 求整数的位数及各位数字之和
#include <stdio.h>
int main(){
int n, count, sum;
sum = 0;
count = 0;
scanf("%d", &n);
while(n!=0){
count++;
sum += n%10;
n /= 10;
}
printf("%d %d\n", count, sum);
return 0;
}
9、7-29 二分法求多项式单根
#include <stdio.h>
#include <math.h>
int main(){
double a3, a2, a1, a0;
double a, b, mid;
scanf("%lf%lf%lf%lf", &a3, &a2, &a1, &a0);
scanf("%lf%lf", &a, &b);
if( fabs(a3*a*a*a+a2*a*a+a1*a+a0) < 1e-5 ){
/* C语言无法准确判断两个实数是否相等,故判据为两数距离的大小*/
printf("%.2f\n", a);
}
else if( fabs(a3*b*b*b+a2*b*b+a1*b+a0) < 1e-5 ){
printf("%.2f\n", b);
}
else if( (a3*a*a*a+a2*a*a+a1*a+a0)*(a3*b*b*b+a2*b*b+a1*b+a0) < 0 ){
while( fabs(a-b) > 1e-5 ){
mid = (a+b)/2;
if( fabs(a3*mid*mid*mid+a2*mid*mid+a1*mid+a0) < 1e-5 ){
printf("%.2f\n", mid);
break;
}
else if( (a3*a*a*a+a2*a*a+a1*a+a0)*(a3*mid*mid*mid+a2*mid*mid+a1*mid+a0) < 0 ){
b = mid;
}
else{
a = mid;
}
}
if(fabs(a-b) <= 1e-5){
printf("%.2f", (a+b)/2);
}
}
return 0;
}
10、7-30 念数字
\\使用数组
#include<stdio.h>
int main()
{
int a[100] = {0};
int x;
scanf("%d",&x) ;
if(x<0)
{
x = -x;
printf("fu ");
int c = 0;
while(x != 0){
int y = x%10;
a[c] = y;
c ++;
x /= 10;
}
for(int i = c- 1;i > 0;i --){
switch(a[i]){
case 0:printf("ling ");break;
case 1:printf("yi ");break;
case 2:printf("er ");break;
case 3:printf("san ");break;
case 4:printf("si ");break;
case 5:printf("wu ");break;
case 6:printf("liu ");break;
case 7:printf("qi ");break;
case 8:printf("ba ");break;
case 9:printf("jiu ");break;
}
}
switch(a[0]){
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
}
else{
int c = 0;
while(x != 0){
int y = x%10;
a[c] = y;
c ++;
x /= 10;
}
for(int i = c - 1;i > 0;i --){
switch(a[i]){
case 0:printf("ling ");break;
case 1:printf("yi ");break;
case 2:printf("er ");break;
case 3:printf("san ");break;
case 4:printf("si ");break;
case 5:printf("wu ");break;
case 6:printf("liu ");break;
case 7:printf("qi ");break;
case 8:printf("ba ");break;
case 9:printf("jiu ");break;
}
}
switch(a[0]){
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
}
return 0;
}
11、7-31 掉入陷阱的数字
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
for(int i = 1; ; i++){
int sum = 0, m,t;
t = n;
while(n>0){
sum += n % 10;
n /= 10;
}
m = t;
n = sum * 3 + 1;
printf("%d:%d\n", i, n);
if(m == n) break;
}
return 0;
}
12、7-32 求交错序列前N项和
#include <stdio.h>
int main()
{
int n;
double a=1,b=1,sum=0;
int sign=1;
scanf("%d",&n);
for(int i=0;i<n;i++){
sum+=a/b*sign;
a++;
b+=2;
sign=-sign;
}
printf("%.3lf",sum);
return 0;
}
13、7-33 统计素数并求和
#include <stdio.h>
#include <math.h>
int prime(int p);
int main(){
int M, N;
int count=0, sum=0;
int i;
scanf("%d%d", &M, &N);
for(i=M; i<=N; i++){
if(prime(i)){
count++;
sum += i;
}
}
printf("%d %d\n", count, sum);
return 0;
}
int prime(int p){
int isPrime=1;
int i;
if(p<2){
isPrime = 0;
}
else{
for(i=2; i<=(int)sqrt(p); i++){
/*若p为合数,则必有不大于sqrt(p)的因子*/
if(p%i == 0){
isPrime = 0;
break;
}
}
}
return isPrime;
}
14、7-34 求分数序列前N项和
#include<stdio.h>
int main()
{
int i, n;
double sum = 0.0, numerator = 1.0, denominator = 1.0, item, temp;
scanf("%d", &n);
for (i = 1; i <= n; i++){
temp = numerator;
numerator = numerator + denominator;
denominator = temp;
item = numerator / denominator;
sum += item;
}
printf("%.2f\n", sum);
return 0;
}
15、7-35 猴子吃桃问题
#include <stdio.h>
int main(){
int N;
int count=1;
int i;
scanf("%d", &N);
for(i=N; i>1; i--){
count = (count+1)*2;
}
printf("%d\n", count);
return 0;
}
16、7-36 韩信点兵
#include <stdio.h>
#define N 10000
int main(){
int i=1;
while(i<N){
if(i%5==1 && i%6==5 && i%7==4 && i%11==10){
printf("%d\n", i);
break;
}
i++;
}
return 0;
}
17、7-37 输出整数各位数字
#include <stdio.h>
#include <math.h>
int main(void) //如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
long n;
scanf("%ld",&n);
long temp=n,mask=1;
while(temp/10!=0){ //n有几位?
temp/=10;
mask*=10;
}
// printf("i=%d\n",i);
while(mask!=0){ //从高到低取n各位上的数
printf("%d ",n/mask);
n%=mask;
mask/=10;
// printf("p=%d n=%d\n",p,n);
}
return 0;
}
18、7-38 支票面额
#include <stdio.h>
int main(){
int y, f;
int n;
int find=0;
scanf("%d", &n);
for(y=0; y<100; y++){
for(f=1;f<100;f++){
if(98*f-199*y==n){
printf("%d.%d\n", y, f);
find =1;
break;
}
else if(98*f-199*y>n)
break;
}
if(find)
break;
}
if(y==100){
printf("No Solution\n");
}
return 0;
}
19、7-39 龟兔赛跑
#include <stdio.h>
int main(){
int T, time=0, count=0;
int tripTurtle=0, tripRabbit=0;
int end=0;
scanf("%d", &T);
while(!end){
// 比赛未结束
if(tripRabbit>tripTurtle){
// 兔子进入休息模式
for(count=0; count<30; ){
time++;
count++;
tripTurtle += 3;
if(time == T){ // 时间到,判胜负
if(tripTurtle>tripRabbit){
printf("@_@ %d\n", tripTurtle);
}
else if(tripTurtle<tripRabbit){
printf("^_^ %d\n", tripRabbit);
}
else{
printf("-_-\ %d\n", tripRabbit);
}
end = 1;
break; // 比赛结束
}
}
}
else{
// 兔子进入跑步模式
for(count=0; count<10; ){
time++;
count++;
tripTurtle += 3;
tripRabbit += 9;
if(time == T){ // 时间到,判胜负。此功能可写为函数。
if(tripTurtle>tripRabbit){
printf("@_@ %d\n", tripTurtle);
}
else if(tripTurtle<tripRabbit){
printf("^_^ %d\n", tripRabbit);
}
else{
printf("-_- %d\n", tripRabbit);
}
end = 1;
break; // 比赛结束
}
}
}
}
return 0;
}
20、7-40 到底是不是太胖了
#include <stdio.h>
int main () {
void opinion(int hight,int weight);
int n,height,weight;
scanf("%d",&n);
while(n--){ //读取n行输入
scanf("%d%d",&height,&weight);
opinion(height,weight);
}
return 0;
}
void opinion (int height,int weight){ //判断体重是否标准
double standard = (height -100)*0.9*2;
double err = standard * 0.1;
if (standard+err > weight && standard-err < weight)
printf("You are wan mei!\n");
else if (weight >= standard+err)
printf("You are tai pang le!\n");
else if (weight <= standard-err)
printf("You are tai shou le!\n");
}