黑马程序员技术交流社区
标题:
C语言考试--编程题(优化版)
[打印本页]
作者:
叶子哥
时间:
2016-5-14 23:36
标题:
C语言考试--编程题(优化版)
经过半个月的C语言熏陶,最终迎来了一次考试的检查.考后整理了下编程题,经本人优化后,自认为比较完美了(貌似有点自嗨了O(∩_∩)O~).
如果有更好的优化建议,请尽管讲撒...
//
// main.c
// 第一题
//
// Created by YYSky on 16/5/13.
// Copyright © 2016年 yaomars. All rights reserved.
//
/**
* 1、设计一个函数,统计从键盘输入的50个实数中有多少个正数、多少个负数、多少个零
*
*
*/
#include <stdio.h>
int main(int argc, const char * argv[]) {
//存储正数的个数
int zNum = 0;
//存储负数的个数
int fNum = 0;
//存储零的个数
int zero = 0;
//循环输入50个实数
for (int i = 0; i < 50; i++) {
printf("请输入第%d个实数:",i + 1);
int temp = 0;
rewind(stdin);
scanf("%d",&temp);
if (temp > 0) {
zNum ++;
} else if(temp < 0){
fNum ++;
}else{
zero ++;
}
}
//打印结果
printf("正数个数为:%d, 负数个数为:%d, 零的个数为:%d\n",zNum,fNum,zero);
return 0;
}
复制代码
//
// main.c
// 第二题
//
// Created by YYSky on 16/5/13.
// Copyright © 2016年 yaomars. All rights reserved.
//
/**
* 2,完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。
编程输出1000以内的所有完数
*
*
*/
#include <stdio.h>
int main(int argc, const char * argv[]) {
//循环取数
for (int i = 2; i <= 1000; i++) {
//存储每个数的因子之和
int sum = 0;
//遍历每个数,取出因子之和(循环次数一定要注意优化)
for (int j = 1; j <= (i / 2); j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("完全数:%d\t",i);
}
}
printf("\n");
return 0;
}
复制代码
//
// main.c
// 第三题
//
// Created by YYSky on 16/5/13.
// Copyright © 2016年 yaomars. All rights reserved.
//
/**
* 3、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
*
*
*/
#include <stdio.h>
//函数的声明
int fun(int a,int b,int c);
int main(int argc, const char * argv[]) {
//调用函数
int result = fun(4, 4, 4);
//判断函数返回结果,打印判断结果
switch (result) {
case 0:
printf("此三个数不能构成三角形..\n");
break;
case 1:
printf("此三个数能构成一般三角形..\n");
break;
case 2:
printf("此三个数能构成等腰三角形..\n");
break;
case 3:
printf("此三个数能构成等边三角形..\n");
break;
default:
break;
}
return 0;
}
//实现函数
int fun(int a,int b,int c){
//判断是三角形的条件
if ((a + b) > c && (c + b) > a && (a + c) > b) {
//等边三角形的条件
if ((a == b) && (b == c)) {
return 3;
//等腰三角形的条件
} else if(a == b || a == c || c == b){
return 2;
//一般三角形
}else{
return 1;
}
} else {
return 0;
}
}
复制代码
作者:
lichuanlong
时间:
2016-5-15 00:41
不错
作者:
SuperJJ
时间:
2016-5-15 01:03
学习了!~~!~!~!~!~!~!~!
作者:
2528
时间:
2016-5-15 08:17
rewind(stdin); 这个是什么意思?
作者:
叶子哥
时间:
2016-5-15 16:14
2528 发表于 2016-5-15 08:17
rewind(stdin); 这个是什么意思?
清除标准输入流的缓存区
作者:
wang120411
时间:
2016-5-15 17:50
擦,和我那时候的测试题目一模一样
作者:
2528
时间:
2016-5-16 07:12
yaomars 发表于 2016-5-15 16:14
清除标准输入流的缓存区
嗯,懂了。谢谢啊!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2