1.
定义一个一维数组 int a= [1,2,3,4,5,6,7,8]
(1) 求一维数组的长度 k
(2) 并将所有奇数下标元素自乘 3,偶数下标元素自增 2.
输出变化后的数组#include<stdio.h> /*定义一个一维数组 int a= [1,2,3,4,5,6,7,8] (1) 求一维数组的长度 k (2) 并将所有奇数下标元素自乘 3,偶数下标元素自增 2. 输出变化后的数组*/ int main() { int a []= {1,2,3,4,5,6,7,8}; int len = sizeof(a)/sizeof(a[0]);//求一维数组的长度 for(int i=0;i<len;i++){ if(i == 0) { //0既不是奇数也不是偶数 continue; }else if(i%2 ==0) { //偶数下标元素自增2 a[i] = a[i]+ 2; } else { //奇数下标元素自乘 a[i] = a[i] * 3; } } for(int i=0;i<len;i++){ //输出变化后的数组 printf("%d\t",a[i]); } return 0; }
2.定义一个整形数组,容量5,终端输入五个数存在数组中,然后在到终端输入一个数a,
判断a是否存在于我的这个数组,存在打印存在,不存在打印不存在,并计数#include<stdio.h> /*定义一个整形数组,容量5,终端输入五个数存在数组中,然后在到终端输入一个数a, 判断a是否存在于我的这个数组,存在打印存在,不存在打印不存在,并计数。*/ int main(int argc, const char *argv[]) { int arr [5],temp,count; for(int i=0;i<5;i++){ count = 0;//判断是否存在的标识符 0-->不存在,1-->存在 printf("输入第%d个数",i+1); scanf("%d",&temp); for(int j=0;j<5;j++){ if(arr[j]==temp){ printf("存在\n"); count = 1; // i = i-1; //此次输入i不自加 break; } } if(count == 0){ printf("不存在\n"); arr[i] = temp; } } for(int i=0;i<5;i++){ printf("%d\t",arr[i]); } return 0; }
3.整形数组逆置,用指针实现。
//整形数组逆置,用指针实现。 #include <stdio.h> int main(int argc, const char *argv[]) { int arr[5] = {1,3,5,7,9}; int arr1[5] = {0}; int *p = arr,*p1 = arr1; for(int i=0;i<5;i++){ *(p1+i) = *(p + 4 -i); } for(int i=0;i<5;i++){ printf("%d\t",*(p1+i)); } return 0; }
4.求[3,100]中的质数
#include <stdio.h> //求[3,100]中的质数 int main(int argc, const char *argv[]) { for(int i=3;i<=100;i++){ int a = 1;//判断是不是质数的标志符,0--->不是 ,1--->是 for(int j=2;j<i;j++){ if(i%j == 0&&j!=i)//除了本身外能被其他数整除,不是质数 { a = 0; } } if(a==1){ printf("%-2d是质数\n",i); } }return 0; }
5.删除字符串中的重复字符,只使用一个数组,尝试用指针实现。
//删除字符串中的重复字符,只使用一个数组,尝试用指针实现。 #include <stdio.h> #include <string.h> int main(int argc, const char *argv[]) { char arr[32] = "hello world"; char *p = arr; //指针和数组类型保持一致!!! int len = strlen(p); for(int i=0;i<len;i++){//遍历数组 char temp = *(p+i); for(int j=0;j<len;j++){ if(temp == *(p+j)&&i!=j){//arr[i] 与arr[j]字符相同,j>i for(int k=j;k<len;k++){ *(p+k) = *(p+k+1); } } } } puts(p); return 0; }