输入两个20以内的正整数,输出其最大公约数和最小公倍数。测试用例如下:
输入:
12
15
输出:
最大公约数为3
最小公倍数为60
输入
2
6
输出
最大公约数为2
最小公倍数为6
(中间无空行,数字和字符之间无空格)
#include<stdio.h>
int main()
{
int n1 , n2;
scanf("%d",&n1);
scanf("%d",&n2);
/*
先求最大公约数,比较两个数,选择较小的一个开始,进行减一操作,
每减一一次,判断这个数是不是同时是这两个数的公约数,找到第一个即可
*/
int biggest;
int temp = n1 > n2 ? n2 : n1;
while(temp >= 1)
{
if(n1 % temp == 0 && n2 % temp == 0)
{
biggest = temp;
break;
}
temp--;
}
/*
再求最小公倍数,思路和前面那个一样
*/
int min;
temp = n1 > n2 ? n1 : n2;
while(1)
{
if(temp % n1 == 0 && temp % n2 == 0)
{
min = temp;
break;
}
temp++;
}
printf("最大公约数为%d\n",biggest);
printf("最小公倍数为%d",min);
return 0;
}
输入一个三位数,判断这个数是否是水仙花数,并输出判断结果。
水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
例如:
输入:153
输出: 153 is a narcissistic number
输入:111
输出:111 is not a narcissistic number
#include<stdio.h>
#include<math.h>
int main()
{
int num;
scanf("%d",&num);
/*
思路:用一个temp存储它的值
将temp逐位取出,乘幂之后相加
一个整数的位数可以用 log10(n) + 1 求出
幂乘可以使用math.h下的pow函数
*/
int temp = num;
int len = (int)(log10(num) + 1);
int sum = 0;
while(temp != 0)
{
sum += (int)pow(temp % 10 , len);
temp /= 10;
}
if(sum == num)
{
printf("%d is a narcissistic number",num);
}else{
printf("%d is not a narcissistic number",num);
}
return 0;
}
输入5个字母,分别统计大写字母和小写字母的个数,要求输入字符用逗号分隔,输入格式如下:
a,A,r,g,R
输出格式如下:
大写字母个数=2
小写字母个数=3
(输入用,分隔,输出之间无空行)
#include<stdio.h>
int main()
{
int lowerCaseNum = 0;
int upperCaseNum = 0;
int i = 0;
char temp;
for(;i < 5; i++)
{
// 一边输入一遍判断,通过比较ASCII码值来进行判断
scanf("%c,",&temp);
if(temp >= 'a' && temp <= 'z')
{
lowerCaseNum++;
}else{
upperCaseNum++;
}
}
printf("大写字母个数=%d\n",upperCaseNum);
printf("小写字母个数=%d",lowerCaseNum);
return 0;
}
输出1!+2!+3!+...+10!的值 。
输出格式如下:
1!+2!+3!+...+10!=求得的值
#include<stdio.h>
int getFactorial(int n)
{
if(n == 1){
return 1;
}else{
return getFactorial(n-1)*n;
}
}
int main()
{
// 这里使用递归函数来求阶乘,也可以使用循环的方式
int sum = 0;
int i;
for(i = 1; i <= 10; i++)
{
sum += getFactorial(i);
}
// 这里使用循环
// int sum1 = 0;
// for(i = 1; i <= 10; i++)
// {
// int temp = i;
// int temp1 = 1;
// while(temp > 1)
// {
// temp1 *= temp;
// temp--;
// }
// sum1 += temp1;
// }
printf("1!+2!+3!+...+10!=%d",sum);
return 0;
}
利用公式 π/4=1-1/3+1/5-1/7+… 求 π 的近似值,舍去绝对值小于eps的通项。eps由用户输入。数据类型使用双精度。 输入:双精度实数,输出pai的近似值,保留8位小数。 注意,级数求和之后再乘以4. 【输入输出样例】 输入: 1e-4 输出: 3.14139265
#include<stdio.h>
int main()
{
double input;
scanf("%lf",&input);
// 利用 n = 2 * k - 1 来实现取奇数
double k = 1;
int flag = 1; // 来确定每一项之前的符号
double gap;
double n;
double sum = 0.0;
while(1)
{
n = 2 * k - 1;
gap = 1 / n;
// 初学者可以看看浮点数是怎么比较的
if(gap < input)
{
break;
}
sum += (flag * gap);
flag *= -1;
k++;
}
sum = sum * 4;
printf("%.8lf",sum);
return 0;
}
输入正整数a,b,找出[a,b]中的所有素数。 输入:两个整数 输出:若干素数,用一个空格隔开,末尾无空格。 注意,1不是素数。 【输入输出样例】 输入: 1 20 输出: 2 3 5 7 11 13 17 19
#include<stdio.h>
// 定义一个函数来判断是不是素数
int isPrime(int n)
{
// 注意特殊情况, 1 不是素数
if(n == 1)
{
return 0;
}
int i = n / 2;
// 为什么要从 n / 2 开始呢,自己想吧,挺简单的
for(; i >= 2; i--)
{
if(n % i ==0)
{
return 0;
}
}
return 1;
}
int main()
{
int left,right;
scanf("%d%d",&left,&right);
int temp = left;
int gap = 0;
while(temp <= right)
{
if(temp == right)
{
gap = 1;
}
if(isPrime(temp))
{
if(gap == 0){
printf("%d ",temp);
}else{
printf("%d",temp);
}
}
temp++;
}
return 0;
}
一个数如果等于其因子之和,则称为“完数”。例如,6的因子是1,2,3,而6=1+2+3,则6是完数。编程输出1000以内的所有完数,数字在一行输出,数字之间用,分隔(英文标点)
#include<stdio.h>
// 依旧从 n / 2 开始找一个数的因子
int isPerfectNum(int n)
{
int temp = n / 2;
int sum = 0;
while(temp >= 1)
{
if(n % temp == 0)
{
sum += temp;
}
temp--;
}
if(sum == n)
{
return 1;
}else{
return 0;
}
}
int main()
{
// 依旧从 n / 2 开始找一个数的因子
int flag = 0;
int i = 1;
for(; i <= 1000; i++)
{
if(isPerfectNum(i))
{
if(flag == 0)
{
printf("%d",i);
flag = 1;
}else
{
printf(",%d",i);
}
}
}
return 0;
}
编写程序,输出n行n列的下列形式的左下三角九九乘法表,n由用户输入。下表是n=4的输出。 4 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 输入:1-9的正整数; 输出:n行n列左下三角九九乘法表,一行中各列数据间有一个空格,末尾无空格。 注意不能使用\b消末尾的空格。 提示:输出末尾无空格的10个数: int i=1,n=10; i=1; printf("%d",i); for(i=2;i<=n;i++) { printf(" %d",i); } printf("\n");
#include<stdio.h>
void print(int n)
{
int j = 1;
for(;j <= n; j++)
{
if(j == 1)
{
printf("%d*%d=%d",n,j,n*j);
}else{
printf(" %d*%d=%d",n,j,n*j);
}
}
}
int main()
{
int n;
scanf("%d",&n);
int i = 1;
for(; i <= n;i++){
// 这里也可以再来一个循环,这样就不用写函数了,写函数纯粹是为了看起来好看
print(i);
printf("\n");
}
return 0;
}