第1关:求同时被7或11整除的整数
任务:从键盘输入M,求[1,M]范围内能被7或11整除,但不能同时被7和11整除的整数。按每行8个数,每个数占5个字符且以左对齐的格式进行输出。
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int M;
int i;
int count=0;
scanf("%d",&M);
for(i=1;i<=M;i++)
{
if((i%7==0 || i%11==0) && i%77!=0)
{
printf("%-5d",i);
count++;
if(count==8)
{
printf("\n");
count=0;
}
}
}
/*********End**********/
return 0;
}
第2关:求各位数字之积
任务:从键盘任意输入一个正整数,计算其各位数字之积,注意正整数的位数不定。
例如:
输入:2583 经过—-(2583) 输出:240
输入:102 经过—-(102) 输出:0
输入:136 经过—-(13*6) 输出:18
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n;
int product=1;
scanf("%d",&n);
while(n)
{
product=product*(n%10);
n=n/10;
}
printf("%d",product);
/*********End**********/
return 0;
}
第3关:公式计算
任务:输入一个整数n,根据以下公式计算并输出s。公式为:
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int i,j;
double s=0.0;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int sum=0;
for(j=1;j<=i;j++)
{
sum=sum+j;
}
s=s+1.0/sum;
}
printf("s=%lf",s);
/*********End**********/
return 0;
}
第4关:求出满足条件的所有组合
任务:已知abc+cba=1333,其中a、b、c均为一位数,编程求出满足条件的a、b、c的所有组合。
#include <stdio.h>
int main(void)
{
/*********Begin*********/
int a, b, c;
for (a = 1; a <= 9; a++)
{
for (b = 1; b <= 9; b++)
{
for (c = 1; c <= 9; c++)
{
if (((a * 100 + b * 10 + c) + (c * 100 + b * 10 + a)) == 1333)
printf("a=%d,b=%d,c=%d\n", a, b, c);
}
}
}
/*********End**********/
return 0;
}
第5关:求素数之和
任务:从键盘输入m和n,计算m~n之间所有的素数之和。
#include <stdio.h>
int main(void)
{
/*********Begin*********/
int m, n;
int i, j, sum = 0;
int isprime;
scanf("%d %d", &m, &n);
for (i = m; i <= n; i++)
{
isprime = 1; // 假设是素数
if (i <= 1)
{
isprime = 0; // 不是素数
}
for (j = 2; j < i; j++)
{
if (i % j == 0) // 如果i能被j整除,表明不是素数
{
isprime = 0;
break;
}
}
if (isprime)
{
sum = sum + i;
}
}
printf("%d", sum);
/*********End**********/
return 0;
}
第6关:寻找完数
任务:输入一个正整数n,找出1-n之间的所有完数。一个正整数如果恰好等于它的所有因子之和,则这个数被称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此,6是“完数”。
#include <stdio.h>
int main(void)
{
/*********Begin*********/
int n, i, j;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
int sum = 0;
for (j = 1; j < i; j++)
{
if (i % j == 0)
{
sum += j;
}
}
if (sum == i)
{
printf("%d\n", i); // 每个完数输出后换行
}
}
/*********End**********/
return 0;
}
第7关:求被整除的整数个数
任务:从键盘输入N,统计[1,N]范围内各位数字之和能被15整除的整数个数。 例如:78的各位数字之和是:7+8=15,则78是一个各位数字之和能被15整除的整数。
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int N,count=0;
scanf("%d",&N);
for(int i=1;i<=N;i++)
{
int sum=0,num=i;
while(num>0)
{
sum=sum+num%10;
num=num/10;
}
if(sum==15)
count++;
}
printf("%d\n",count);
/*********End**********/
return 0;
}
第8关:有多少种不同的解
任务:学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元。输入学生总人数,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int x,y,z;
int count;
int sum=0;
scanf("%d",&count);
for(x=1;x<count;x++)
{
for(y=1;y<count;y++)
{
z=count-x-y;
if((z>=1) && 3*x+2*y+z==50)
{
printf("大学生是%d,中学生是%d,小学生是%d\n",x,y,z);
sum=sum+1;
}
}
}
printf("%d",sum);
/*********End**********/
return 0;
}