目录
1、喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水
2、实现一个函数来调整该数组中数字的顺怀
3、在屏幕上打印杨辉三角
4、根据供词猜凶手
5、5位运动员参加了10米台跳水比赛预测比赛结果
6、实现一个计算器,加减乘除
7、写一个冒泡排序
8、写一个通用方式的冒泡排序
9、给一个结构体排序
10、杨氏矩阵查找一个数
11、实现一个函数,可以左旋字符串中的k个字符。
12、字符串旋转结果
13、模拟实现strlen库函数
14、模拟实现strcat库函数
15、模拟实现strcmp库函数
16、模拟实现strstr函数(*)
17、写代码实现输入任意的字符
18、模拟实现memcpy函数
19、模拟实现memmove函数
要求:给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;
}
要求:使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
void move(int arr[],int sz)
{int left = 0;int right = sz-1;while(left
代码:
int main()
{int arr[10][10] = {0};int i = 0;int j = 0;for(i=0;i<10;i++){for(j=0;j<=i;j++){if(j == 0){arr[i][j]=1;}if(i == j){arr[i][j]=1;}if(i>=2&&j>=1){arr[i][j] = arr[i-1][j-1]+arr[i-1][j];}}}for(int i =0;i<=10;i++){for(int j =0;j
题目内容:
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个
以下为4个嫌疑犯的供词:
已知3个人说了真话,1个人说的是假活
int main()
{char killer = 0;for(killer = 'A';killer <= 'D';killer++){if((killer != 'A')+(killer == 'C')+(killer == 'D')+(killer != 'D') == 3){printf("killer=%c\n",killer);}}return 0;
}
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次
int main()
{int a,b,c,d,e = 0;for(a=1;a<=5;a++){for(b=1;b<=5;b++){for(c=1;c<=5;c++){for(d=1;d<=5;d++){for(e=1;e<=5;e++){if((((b==2)+(a==3))==1)&&((b==2)+(e==4)==1)&&((c==1)+(d==2)==1)&&((c==5)+(d==3)==1)&&((e==4)+(a==1)==1)){if(a*b*c*d*e == 120){printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);}}}}}}}return 0;
}
要求:用两种方法,不用函数指针数组和用函数指针数组
不用函数指针数组:
int Add(int x,int y)
{return x + y;
}
int Sub(int x,int y)
{return x - y;
}
int Mul(int x,int y)
{return x * y;
}
int Div(int x,int y)
{return x / y;
}
void menu()
{printf("****************************\n");printf("** 1.Add *** 2.Sub ****\n");printf("** 3.Mul *** 4.Div ****\n");printf("******** 0.exit *********\n");printf("****************************\n");
}
int main()
{int input = 0;do{int a = 0;int b = 0;menu();printf("请输入:>");scanf("%d",&input);switch(input){case 1:printf("请输入两个数:>\n");scanf("%d %d",&a,&b);printf("%d\n",Add(a,b));break;case 2:printf("请输入两个数:>\n");scanf("%d %d",&a,&b);printf("%d\n",Sub(a,b));break;case 3:printf("请输入两个数:>\n");scanf("%d %d",&a,&b);printf("%d\n",Mul(a,b));break;case 4:printf("请输入两个数:>\n");scanf("%d %d",&a,&b);printf("%d\n",Div(a,b));break;case 0:printf("退出程序\n");break;default:printf("输入错误,请重新输入:>\n");break;}}while(input);return 0;
}
用函数指针数组
int Add(int x,int y)
{return x + y;
}
int Sub(int x,int y)
{return x - y;
}
int Mul(int x,int y)
{return x * y;
}
int Div(int x,int y)
{return x / y;
}
void menu()
{printf("****************************\n");printf("** 1.Add *** 2.Sub ****\n");printf("** 3.Mul *** 4.Div ****\n");printf("******** 0.exit *********\n");printf("****************************\n");
}
int main()
{int input = 0;do{int (*pfarr[5])(int,int) = {NULL,Add,Sub,Mul,Div};int a = 0;int b = 0;menu();printf("请输入:>");\scanf("%d",&input);if(input >=1 && input <= 4){printf("请输入两个数:>\n");scanf("%d %d",&a,&b);printf("%d\n",(pfarr[input])(a,b));}else if(input ==0){printf("退出程序\n");break;}else{printf("输入错误,请重新输入:>\n");}}while(input);return 0;
}
void bubble_sort(int arr[],int sz)
{int i = 0;for(i=0; iarr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}
void print(int arr[],int sz)
{int i = 0;for(i=0;i
void print(int arr[],int sz)
{int i = 0;for(i=0;i0) //比较两个元素的{Swap((char*)base+j*wideth,(char*)base+(j+1)*wideth,wideth);}}}
}
int cmp_int(const void* e1,const void* e2)
{return *(int*)e1 - *(int*)e2;
}
int main()
{int arr[] = {0,1,9,3,4,5,6,2,8,7};int sz =sizeof(arr) / sizeof(arr[0]);bubble_sort(arr,sz,sizeof(arr[0]),cmp_int);print(arr,sz);return 0;
}
要求:用到qsort函数:
void qsort(void* base,size_t num,size_t size,int(*cmp)(const void* e1,const void* e2))
#include
#include
struct Stu
{char name[20];int age;
};
int sort_by_name(const void* e1,const void* e2)
{return strcmp(((struct Stu*)e1)->age,((struct Stu*)e2)->age);
}
void test()
{struct Stu s[3] = {{"zhangsan",30},{"lise",23},{"wangwu",33}};int sz = sizeof(s) / sizeof(s[0]);qsort(s,sz,sizeof(s[0]),sort_by_name);
}
int main()
{test();return 0;
}
要求:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
int find_num(int arr[3][3],int r,int c,int k)
{int x = 0;int y = c-1;while(x=0){if(arr[x][y]k){y--;}else{printf("在第%d行,第%d列\n",x+1,y+1);return 1;}}return 0;
}
int main()
{int arr[3][3] = {1,2,3,4,5,6,7,8,9};int k = 7;int ret = find_num(arr,3,3,k);if(ret == 1){printf("找到了\n");}else{printf("找不到\n");}return 0;
}
在函数里不打印,怎么返回来行和列的值
int find_num(int arr[3][3],int* r,int* c,int k)
{int x = 0;int y = *c-1;while(x<*r && y>=0){if(arr[x][y]k){y--;}else{*r = x;*c = y;return 1;}}return 0;
}
int main()
{int arr[3][3] = {1,2,3,4,5,6,7,8,9};int k = 7;int x = 3;int y = 3;int ret = find_num(arr,&x,&y,k);if(ret == 1){printf("找到了,下标为:%d %d\n",x,y);}else{printf("找不到\n");}return 0;
}
例如:ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
#include
void left_move(char* str,int k)
{int len = strlen(str);int i = 0;for(i=0; i
利用散布翻转法
#include
void reverse(char *start,char* end)
{while(start
题目内容:
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串
例如:
给定s1 = PABCD和s2 = BCDAA,返回1
给定s1 = abcd和s2 = ACBD,返回0.
#include
int is_left_move(char arr1[],char arr2[])
{int n = strlen(arr1);int i = 0;for(i=0; i
方法二(用strncat和strstr库函数)
#include
int is_left_move(char* str1,char* str2)
{if(strlen(str1) != strlen(str2)) //长度不相等,肯定不是旋转得来的{return 0;}int len = strlen(str1);strncat(str1,str2,len); //str1字符串的后面追加一个str1char* ret = strstr(str1,str2); //判断str2是否为str1的字符串return ret != NULL;
}
int main()
{char arr1[20] = "abcdef";char arr2[] = "cdefab";int ret = is_left_move(arr1,arr2);if(ret == 1){printf("Yes\n");}else{printf("No\n");}return 0;
}
#include
int my_strlen(const char* str)
{assert(str != NULL);int count = 0;while(*str != '\0'){str++;count++;}return count;
}
int main()
{char arr[] = "abc";printf("%d\n",my_strlen(arr));return 0;
}
#include
char* my_strcat(char* dest,const char* src)
{char* ret = dest;assert(dest && src);while(*dest) //找到目标字符串的\0{dest++;}while(*dest++ = *src++) //追加字符串,包括\0{;}return ret; //返回目标空间的起始位置
}
int main()
{char arr[20] = "bit ";char arr1[] = "hello";printf("%s\n",my_strcat(arr,arr1));return 0;
}
int my_strcmp(char* s1,char* s2)
{while(*s1 == *s2){if(*s1 == '\0'){return 0;}s1++;s2++;}if(*s1>*s2){return 1;}else{return -1;}
}
int main()
{char* p = "abcd";char* q = "abca";int ret = my_strcmp(p,q);if(ret > 0){printf("p>q\n");}else if(ret < 0){printf("p
#include
char* my_strstr(const char* str1,const char* str2)
{assert(str1 && str2);const char* s1 = NULL;const char* s2 = NULL;const char* cp = str1;if(*str2 == '\0'){return (char*)str1;}while(*cp){s1 = cp;s2 = str2;while(*s1 && *s2 && (*s1 == *s2)){s1++;s2++;}if(*s2 == '\0'){return (char*)cp;}cp++;}
}
int main()
{char arr1[] = "abcdef";char arr2[] = "bcd";char* ret = my_strstr(arr1,arr2);if(ret == NULL){printf("找不到\n");}else{printf("找到了:%s\n",ret);}return 0;
}
要求:输入任意的字符,输出的都是小写
#include
int main()
{char arr[10] = {0};scanf("%s",&arr);int i = 0;while(arr[i] != '\0'){if(isupper(arr[i])){arr[i] = tolower(arr[i]);}printf("%c ",arr[i]);i++;}return 0;
}
#include
void* my_memcpy(void* dest,const void* src,size_t num)
{assert(dest && src);void* ret = dest;while(num--){*(char*)dest = *(char*)src;dest = (char*)dest + 1;src = (char*)src + 1;}return ret;
}
int main()
{int arr1[] = {1,2,3,4,5,6,7,8,9}; int arr2[20] = {0};my_memcpy(arr2,arr1,20);return 0;
}
#include
void* my_memmove(void* dest,const void* src,size_t num)
{assert(dest && src);void* ret = dest;if(dest
下一篇:什么是DevOps