自幂数
题⽬描述:
写⼀个代码打印1~100000之间的所有的⾃幂数,中间⽤空格分隔。
⾃幂数是指⼀个数的位数的n次⽅等于这个数本⾝。例如,153是⾃幂数,
因为 1 ^ 3+5 ^ 3+3 ^ 3=153。
我们可以使⽤⼀个循环遍历 1~100000 并检查每个数是否为⾃幂数。
思路:
- 通过第一个while循环确定 i 为几位数(利用“/”)
- 通过第二个循环确定 i 是否为自幂数(利用“%”和“/”)
#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
for (i = 1; i < 100001; i++)
{
int a = i;
int sum = 0;
int n = 0;
int b = 0;
while (a)
{
a /= 10;
n++;
}
a = i;
while (a)
{
b = a % 10;
sum += pow(b, n);
a /= 10;
}
if (sum == i)
{
printf("%d ",i);
}
}
printf("\n");
return 0;
}
打印菱形
题⽬描述:
输⼊⼀个整数n,打印对应2*n-1⾏的菱形图案,⽐如,输⼊7,输出如下图案,图案总共13⾏
思路:
- 将这个图案分为两部分进行打印:第一部分为 1 ~ n 行,第二部分为 n+1 ~ 2n-1 行,单独进行一个for循环
- 第一部分和第二部分又分为两个部分:打印空白以及打印 “ * ”
- 打印空白的for循环嵌套在行的循环之中,打印 “ * ”的for循环也在行的循环中
- 接着便是寻找打印的规律即可实现程序
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int i = 0;
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < n - i - 1; j++)
{
printf(" ");
}
for (j = 1; j <i*2+2; j++)
{
printf("*");
}
printf("\n");
}
for (i = 0; i < n-1 ; i++)
{
int j = 0;
for (j = 1; j <i+2; j++)
{
printf(" ");
}
for (j = 1; j <= ((2 * n - 3) - (2 * i)); j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
喝多少瓶汽水
题⽬描述:
⽔已知1瓶汽⽔1元,2个空瓶可以换⼀瓶汽⽔,输⼊整数n(n>=0),表⽰n元钱,计算可以多少汽
⽔,请编程实现。
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int bottom = n;
int empty = n;
int a = n;
while (empty !=0 && empty !=1)
{
a = a / 2;
bottom += a;
empty = empty % 2 + a;
a = empty;
}
printf("可以喝%d瓶汽水\n",bottom);
return 0;
}
字符转换
题⽬描述:
输⼊⼀个字符串,将字符串中⼤写字⺟全部转为⼩写字⺟,⼩写字⺟转成⼤写字⺟,其他字符保持不变。注:字符串的⻓度小于等于30,其中字符串中包含空格。
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[30] = "";
scanf("%[^\n]s", str);
char* str1 = str;
while (*str1)
{
if (islower(*str1))
{
*str1=toupper(*str1);
}
else if (isupper(*str1))
{
*str1=tolower(*str1);
}
str1++;
}
printf("%s\n", str);
return 0;
}
交换两个整数
题⽬描述:
写⼀个函数Swap,可以交换两个整数的内容。注意必须实现成函数完成。 输⼊2个整数,调⽤⾃定义函数Swap,完成2个整数的交换。
测试1:
输⼊:3 5
输出:5 3
测试2:
输⼊:10 20
输出:20 10
思路:
该程序本身不难,只需注意:函数传参时只是一份临时拷贝,在函数结束后便会销毁,因此需要传址而不是简单的传值
#include<stdio.h>
#include<assert.h>
void Swap(int* a, int* b)
{
assert(a && b);
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
Swap(&a,&b);
printf("%d %d\n",a,b);
return 0;
}