题目 解决代码及点评 /************************************************************************/ /* 54. 有N张牌,计算机和你轮流取牌,每次只能取 1─2张,谁最后取完谁胜利.编写完成此功能的程序. 要求: 1) 让计算机先取. 2) 你取的张数由键盘输入. 3) 计算机第一次取牌时由键盘输入来确定是取1还是取2,以后它再取牌时由程序判断来决定取几张牌. */ /******************…
   题目 解决代码及点评 /* 功能:插入排序.许多玩牌的人是以这样的方式来对他们手中的牌进行排序的: 设手中原有3张牌已排好序,抓1张新牌,若这张新牌的次序在原来的第2张牌之后,第 3张牌之前,那么就把这张新牌放在第3张牌的位置上,原来的第3张改为第4张, 然后再抓新牌.按着这个算法,编写一个排序程序. 注:开始一张牌也没有,从第一张牌开始抓起. 时间:23:34 2013/10/24 */ #include<stdio.h> #include<stdlib.h>…
   题目 解决代码及点评 /* 功能:洗扑克牌.将54张牌分别编号为1,2,-,54号,并放在数组M中. 洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换: 然后产生[2,54]之间的随机整数K,让M[2]与M[K]交换:-, 直到剩下最后一张牌为止.请编写实现上述洗牌的程序. 时间:1:24 2013/10/25 */ #include<stdio.h> #include<stdlib.h> void main() { int a[54]…
  题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include <stdlib.h> #include <math.h> void main() { int x; int num=1; printf("please input x\n"); scanf_s("%d",&x); for (int i=1…
