目录
1.求代码结果
2.求代码结果
3.使用指针打印数组内容
4.字符串逆序
5.计算求和
6.打印水仙花数
7.打印菱形
8.喝汽水问题
1.求代码结果
输出为00345
2.求代码结果
任何一个变量/表达式,都有2个属性,值属性和类型属性
int a =3;
a + 4.5 ->7.5
值属性:7.5
类型属性:double
a - >3
值属性:3
类型属性:int
&a
值属性:a的真实地址
类型属性:int*
输出为11223300。 %x打印十六位整数
3.使用指针打印数组内容
写一个函数打印arr数组的内容,不使用数组下标,使用指针。
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int* p = arr;
int i = 0;
for ( i = 0; i < sz; i++)
{
printf("%d ", *(p+i));
}
printf("\n");
return 0;
}
void print(int* p,int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(p + i));
}
printf("\n");
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
print(arr, sz);
return 0;
}
4.字符串逆序
写一个函数,可以逆序字符串的内容
#include <string.h>
int main()
{
char arr[10001] = {0};
gets(arr);
int left = 0;
int right = strlen(arr) - 1;
while ( left<right)
{
char rmp = arr[left];
arr[left] = arr[right];
arr[right] = rmp;
left++;
right--;
}
printf("%s\n", arr);
return 0;
}
5.计算求和
求Sn=a+aa+aaa+aaaa+aaaaa的前五项之和,其中a是一个数字
例如 2+22+222+2222+22222
int main()
{
int a = 0;
int n = 0;
scanf("%d %d", &a,&n);
int i = 0;
int sum = 0;
int k = 0;
for ( i = 0; i < n; i++)
{
k = k * 10 + a;
sum += k;
}
printf("%d\n", sum);
return 0;
}
6.打印水仙花数
求出0~100000之间的所有水仙花数,
水仙花数是指一个n位数,其各位数字的n次方之和恰好等于该数本身
例如153=1^3+5^3+3^3,153是水仙花树
#include <math.h>
int main()
{
int i = 0;
for ( i = 0; i <=100000; i++)
{
//判断水仙花树
//1.计算i是几位数
int n = 1;//任何数至少是一位数
int tmp = i;
int sum = 0;
while (tmp/10)
{
n++;
tmp /= 10;
}
//2.得到i每一位,计算他的n次方之和
tmp = i;
while (tmp)
{
sum += pow(tmp % 10, n);
tmp /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
#include <math.h>
int is_narcissistic_number(int i)
{
//判断水仙花树
//1.计算i是几位数
int n = 1;//任何数至少是一位数
int tmp = i;
int sum = 0;
while (tmp / 10)
{
n++;
tmp /= 10;
}
//2.得到i每一位,计算他的n次方之和
tmp = i;
while (tmp)
{
sum += pow(tmp % 10, n);
tmp /= 10;
}
return sum == i;
/*if (sum == i)
{
return 1;
}
else
{
return 0;
}*/
}
int main()
{
int i = 0;
for ( i = 0; i <=100000; i++)
{
if (is_narcissistic_number(i))
{
printf("%d ", i);
}
}
return 0;
}
7.打印菱形
int main()
{
int line = 0;
scanf("%d", &line);
//上
int i = 0;
for ( i = 0; i < line; i++)
{
//打印一行
//空格
int j = 0;
for ( j = 0; j < line-1-i; j++)
{
printf(" ");
}
//*
for ( j = 0; j < 2*i+1; j++)
{
printf("*");
}
printf("\n");
}
//下
for (i = 0; i < line-1; i++)
{
//打印一行
//空格
int j = 0;
for (j = 0; j<=i ; j++)
{
printf(" ");
}
//*
for (j = 0; j < 2*(line-1-i)-1 ; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
8.喝汽水问题
喝汽水,一瓶汽水1元,2个空可以换一瓶汽水,给20元,可以买多少瓶汽水。
int main()
{
int money = 0;
scanf("%d", &money);
int total = money;
int empty = money;
//置换
while (empty>=2)
{
total += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("%d\n", total);
return 0;
}
//公式 2n-1
int main()
{
int money = 0;
scanf("%d", &money);
//int total = money;
//int empty = money;
置换
//while (empty >= 2)
//{
// total += empty / 2;
// empty = empty / 2 + empty % 2;
//}
if (money>0)
{
printf("%d\n", 2 * money - 1);
}
else
{
printf("%d\n",0);
}
return 0;
}