一、输出无符号整数每位数字的和
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int DigitSum(unsigned int n)
{
if(n>9)
{
return DigitSum(n/10) + n%10;
}
else
return n;
}
int main()
{
unsigned int n = 0;
int sum = 0;
scanf("%u",&n);
sum = DigitSum(n);
printf("%d",sum);
return 0;
}
二、利用函数递归实现n的k次方
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
double Pow(int n,int k)
{
if(k > 0)
{
return n * Pow(n,k-1);
}
else if(k < 0)
{
return 1.0/n*Pow(n,-k);
}
else
{
return 1;
}
}
int main()
{
int n = 0;
int k = 0;
double ret = 0;
scanf("%d %d",&n,&k);
ret = Pow(n,k);
printf("%f",ret);
return 0;
}
三、
sizeof是一个操作符,用来计算变量(类型)所占内存空间的大小,不关注具体存放的内容
strlen是一个库函数,用来求字符串长度,只能针对字符串,从参数给定的的地址向后一直找\0,统计\0出现之前的字符个数
四、交换两个数组数字
#include<stdio.h>
int main()
{
int arr1[] = {1,3,5,7,9};
int arr2 []= {2,4,6,8,0};
int i = 0;
int sz = sizeof(arr1)/sizeof(arr1[0]);
int tmp = 0;
for(i = 0;i<sz;i++)
{
int tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
for(i = 0;i<sz;i++)
{
printf("%d",arr1[i]);
}
printf("\n");
for(i = 0;i<sz;i++)
{
printf("%d",arr2[i]);
}
printf("\n");
return 0;
}
五、创建一个整形数组,完成对数组的操作
实现函数init()初始化数组全为a
实现print()打印数组的每个元素
实现reverse() 函数完成数组元素的逆置
#include<stdio.h>
void init(int arr[],int sz)
{
int i = 0;
for(i = 0;i<sz;i++)
{
arr[i] = 0;
}
}
void print(int arr[],int sz)
{
int i = 0;
for(i = 0;i<sz;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void reverse(int arr[],int sz)
{
int left = 0;
int right = sz-1;
int tmp;
while(left<right)
{
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,0};
int sz = sizeof(arr)/sizeof(arr[0]);
reverse(arr,sz);
print(arr,sz);
init(arr,sz);
print(arr,sz);
return 0;
}
六、变长数组(VS不能用)
#include<stdio.h>
int main()
{
//变长数组
int n = 0;
int arr[n];//这个数组不能初始化
scanf("%d",&n);
int i = 0;
for(i = 0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i = 0;i<n;i++)
{
printf("%d",arr[i]);
}
return 0;
}