您的位置:首页 > 房产 > 建筑 > 南京网站建设公司开发_郑州网站建设推广渠道_夫唯seo教程_百度官网

南京网站建设公司开发_郑州网站建设推广渠道_夫唯seo教程_百度官网

2024/12/22 22:50:55 来源:https://blog.csdn.net/weixin_45641816/article/details/142611418  浏览:    关键词:南京网站建设公司开发_郑州网站建设推广渠道_夫唯seo教程_百度官网
南京网站建设公司开发_郑州网站建设推广渠道_夫唯seo教程_百度官网

你该逆袭了

红色标注的是:错误的答案
蓝色标注的是:正确的答案
绿色标注的是:做题时有疑问的地方
橙色标注的是:答案中需要着重注意的地方

练习题

  • 一、复习题
    • 1、
    • 2、
    • 我的答案:第4问 错误
    • 正确答案:第4问的答案
    • 3、
    • 4、
    • 5、
    • 6、
    • 我的答案:错误
    • 正确答案:
    • 7、
    • 我的答案:正确
    • 补充知识点:
    • 8、
      • 我的答案:(有理解不到位的地方,已经在程序中备注)
    • 9、
      • 我的答案:错误
      • 正确答案:
    • 10、程序中有注意点
  • 二、编程练习
    • 1、
      • 我的答案:
        • 1、方法一
        • 2、方法二
    • 2、
    • 3、
      • 我的答案:
      • 标准答案:
      • 知识点
    • 4、不知道该怎么用两个感叹号替换原来的感叹号
      • 我的答案:错误,不会做
      • 正确答案:看完答案,就是自己想得太多
    • 5、同样是第4题的疑问,其实就是自己想多了,很简单
      • 正确答案:
    • 6、
      • 我的答案:
      • 标准答案:利用 判断标记
    • 7、没什么价值
      • 疑问:局部变量,当程序运行结束,空间就释放了,可以这样使用吗?
    • 8、
      • 我的答案:
      • 标准答案:
    • 9、
      • 我的答案:
      • 标准答案:
    • 10、这种简单,就不做了,一样的道理
      • 标准答案:
    • 11、
      • 我的答案:自己在做的时候,注意点已经备注在代码中,当时也纠结了很久,逐行代码监视才找出的问题!!!
      • 标准答案:其风格明显更简洁,规范

一、复习题

1、

在这里插入图片描述
我的答案:
false
true
false

2、

在这里插入图片描述

我的答案:第4问 错误

number >= 90 && number < 100;
ch != 'q' && ch != 'k';
number >= 1 && number <= 9 && number != 5;number < 1 && number>9;  //错误

正确答案:第4问的答案

number < 1 || number>9;

3、

在这里插入图片描述
我的答案:

#include <stdio.h>int main()
{int weight = 0;int height = 0;scanf("%d %d", &weight, &height);if (weight < 100 && height>64){if (height >= 72){printf("you are very tall for your weight.\n");}else if (height < 72 && height>64){printf("you are tall for your weight.\n");}else if (weight > 300 && height < 48){printf("you are quite short for your weight.\n");}}else{printf("your weight is ideal.\n");}return 0;
}

4、

在这里插入图片描述
在这里插入图片描述
我的答案:
a.1
b.0
c.1
d.6
e.10
f.0

5、

在这里插入图片描述
我的答案:

1 *#% 2 *#% 3 $#% 4 *#% 5 *#% 6 $#% 7 *#% 8 *#% 9 $#% 10 *#% 11 *#% 所以结果是:*#%*#%$#%*#%*#%$#%*#%*#%$#%*#%*#%

6、

在这里插入图片描述

我的答案:错误

fat hat cat Oh no!
fat hat cat Oh no!
fat hat cat Oh no!

正确答案:

fat hat cat Oh no!
hat cat Oh no!
cat Oh no!

7、

在这里插入图片描述

我的答案:正确

#include <stdio.h>int main()
{char ch = 0;int lc = 0;int uc = 0;int oc = 0;while ((ch = getchar()) != '#'){if ('a' <= ch && ch <= 'z'){lc++;}else if (ch >= 'A' && ch <= 'Z'){uc++;}else{oc++;}}printf("%d lowercase, %d uppercase, %d other", lc, uc, oc);return 0;
}

补充知识点:

添加头文件 #include <ctype.h>
if(islower(ch))
if(isupper(ch))

8、

在这里插入图片描述

我的答案:(有理解不到位的地方,已经在程序中备注)

