1.求符合给定条件的整数集
给定不超过6的正整数A,考虑从A开始的连续4个整数,请输出所有由它们组成的无重复数字的三位数。
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
int i,j,k;
int cnt =0;
i=a;
while (i<=a+3) {
j=a;
while(j<=a+3) {
k=a;
while(k<=a+3) {
if (i!=j && i!=k && j!=k) {
cnt++;
printf("%d%d%d",i,j,k);
if (cnt ==6) {
printf("\n");
cnt=0;
}else {
printf(" ");
}
}
k++;
}
j++;
}
i++;
}
return 0;
}
2.水仙花数
水仙花数是指一个N位正整数(N>=3),它的每个位数上的数字的N次幂之和等于它本身,例如:153=1x1x1+5x5x5+3x3x3,本题要求编写程序,计算所有N位水仙花数。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
n=3;
int first =1;
int i =1;
while ( i<n ) {
first *= 10;
i ++;
}
//printf("first=%d\n",first);
//遍历100-999
i=first;
while ( i<first*10 ) {
int t = i;
int sum = 0;
do{
int d = t%10;
t/=10;
int p = d;
int j = 1;
while ( j<n ) {
p *= d;
j++;
}
sum += p;
}while (t>0);
if ( sum == i) {
printf("%d\n", i);
}
i++;
}
return 0;
}
3.九九乘法表
本题要求对任意的给定的1位正整数N,输出从1x1到NxN的部分口诀表
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
n=9;
int i,j;
i=1;
while ( i<=n ) {
j=1;
while ( j<=i ) {
printf("%d*%d=%d",j,i,i*j);
if ( i*j <10 ) {
printf(" ");
}else {
printf(" ");
}
j++;
}
printf("\n");
i++;
}
return 0;
}
4.统计素数求和
本题要求统计给定整数M和N区间内素数的个数并对它们求和
#include <stdio.h>
int main()
{
int m,n;
int i;
int cnt = 0;
int sum = 0;
scanf("%d %d, &m,&n);
if (m==1)
m=2;
for ( i=m; i<=n; i++ ) {
int isPrime = 1;
int k;
for ( k=2;k<i-1;k++ ) {
if ( i%k == 0 ) {
isPrime = 0;
break;
}
}
//判断i是否素数
if ( isPrime ) {
cnt++;
sum+=i;
}
}
printf("%d %d\n", cnt,sum);
return 0;
}
5.猜数游戏
猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了还是小了,相等表示猜到了,则结束程序,如果输入超过规定的次数,则提示“Game over”,并结束程序。
#include <stdio.h>
int main()
{
int number,n;
int inp;
int finished = 0;
int cnt = 0;
scanf("%d %d", &number,&n);
do{
scanf("%d", &inp);
cnt++;
if ( inp<0 ) {
printf("Game Over\n");
finished = 1;
}else if ( inp>number ) {
printf("Too big\n");
}else if (inp<number ) {
printf("Too small\n");
}else {
if ( cnt ==1 ) {
printf("Bingo!\n");
}else if ( cnt <=3 ) {
printf("Lucky You!\n");
}else {
printf("Good Guess!\n");
}
finished =1;
}
if ( cnt==n ) {
if ( !finished ) {
printf("Game Over\n");
finished =1;
}
}
}while ( !finished );
return 0;
}
6.求序列前N项求和
本题要求编写程序,计算序列2/1+3/2+5/3+8/5+…的前N项和,注意该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
#include <stdio.h>
int main()
{
int n;
double dividend,divisor;
double sum = 0.0;
int i;
double t;
scanf("%d", &n);
n = 2000;
dividend = 2;
divisor = 1;
for ( i=1;i<=n;i++ ){
sum += dividend/divisor;
t = dividend;
dividend = dividend + divisor;
divisor = t;
}
printf("%f %f\n",dividend,divisor);
printf("%.2f\n",sum);
return 0;
}