题一、
1、定义一个一维数组 int a= [1,2,3,4,5,6,7,8]
(1) 求一维数组的长度
(2) 并将所有奇数下标元素自乘 3,偶数下标元素自增 输出变化后的数组
#include <stdio.h>
int main()
{
int a[] = { 1,2,3,4,5,6,7,8 };
int i, sz = sizeof(a) / sizeof(int);
printf("长度%d\n", sz);
for (i = 0;i < sz;i++)
{
if (i % 2 != 0)
{
a[i] += a[i];
}
else
{
a[i] *= a[i];
}
}
printf("变化后的数组:");
for (i=0;i<sz;i++)
{
printf("%d ",a[i]);
}
}
题二、
定义一个整形数组,容量5,终端输入五个数存在数组中,然后在到终端输入一个数a,判断a是否存在于我的这个数组,存在打印存在,不存在打印不存在,并计数。
#include <stdio.h>
int main()
{
int nums[5], i, num, j=0;
printf("输入五个数:");
while (1)
{
scanf("%d", &nums[i]);
i++;
if (getchar() == '\n')
{
break;
}
}
printf("输入一个数:");
scanf("%d", &num);
for (i = 0;i < 5;i++)
{
if (num == nums[i])
{
j = 1;
}
}
if (j)
{
printf("存在");
}
else
{
printf("不存在");
}
}
for循环
题三、
整形数组逆置,用指针实现。
#include <stdio.h>
void main()
{
int* p;
int nums[] = { 0,1,2,3,4,5,6,7,8,9 };
int i, j, t;
int sz = sizeof(nums) / sizeof(int);
for (i = 0;i < sz / 2;i++)
{
t = *(nums + i);
*(nums + i) = *(nums + sz - 1 - i);
*(nums + sz - 1 - i) = t;
}
for (p = nums;p < nums + sz;p++)
{
printf("%d ", *p);
}
}
通过中间变量进行倒置。
题四、
求[3,100]中的质数
#include<stdio.h>
int main() {
int i, j;
int k, l;
int nums[100] = { 0 };
for (i = 3;i <= 100;i++)
{
for (j = 2;j < i;j++)
{
if (i % j == 0)
{
break;
}
}
if (i == j)
{
for (k = 0;k < sizeof(nums) / sizeof(int);k++)
{
if (nums[k] == 0)
{
nums[k] = i;
break;
}
}
}
}
printf("[3,100]中的质数有:\n");
for (i = 0;i < sizeof(nums) / sizeof(int); i++)
{
if (nums[i] != 0)
{
printf("%d ", nums[i]);
}
}
}
因为存储,代码长度较长。
题五、
删除字符串中的重复字符,只使用一个数组,尝试用指针实现。
#include <stdio.h>
#include <string.h>
int main()
{
int i, j;
int flag = 0;
char original_str[] = "aabbccdd";
char* p = original_str;
int sz = strlen(original_str);
for (i = 0;i < sz;i++)
{
for (j = 0;j < sz;j++)
{
if (*(p + i) == *(p + j) && i!=j)
{
for (int k = i;k < sz;k++)
{
*(p+k)=*(p+k+1);
}
}
}
}
printf(original_str);
}
通过后面的不同字符替换前面的字符,实现删除。