1.有一个整形数组:int arr[](数组的值由外部输入决定),一个整型变量:x(也由外部输入决定)。
要求:
1)删除数组中与x的值相等的元素
2)不得创建新的数组
3)最多只允许使用单层循环
4)无需考虑超出新数组长度后面的元素,所以,请返回新数组的长度
例如:{1,2,3,5,7,3,5,9)x=3
原数组的有效部分变为:{1,2,5,7,5,9}
方法一:
#include
int main(int argc, const char *argv[])
{
int x;
printf("请输入x:");
scanf("%d",&x);
int n;
printf("请输入n:");
scanf("%d",&n);
int arr[n];
for(int i=0;i
方法二:
int removeElement(int arr[], int n, int x)
{
int j = 0;
for (int i = 0; i < n; i++)
{
if (arr[i] != x)
{
arr[j] = arr[i];
j++;
}
}
return j;
}
方法三:
#include
int main(int argc, const char *argv[])
{
int arr[]={1,2,3,4,3,5,3,6};
int k = 0;
int j = 0;
int len = sizeof(arr)/sizeof(arr[0]);
/*
for(i=0;i
2.写递归函数 DigitSum(n),输入一个非负整数,返回组成它的数字之和例如:调用DigitSum(1729),则返回1+7+2+9,它的和是19;输入1729,输出19
#include
int add_size(int num)
{
if(num==0)
{
return 0;
}
return num%10 + add_size(num/10);
}
int main(int argc, const char *argv[])
{
int num;
scanf("%d",&num);
int num_add = add_size(num);
printf("%d\n",num_add);
return 0;
}
3.写一个宏,可以将一个int型整数的二进制位的奇数位和偶数位交换
#include
#define exchange(num) ({\
((num&0xaaaaaaaa)>>1) + ((num&0x55555555)<<1);\
})
int main(int argc, const char *argv[])
{
int num;
printf("请输入num:");
scanf("%d",&num);
int num_t=exchange(num);
printf("转换后的数为:%d\n",num_t);
return 0;
}
4.字符串倒置:(注意:是倒置,而不是直接倒置输出)
原字符串为:char *str =“I am Chinese”
倒置后为:“Chinese am I”.
附加要求:删除原本字符串中多余的空格
#include
void swap(char* str, int front, int rear)
{
while(front < rear)
{
*(str+front) ^= *(str+rear);
*(str+rear) ^= *(str+front);
*(str+front) ^= *(str+rear);
front++;
rear--;
}
}
int main(int argc, const char *argv[])
{
char str[100]="l love you";
int front = 0;
int rear = 0;
//去空格
int i = 0;
int j = 0;
int len = strlen(str);
for(i=0;i < len;i++)
{
if(str[i] == ' ' && str[i+1] == ' ')
continue;
str[j++] = str[i];
}
str[j] = '\0';
printf("转换为%s\n",str);
rear = strlen(str)-1;
//整个转化
swap(str,front,rear);
printf("转换为%s\n",str);
i = 0;
j = 0;
while(str[i] != '\0')
{
//找头
while(str[i] == ' ')
{
i++;
}
j = i;
//找尾
while(str[j] != ' ' && str[j] != '\0')
{
j++;
}
swap(str,i,j-1);
i = j;
}
printf("转换为%s\n",str);
return 0;
}