题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { float f; float c; float k; printf("please input the f\n"); scanf_s("%f", &f); // 注意不能写成5/9*(f-32),5/9两个整数相除结果是0 c = (f - 32) * 5 / 9; k = 273.16 + c; print…
   题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /************************************************************************/ /* 9. 打印1-100之间所有素数 */ /************************************************************************/ #include <stdio.h> #…
  题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么说明它是素数 /************************************************************************/ /* 8.判断一个数是否是素数 */ /************************************************…
  题目 解决代码及点评 这道题考察循环和比较 /************************************************************************/ /* 7. 任意十个数,打印出它们中的最大数.最小数. 测试数据:① 1,-12,20,30,-5,-23,33,125,200,-100 ② 0,10,3,1,5,6,-10,90,9,-4 ③ 12,13,14,15,10,-10,-11,-12,-9,9 */ /************…
  题目 解决代码及点评 这个题目,还是考察for循环的使用 以及数列规律,该数列的特点是第n个分子 = 第n-1个分子 + 第n-2个分子,分母也是此规律 而另外一个规律是第n个分子和第n-1个分母值相同 所以这里使用了一个辅助数组来做计算 /************************************************************************/ /* 6. 有一分数序列 ,求出这个数列的前20项之和. */ /****************…
  题目 解决代码及点评 这道题和上一道题类似,第n个累加项 = n-1累加项的n倍 由于有这个规律,我们可以用一个for循环实现 但是例子代码并没有这么做,大家可以回去修改下代码,使得代码更加有效率 这个代码把n的阶乘写成了一个函数 /************************************************************************/ /* 5. 用循环语句编写求 1到20的阶乘的程序. */ /**********************…
  题目 解决代码及点评 这道题考验for循环和一个简单的算法 因为每次累加的值有规律,后面一次累加是前面一次累加的两倍 所以可以用简单的循环,计算累加项和累加结果 /************************************************************************/ /* 4. 用循环语句编写求 2的0次方+到2的63次方的程序. */ /***************************************************…
  题目 解决代码及点评 这道题的目标是锻炼while循环,while循环的语法是 while(循环条件) { 循环体; } 每次进入循环体之前,先判断循环条件是否满足,如果不满足,执行序列就跳过 循环体 //3. 输入一行字符,统计其中的英文字母.数字.空格和其他字符个数. #include <stdio.h> #include <stdlib.h> void main() { char x; int numchar=0; int numnum=0; int numspa…
  题目 解决代码及点评 这道题考察我们对循环和判断的综合应用 #include <stdio.h> #include <stdlib.h> #include <math.h> void main() { int sumj=0; int sumo=0; for (int i=1;i<=100;i++) // for循环,对100以内的每一个整数 { if (i%2)// 如果是奇数 { sumj+=i; // 奇数累加 } else // 否则是偶数,则偶…
  题目 解决代码及点评 这又是个条件函数,但是这个函数无法用switch来解决,因为switch只能用于和某条件相等情况下,而这个函数的范围是无穷的 遇到这种问题,我们还是需要用复合的if语句来解决 #include <stdio.h> #include <stdlib.h> void main() { float x; float y; printf("please input x\n"); scanf_s("%f",&x…
  题目 解决代码及点评 根据题目要去,我们可以通过if实现该功能,伪代码如下: if(a > 90) print 'A' else if(a>80) print 'b' else if(a>70) print 'c' else if(a>60) print 'd' else print 'e' 但是这道题我们希望考察switch,所以在解决代码中,我们使用了switch语句 #include <stdio.h> #include <stdlib.h>…
 题目 解决代码及点评 这道题锻炼我们switch分支语句,对于条件太多时,用if符合条件分支是比较复杂的 可以使用switch代替 //5. 读入1到7之间的某个数,输出表示一星期中相应的 //某一天的单词:Monday. Tuesday等等,用switch语句做. #include <stdio.h> #include <stdlib.h> void main() { int a; printf("please input a\n"); scanf_s(…
  题目 解决代码及点评 按照题目要求,判断数值对3和5取模的结果,是否为0 #include <stdio.h> #include <stdlib.h> void main() { int a; printf("please input a\n"); scanf_s("%d",&a); if (a%3==0||a%5==0) // 如果对3取模为0或者对5取模为0,在c++中%是取模,||是条件或 { printf(&quo…
 题目 解决代码及点评 这道题考察对条件分支和赋值的灵活应用 正常思维 如果 a>b and a>c 那么a最大 如果b>c and b>a 那么b最大 如果c>a and c>b 那么c最大 但是以上写法判断多,代码复杂 简单的做法是: 如果 a < b 那么 a = b 如果 a < c 那么 a = c 最后a是最大值 #include <stdio.h> #include <stdlib.h> void main() {…
 题目 解决代码及点评 根据题目要求,只要根据用户输入的字母,判断字母之后,给出相应的输出即可 在以下代码中,f32函数实现了该功能,通过if条件判断语句 #include <stdio.h> #include <stdlib.h> void f32(char c) { if (c>='A'&&c<='Z') // 如果参数是'A'~'Z' { printf("%c",c+('a'-'A')); // 转化成小写字母,转化方法c-…
 题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <math.h> void main() { double x,y; printf("please input x"); // 提示用户输入x scanf_s("%lf",&x); /// 通过scanf_s让用户输入x的值 if (x>=0) // 如果x>=0 { y=(sin(x)+…
 题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { // print是输出函数,参数%s表示输出字符串,而%-10s表示输出的字符串占10个位置,不足则补空格 printf("%-10s %-10s %-10s %-10s %-10s\n","name","number", "math" , "english&q…
前言:关于VS2013 刚装完VS2013,新的IDE给人全新的编程体验,界面比以前更急简洁漂亮,不多说了,先上图吧 第一次启动VS2013…
   题目 解决代码及点评 /************************************************************************/ /* 19. 在一个程序中计算出给定误差小于0.1,0.01,0.001,0.0001,0.00001 时,下式的值: */ /************************************************************************/ #include <stdio.h…
  题目 解决代码及点评 /************************************************************************/ /* 18. 给出一个不多于4位的正整数,要求:① 求出它是几位数 ② 分别打印出每一位数字 ③ 按逆序打印出各位数字. */ /************************************************************************/ #include <stdio.h>…
   题目 解决代码及点评 这道题目还是考察循环,通过循环遍历1234~9876,然后将每个数都用算法判断其是否符合条件#include <stdio.h> #include <stdlib.h> int f4171(int num) { int count=0; while(num) { count++; num/=10; } return count; } // 这个函数返回位数的转换 int f4172(int num) { int sum=0;//要返回的数字…
   题目 解决代码及点评 完数的解决方案依旧是遍历,然后写出判断完数的函数进行处理 /************************************************************************/ /* 16. 一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如,6 的因子为1.2.3,而6=1+2+3,因此6 是"完数".编程序找出1000之内的所有完数, 并按下面格式输出其因子: 6 its facto…