题目 解决代码及点评 /* 功能: 已知N是正整数, 它可拆写成三个正整数N1.N2和N3之和的形式N=N1+N2+N3. 请编程序打印出满足上式的全部组合,并当N1.N2和N3中至少有两个是素数时打印"YES"否则打印"NO". 如N=5时输出: 5 = 1 + 1 + 3 NO 5 = 1 + 2 + 2 YES 5 = 1 + 3 + 1 NO 5 = 2 + 1 + 2 YES 5 = 2 + 2 + 1 YES 5 = 3 + 1 + 1…
  题目 解决代码及点评 /* 48. 找规律填写N×N方阵.如N=8时, 其方阵为: */ #include <stdio.h> #include <stdlib.h> void main() { const int N=8; int a[N][N]; for (int data=1,i=0,j=0,k=0;k<(N+1)/2;k++,data++) { while (i<N-k) { a[i][j]=data; i=i+1; } i--; j++; wh…
   题目 解决代码及点评 /* 功能:用记录来描述一个学生的成绩情况,内容包括:姓名.学号.数学成绩和PASCAL成绩. 要求对一个小组的10个学生的成绩进行统计处理: 1)计算学生的总平均分,并按平均分高低排出名次,打印出姓名. 2)打印出90分以上和不及格者的名字. 要求用子程序来完成. 时间:19:31 2013/10/24 */ #include<stdio.h> #include<stdlib.h> #include<string.h> stru…
   题目 解决代码及点评 /************************************************************************/ /* 58. 编写程序,按照 1,2, ... , 28的顺序填一个7×7数组的左上角,程序的输出结果为: 1 2 4 7 11 16 22 3 5 8 12 17 23 6 9 13 18 24 10 14 19 25 15 20 26 21 27 28 */ /**********************…
    题目 解决代码及点评 /************************************************************************/ /* 78. 打印年历. 要求:每行打印两个月日历.如下图: 一月 二月 三月 四月 . . . . . . 十一月 十二月 思考: 每行打印三个月日历. */ /**********************************************************************…
    题目 解决代码及点评 /************************************************************************/ /* 建立一个链表,每个结点包括的成员为:职工号.工资.用new函数开辟新结点. 要求链表包括5个结点,从键盘输入结点中的有效数据.然后把这些结点的数据打印出来. 要求用函数creat来建立链表,用list函数来输出数据.这5个职工的职工号是101,103,105,107,109. */ /******…
  题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的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)+…