6-1 使用函数输出一个整数的逆序数(20 分)
int reverse( int number ){
int num=0;
while(number!=0){
num=num*10+number%10;
number/=10;
}
return num;
}
6-2 使用函数验证哥德巴赫猜想(20 分)
int prime( int p ){
if(p==1){
return 0;
}
for(int i=2;i<p;i++){
if(p%i==0){
return 0;
}
}
return 1;
}
void Goldbach( int n ){
for(int i=2;i<=n/2;i++){
if(prime(i)&&prime(n-i)){
printf("%d=%d+%d",n,i,n-i);
break;
}
}
}
6-3 使用函数输出指定范围内的完数(20 分)
//求因数和
int factorsum( int number ) {
int sum=0;
for(int i=1; i<=number/2+1; i++) {
if(number%i==0) {
sum+=i;
}
}
return sum;
}
void PrintPN( int m, int n ) {
int flag=0;//如果没有找到完数,flag=0
for(int i=m; i<=n; i++) {
if(i==factorsum(i))//如果因数和等于自身,则为完数
{
flag=1; //找到完数,flag=1
printf("%d = ",i);
for(int j=1; j<=i/2+1; j++) {
if(i%j==0) {
//找到因子输出
if(j==1){
printf("%d",j);
} else{
printf(" + %d",j);
}
}
}
//每输出好一个算式,换行
printf("\n");
}
}
//如果flag=0,表示没有找到,输出no......
if(!flag){
printf("No perfect number");
}
}
6-4 使用函数输出指定范围内的Fibonacci数(20 分)
int fib(int n) {
if (n == 1 || n == 2) {
return 1;
}
if (n > 2) {
return fib(n - 1) + fib(n - 2);
}
//斐波那契数列的递归方法,更好记,但是运行速度更慢
}
void PrintFN(int m, int n) {
int i = 1, count = 0;
while(fib(i)<=n){
if (fib(i) >= m && fib(i) <= n) {
count++;
if(count==1){
printf("%d", fib(i));
}else{
printf(" %d", fib(i));
}
}
i++;
}
if (count == 0) {
printf("No Fibonacci number");
}
}
7-1 近似求PI(15 分)
#include <stdio.h>
#include <math.h>
double fun1(int num){
double sum=1;
for(int i=1;i<=num;i++){
sum*=i;
}
return sum;
//计算分子
}
double fun2(int num){
double sum=1;
for(int i=1;i<=num;i++){
sum*=2*i+1;
}
return sum;
//计算分母
}
int main()
{ double eps;
scanf("%le", &eps);
double PI=1,item=1,i=1;
while(fabs(item)>eps){
item=fun1(i)/fun2(i);
PI+=item;
i++;
}
printf("PI = %.5f",2*(PI));
return 0;
}
7-2 统计一行文本的单词个数(15 分)
#include <stdio.h>
int main()
{ char ch,oldch=' ';
int count=0;
while((ch=getchar())!='\n'){
if(ch!=' '&&oldch==' '){
count++;
}
oldch=ch;
}
printf("%d",count);
return 0;
}
/*
============================================================================
Name : 简单计算器.c
Author : lzh
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a, b, sum;
char opt;
scanf("%d", &a);
sum = a;
scanf("%c", &opt);
int iErr = 1;
while (opt != '=') {
scanf("%d", &b);
if (opt == '+')
sum += b;
else if (opt == '-')
sum -= b;
else if (opt == '*')
sum *= b;
else if (opt == '/') {
if (b == 0) {
iErr = 0;
break;
} else {
sum /= b;
}
} else {
iErr = 0;
break;
}
scanf("%c", &opt);
}
if (!iErr)
printf("ERROR\n");
else
printf("%d\n", sum);
return EXIT_SUCCESS;
}