花了我将近两个小时的时间。。。。。。。。。
/*
author:zhanglu
date:09/04/26
*/
#include <stdio.h>
/*
判断用户输入的数是否为质数?
*/
bool isPrimeNumber(int number)
{
bool flag = true;
for(int i = 2;i < number;++i)
{
if(number % i == 0)
{
flag = false;
break;
}
}
return flag;
}
void testPrimeNumber()
{
int number,nClear;
printf("请输入一个数字:\n");
scanf("%d", &number);
while(number < 0)
{
printf("请重新输入一个数字:\n");
while((nClear = getchar()) != '\n' && nClear != EOF);
scanf("%d", &number);
}
if(isPrimeNumber(number))
{
printf("%d是质数!\n", number);
}else
{
printf("%d不是质数!\n", number);
}
}
/*
求1000以内的素数之和
*/
void primeSum()
{
int nSumPrime = 0,i = 2;
do
{
if(isPrimeNumber(i))
{
nSumPrime += i;
}
++i;
}while(i <= 1000);
printf("1000以内素数之和为:%d\n", nSumPrime);
}
/*
列出用户输入的某个数的全部因子
*/
void splitNumber()
{
int a,nClear;
printf("请输入一个数字:\n");
scanf("%d", &a);
while(a < 0)
{
printf("请重新输入数字:\n");
while((nClear = getchar()) != '\n' && nClear != EOF);
scanf("%d", &a);
}
int i = 2;
while(a > 1)
{
while(a % i == 0)
{
a /= i;
printf("%d\n", i);
}
++i;
}
}
/*
列出用户输入的某个数的分解和,分解为几个连续数的和
*/
void listSplitNumer()
{
int number,nClear,nSum = 0;
printf("请输入一个数字:\n");
scanf("%d", &number);
while(number < 0)
{
printf("请重新输入一个数字:\n");
while((nClear = getchar()) != '\n' && nClear != EOF);
scanf("%d", &number);
}
if(number % 2 == 0)
{
int halfNumber = number/2;
printf("===================================\n");
for(int i = halfNumber;i > 0;--i)
{
nSum = i;
for(int j = i - 1;j > 0;--j)
{
nSum += j;
if(nSum == number)
{
printf("%d = ", number);
for(int k = j;k <= i;++k)
{
if(k == i)
{
printf("%d\n", k);
}else
{
printf("%d+ ", k);
}
}
nSum = 0;
break;
}else
{
if(nSum > number)
{
nSum = 0;
break;
}else
{
if(j == 1)
{
nSum = 0;
}
}
}
}
}
}else
{
printf("===================================\n");
int halfNumber = number/2;
printf("%d = %d + %d\n", number, halfNumber, halfNumber+1);
for(int i = halfNumber;i > 0;--i)
{
nSum = i;
for(int j = i - 1;j > 0;--j)
{
nSum += j;
if(nSum == number)
{
printf("%d = ", number);
for(int k = j;k <= i;++k)
{
if(k == i)
{
printf("%d\n", k);
}else
{
printf("%d+ ", k);
}
}
nSum = 0;
break;
}else
{
if(nSum > number)
{
nSum = 0;
break;
}else
{
if(j == 1)
{
nSum = 0;
}
}
}
}
}
}
}
/*
列出10000内的完全数
*/
void perfectNumber()
{
int number = 10000;
printf("%d = ", number);
while(number != 1)
{
while(number % 2 == 0)
{
number /=2;
if(number != 1)
{
printf("%d+ ", number);
}else
{
printf("%d\n", number);
}
while(number != 1 && number % 2 != 0)
{
number /=2;
number += 1;
printf("%d+ ", number);
}
}
}
}
/*
列出1000以内素数中的各位数字和为2的素数
*/
void screeningPrime()
{
int primeDigit = 0;
for(int i = 2;i <= 1000;++i)
{
if(isPrimeNumber(i))
{
primeDigit = i;
int baiw = primeDigit / 100;
int shiw = primeDigit / 10;
int gew = primeDigit % 10;
int num;
if(baiw != 0)
{
shiw = (primeDigit % 100)/10;
gew = (primeDigit % 100) % 10;
num = baiw + shiw + gew;
while(num != 2)
{
baiw = num / 100;
shiw = num / 10;
gew = num % 10;
if(baiw != 0)
{
shiw = (primeDigit % 100)/10;
gew = (primeDigit % 100) % 10;
num = baiw + shiw + gew;
if(num == 2)
{
printf("%d\n", primeDigit);
}else
{
if(num / 10 == 0)
{
break;
}
}
}else if(shiw != 0)
{
gew = num % 10;
num = shiw + gew;
if(num == 2)
{
printf("%d\n", primeDigit);
}else
{
if(num / 10 == 0)
{
break;
}
}
}else
{
num = gew;
if(num == 2)
{
printf("%d\n", primeDigit);
}else
{
break;
}
}
}
}else if(shiw != 0)
{
gew = num % 10;
num = shiw + gew;
if(num == 2)
{
printf("%d\n", primeDigit);
}
}else
{
num = gew;
if(num == 2)
{
printf("%d\n", primeDigit);
}
}
}
}
}
/*
7只老鼠围成一个圈,从第一只开始吃,隔一只吃一只,求最后被吃的老鼠是第几只老鼠?
1 2 3 4 5
*/
void eatMice(int nMiceCout)
{
int nMice[100] = {0};
for(int j = 0;j < nMiceCout;j++)
{
nMice[j] = j+1;
}
int flag = 1;
int i = 0, eatCount = 0, nMiceNumber;
while(eatCount != nMiceCout)
{
if(i <= nMiceCout - 1)
{
if(flag == 1)
{
if(nMice[i] != 0)
{
nMice[i] = 0;
++eatCount;
if(eatCount == nMiceCout)
{
nMiceNumber = i+1;
}
++i;
printf("flag = %d i = %d\n", flag, i);
flag = 0;
}else
{
++i;
}
}else
{
if(nMice[i] != 0)
{
++flag;
}
++i;
}
}else
{
i = 0;
}
}
printf("最后被吃的老鼠是第%d只老鼠\n", nMiceNumber);
}
int main(void)
{
//testPrimeNumber();
//primeSum();
//perfectNumber();
//screeningPrime();
eatMice(10);
return 0;
}
分享到:
相关推荐
标题 "C语言100道练习题" 涉及的是C语言的学习和实践,这是一门基础且重要的编程语言,对于计算机科学和技术领域的人来说至关重要。这个资源包含了100个专门为初学者设计的编程练习,目的是帮助他们巩固C语言的基础...
这份"C语言练习题.zip"文件显然包含了一些旨在帮助学习者掌握C语言编程技能的练习题目。下面,我们将深入探讨C语言的一些核心概念和知识点,以及这些练习题可能涉及的领域。 1. **基本数据类型**:C语言有几种基本...
C语言200道练习题及答案,学习C语言的好帮手,希望对您有帮助
本资料包“C语言练习题”旨在帮助学习者深入理解和掌握C语言的基本概念及编程技巧。 C语言的核心知识点包括以下几个方面: 1. **基本语法**:C语言的语句结构、变量声明、数据类型(如整型、浮点型、字符型等)、...
c语言数组,C语言练习题数组C语言练习题数组总共12页C语言练习题数组总共12页C语言练习题数组总共12页
结构体在处理复杂数据时非常有用,比如在本题中,我们需要创建一个表示时间的结构体来存储年、月、日、小时、分钟和秒。 首先,我们定义一个结构体类型,命名为`Time`,如下所示: ```c typedef struct { int ...
C语言练习题19.pdf 本资源是C语言练习题的第19份资源,旨在帮助程序员和开发者提高C语言编程能力。下面是该资源中的一些重要知识点: 1. 变量和数据类型:C语言中有多种数据类型,如整数、浮点数、字符、数组、...
本资料集"**C语言练习题含答案.rar**"针对大一学生设计,旨在帮助初学者深入理解和掌握C语言的核心概念,同时通过丰富的实践题目提升编程技能。资料中涵盖了链表、幻方矩阵、蛇形矩阵以及学生成绩管理系统的实现,还...
本压缩包“C语言练习题C语言练习题”显然包含了若干C语言的学习练习题目,旨在帮助学习者巩固和提升C语言编程技能。 在C语言的学习过程中,练习题是至关重要的部分。通过做题,可以加深对语法的理解,提高逻辑思维...
以下是一些关于C语言练习题和入门的知识点: 1. **基本语法**: C语言的基础包括变量声明、数据类型(如int、char、float等)、运算符(如算术运算符、关系运算符、逻辑运算符等)以及流程控制语句(如if-else、...
C语言练习题答案详解 本资源提供了涵盖各种题型的C语言练习题,包括填空、选择、程序填空、写程序等题型,题目很多,并包含题目和答案,对学习C语言有很大帮助。 C语言基本概念 C语言程序的基本单位是函数(A),...
C语言函数是编程中至关重要的...以上是针对C语言函数选择练习题的详细解析,涵盖了局部变量、全局变量、形参、函数返回类型、数组作为参数以及变量作用域等多个关键知识点。理解这些概念对于编写和调试C程序至关重要。
以下是一些关于C语言基础练习题的知识点: 1. **变量与数据类型**: - C语言中的基本数据类型包括整型(int)、浮点型(float、double)、字符型(char)和布尔型(通过#define或枚举定义)。练习中会涉及到不同...
"C语言练习题(谭浩强第四版)..附有答案.doc" 本文档是一个C语言练习题集,涵盖了C语言的基础知识、数据类型、运算符、控制语句、函数等方面。下面是对标题、描述、标签和部分内容的详细解释: 标题: "C语言练习题...
谭浩强C语言word版和练习题 C语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。...
文档内容涉及了多个实际编程练习,如温度转换、坐标转换、数学运算、字符处理等,这些都是初学者练习编程逻辑和掌握C语言基础的良好素材。 ### 注意事项 - 在实际编程中,需要注意输入数据的格式化,如`%f`用于`...
这份资料包含的两个文档——"C语言练习题册.doc"和"C语言练习题册参考答案.doc",为学习者提供了自我检测和学习反思的宝贵资源。 首先,C语言基础知识点包括变量与数据类型,运算符与表达式,流程控制语句(如if-...
大学C语言章节相习题练习语言章节相习题练习大学C语言章节相习题练习大学C语言章节相习题练习大学C语言章节相习题练习大学C语言章节相习题练习大学C语言章节相习题练习语言章节相习题练习大学C语言章节相习题练习...
"C语言练习题示例(100个)"这个资源为学习者提供了丰富的实践机会,通过解决100个精心设计的C语言练习题,可以深入理解和熟练运用C语言的核心概念和技术。 首先,C语言的基础知识包括变量、数据类型、运算符、流程...
通过"ITAT-c语言练习题"中的习题,学习者可以逐步巩固这些概念,并提高解决实际问题的能力。在解题过程中,应注重理解题目要求,编写清晰、高效且符合规范的代码,同时培养良好的编程习惯。这些练习题将对学习者的...