#include <stdio.h>int main()
{int age = 20;while (age++ <= 65){                         //我自己理解不到位的地方if ((age % 20) == 0)  //注意:此时 age 已经变成了 21 ,所以 if 语句不会执行  // 我还以为age 还是 20 呢,这是我理解不到位的地方{printf("you are %d.here is a raise.\n", age);}if (age = 65)  //常量赋值{printf("you are %d.here is your gold watch.\n", age);}}return 0;
}//所以结果会一直死循环下去

在这里插入图片描述

9、

在这里插入图片描述

我的答案:错误

step1
step2
step1
step1
step3
step1
done

正确答案:

这是我理解不到位的地方:以为执行完printf(“step2\n”);之后,laststep:(“step3\n”);是不执行的。其实是我错了,这个laststep 还是要执行的!
在这里插入图片描述
在这里插入图片描述

10、程序中有注意点

在这里插入图片描述
我的答案:

#include <stdio.h>int main()
{char ch = 0;while ((ch = getchar()) != '#'){switch (ch){case '\n': {break;}case 'c':{printf("step 1\n");break;}case 'b':{printf("step 1\n");break;}case 'h':{printf("step 1\n");printf("step 3\n");break;    //注意:必须添加 break,否则,default语句 也要再运行一遍!}default:{printf("step 1\n");printf("step 2\n");printf("step 3\n");}}if (ch == 'b'){break;}}printf("done\n");return 0;
}

二、编程练习

1、

在这里插入图片描述

我的答案:

1、方法一
while ((scanf("%c", &ch) == 1) && ch != '#')
#include <stdio.h>int main()
{int space = 0;int newline = 0;int other = 0;char ch = 0;while ((scanf("%c", &ch) == 1) && ch != '#'){switch (ch){case ' ':{space++;break;}case '\n':{newline++;break;}default:{other++;break;}}}printf("%d 个空格,%d 个回车键,%d 个其他字符\n", space, newline, other);return 0;
}

在这里插入图片描述

2、方法二
while ((ch = getchar()) != '#')
#include <stdio.h>int main()
{int space = 0;int newline = 0;int other = 0;char ch = 0;while ((ch = getchar()) != '#'){switch (ch){case ' ':{space++;break;}case '\n':{newline++;break;}default:{other++;break;}}}printf("%d 个空格,%d 个回车键,%d 个其他字符\n", space, newline, other);return 0;
}

在这里插入图片描述

2、

在这里插入图片描述
我的答案:

#include <stdio.h>int main()
{char ch = 0;int count = 0;while ((ch = getchar()) != '#'){count++;printf("%c 对应的ascii值是 %d  ", ch, (int)ch);if ((count % 8) == 0){putchar('\n');}}return 0;
}

3、

在这里插入图片描述

我的答案:

#include <stdio.h>int main()
{int oucount = 0;int jicount = 0;double ousum = 0;double jisum = 0;int input = 0;while ((scanf("%d", &input) == 1) && input != 0){if (input % 2 == 0){oucount++;ousum += input;}else{jicount++;jisum += input;}}printf("一共有 %d 个偶数,平均值是:%lf\n", oucount, ousum / oucount);printf("一共有 %d 个奇数,平均值是:%lf\n", jicount, jisum / jicount);return 0;
}

在这里插入图片描述

标准答案:

#include <stdio.h>int main()
{int odd_sum = 0;int even_sum = 0;int odd_count = 0;int even_count = 0;int input = 0;while (scanf("%d", &input))  //这个地方跟我的答案不一样{if (input == 0){break;}if (input % 2 == 0){even_sum += input;even_count++;}else{odd_sum += input;odd_count++;}}printf("%d 个偶数,他们的平均值就是:%lf\n", even_count, (double)even_sum / (double)even_count);printf("%d 个奇数,他们的平均值就是:%lf\n", odd_count, (double)odd_sum / (double)odd_count);return 0;
}

在这里插入图片描述

知识点

1.0 * even_sum 将结果隐式转换为浮点型数据

printf("%d 个偶数,他们的平均值就是:%lf\n",even_count, 1.0 * even_sum / even_count);printf("%d 个奇数,他们的平均值就是:%lf\n",odd_count, 1.0 * odd_sum / odd_count);

4、不知道该怎么用两个感叹号替换原来的感叹号

在这里插入图片描述

我的答案:错误,不会做

#include <stdio.h>int main()
{int ch = 0;int count = 0;while ((ch = getchar()) != '#'){if (ch == '.'){ch = '!';count++;continue;}if (ch == '!'){printf("%s", "!!");  //该怎么用 两个感叹号 替代 原来的感叹号 ??count++;}}return 0;
}

正确答案:看完答案,就是自己想得太多

#include <stdio.h>int main()
{char ch = 0;int count = 0;while ((ch = getchar()) != '#'){if (ch == '.'){printf("!");count++;}else if (ch == '!'){printf("!!");count++;}else{putchar(ch);}}printf("\n一共进行 %d 次调换\n", count);return 0;
}

5、同样是第4题的疑问,其实就是自己想多了,很简单

在这里插入图片描述

正确答案:

#include <stdio.h>int main()
{char ch = 0;int count = 0;while ((ch = getchar()) != '#'){switch (ch){case '.':printf("!");count++;break;case '!':printf("!!");count++;break;default:putchar(ch);break;}}printf("\n一共进行 %d 次调换\n", count);return 0;
}

6、

在这里插入图片描述

我的答案:

#include <stdio.h>int main()
{char ch = 0;char now = 0;char pre = 0;int count = 0;while ((ch = getchar()) != '#'){now = ch;if (now == 'i' && pre == 'e'){count++;}pre = ch;}printf("%d 个 ei\n", count);return 0;
}

在这里插入图片描述

标准答案:利用 判断标记

#include <stdio.h>int main()
{char ch = 0;int flag = 0;int count = 0;while ((ch = getchar()) != '#'){switch (ch){case 'e':flag = 1;  //标记break;case 'i':if (flag == 1)  //标记{count++;flag = 0;  //标记}break;default:flag = 0;  //标记break;}}printf("一共出现了 %d 次\n", count);return 0;
}

7、没什么价值

在这里插入图片描述

我的答案:标准答案比较简单,就是数学式子罗列而已

#include <stdio.h>
#define JI 1000double salary(int x)
{double sum = 0;if (x >= 0 && x <= 40){sum = x * JI;}else{sum = 40 * JI + (x - 40) * 1.5 * JI;}return sum;
}double shui(double x)
{double shuijin = 0;if (x <= 300){shuijin = x * 0.15;}else if(x > 300 && x <= 450){shuijin = 45 + (x - 300) * 0.2;}else{shuijin = 45 + 30 + (x - 450) * 0.25;}return shuijin;   //这样做可以吗? shuijin是在这个函数里面创建的
}                     //函数运行结束,这个函数的空间也就释放了,shuijin 也就没有,//那还能 return 回主函数吗?
double lirun(double x, double y)
{int z = 0;z = x - y;return z;
}int main()
{int shijian = 0;double sala = 0;double shu = 0;double li = 0;scanf("%d", &shijian);sala = salary(shijian);shu = shui(sala);li = lirun(sala, shu);printf("%lf 是基本工资,%lf 是税金,%lf 是利润\n", sala, shu, li);return 0;
}

在这里插入图片描述

疑问:局部变量,当程序运行结束,空间就释放了,可以这样使用吗?

答:可以,C Primer Plus 书中很多代码,都是这么使用的。

double shui(double x)
{double shuijin = 0;if (x <= 300){shuijin = x * 0.15;}else if(x > 300 && x <= 450){shuijin = 45 + (x - 300) * 0.2;}else{shuijin = 45 + 30 + (x - 450) * 0.25;}return shuijin;   //这样做可以吗? shuijin是在这个函数里面创建的
}                     //函数运行结束,这个函数的空间也就释放了,shuijin 也就没有,//那还能 return 回主函数吗?

8、

在这里插入图片描述

我的答案:

#include <stdio.h>void menu()
{printf("*****************************************************************\n");printf("enter the number corresponding to the desired pay rate or action:\n");printf("1) $ 8.75/hr          2) $9.33/hr\n");printf("3) $ 10.00/hr         4) $11.20/hr\n");printf("5) quit\n");printf("*****************************************************************\n");
}double salary(int x,double y)
{double sum = 0;if (x >= 0 && x <= 40){sum = x * y;}else{sum = 40.0 * y + (x - 40.0) * 1.5 * y;}return sum;
}double shui(double x)
{double shuijin = 0;if (x <= 300){shuijin = x * 0.15;}else if(x > 300 && x <= 450){shuijin = 45 + (x - 300) * 0.2;}else{shuijin = 45.0 + 30.0 + (x - 450) * 0.25;}return shuijin;   //这样做可以吗? shuijin是在这个函数里面创建的
}                     //函数运行结束,这个函数的空间也就释放了,shuijin 也就没有,//那还能 return 回主函数吗?
double lirun(double x, double y)
{double z = 0;z = x - y;return z;
}int main()
{int shijian = 0;double sala = 0;double shu = 0;double li = 0;int xuanxiang = 0;do {menu();printf("请输入你的选项:");scanf("%d", &xuanxiang);if (xuanxiang == 5){printf("程序结束!\n");break;}printf("请输入工作的时间:");scanf("%d", &shijian);switch (xuanxiang){case 1:{sala = salary(shijian, 8.75);break; }case 2:{sala = salary(shijian, 9.33);break;}case 3:{sala = salary(shijian, 10.00);break;}case 4:{sala = salary(shijian, 11.20);break;}default:{printf("请输入1~5的数值。\n");break;}}shu = shui(sala);li = lirun(sala, shu);printf("%lf 是基本工资,%lf 是税金,%lf 是利润\n", sala, shu, li);}while(1);return 0;
}

在这里插入图片描述

标准答案:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、

在这里插入图片描述

我的答案:

#include <stdio.h>
#include <math.h>int panduan(int x)
{for (int n = 2; n <= sqrt(x); n++){if ((x % n) == 0){return 0;}}return 1;   //注意:应该放在这个地方,我也想了一会儿呢
}int main()
{int input = 0;int flag = 0;printf("请输入数据:");while (scanf("%d", &input) == 1){flag = panduan(input);if (flag == 1){printf("%d 是素数\n", input);}else{printf("不是素数\n");}printf("请输入下一个数据:");}return 0;
}

标准答案:

#include <stdio.h>
#include <math.h>int main()
{int input = 0;int flag = 1;do{printf("请输入数据:");scanf("%d", &input);if (input < 2){if (input == 0){break;  //直接跳出 do while 循环,程序终止}else{printf("你所输入的数据不在范围内,请重新输入。\n");continue;  //注意点:注意这了从程序的哪里开始!!!} }for (int i = input; i > 1; i--){int j = 1;for (j = 2; j < sqrt(i); j++){if ((i % j) == 0){flag = 0;break;}}}if (flag == 1){printf("%d 是素数\n", input);}} while (input != 0);return 0;
}

10、这种简单,就不做了,一样的道理

在这里插入图片描述
在这里插入图片描述

标准答案:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

11、

在这里插入图片描述

我的答案:自己在做的时候,注意点已经备注在代码中,当时也纠结了很久,逐行代码监视才找出的问题!!!

#include <stdio.h>
#define YANGYU 2.05
#define TIANCAI 1.15
#define HULUOBO 1.09void menu()
{printf("**************************\n");printf("1)洋芋\n");printf("2)请甜菜\n");printf("3)胡萝卜\n");printf("4)退出订购\n");printf("**************************\n");
}double SUM(double x,double y,double z)
{double zongshoujia = 0;zongshoujia = YANGYU * x + TIANCAI * y + HULUOBO * z;if (zongshoujia >= 100){zongshoujia = zongshoujia - 5;return zongshoujia;}return zongshoujia;
}double YUNFEI(double x)
{double yunfei = 0;if (x <= 5){yunfei = 6.5;return yunfei;}else if (x >= 5 && x <= 20){yunfei = 14.0;return yunfei;}else{yunfei = 14 + (x - 20.0) * 0.5;return yunfei;}
}int main()
{int xuanxiang = 0;//重量double yangyuzhongliang = 0;double tiancaizhongliang = 0;double huluobozhongliang = 0;double yy = 0;double tc = 0;double hlb = 0;double zongzhongliang = 0;//总运费double zongyunfei = 0;//总售价double sum = 0;//总额double zonge = 0;do{menu();scanf("%d", &xuanxiang);if (4 == xuanxiang){break;}switch (xuanxiang){case 1:{printf("请输入洋芋的重量:");scanf("%lf", &yangyuzhongliang);yy += yangyuzhongliang;break;}case 2:{printf("请输入甜菜的重量:");scanf("%lf", &tiancaizhongliang); tc += tiancaizhongliang;break;}case 3:{printf("请输入胡萝卜的重量:");scanf("%lf", &huluobozhongliang);hlb += huluobozhongliang;break;}default:{printf("你输入的选项不存在,请重新选择:");break;}}//不应给把这段话放在这儿,不然每次都要运行一遍,将上一次循环的值再加一遍// //yy += yangyuzhongliang;  //tc += tiancaizhongliang;//hlb += huluobozhongliang;} while (1);sum = SUM(yy, tc, hlb);zongzhongliang = yy + tc + hlb;zongyunfei = YUNFEI(zongzhongliang);zonge = sum + zongyunfei;printf("%lf 磅的洋芋,%lf 磅的甜菜,%lf 磅的胡萝卜\n", yy, tc, hlb);printf("这么多蔬菜的售价:%lf\n", sum);printf("这么多蔬菜的总重量:%lf\n", zongzhongliang);printf("这么多蔬菜的总运费:%lf\n", zongyunfei);printf("这么多蔬菜最后加上优惠和运费,总的价格是:%lf\n", zonge);return 0;
}

在这里插入图片描述

标准答案:其风格明显更简洁,规范

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com