voidreverse(char* arr){assert(arr);int len =strlen(arr);char* left = arr;char* right = arr + len -1;while(left <= right){char tmp =*left;*left =*right;*right = tmp;
left++;
right--;}}intmain(){int sz =0;int i =0;char arr[256]={0};printf("请输入:");scanf("%s", arr);reverse(arr);printf("%s\n", arr);return0;}
//计算题
//算出s0=a+aa+aaa+aaaa+aaaaa前5项之和,其中a是数字//例如a=2 ,那就是2+22+222+2222+22222intmain(){int a =0;int n =0;scanf("%d%d",&a,&n);int sum =0;int i =0;int ret =0;for(i =0; i < n; i++){
ret = ret *10+ a;
sum += ret;}printf("%d", sum);return0;}
//打印水仙花数
//求出0~100000之内的所有水仙花数// 水仙花数是一个n位数,是指各位数的n次方之和刚好等于该数本身,153=1^3+5^3+3^3 则153就是一个水仙花数//#include<math.h>intmain(){int i =0;int a =0;for(i =0; i <=100000; i++){int n =1;//我们接下来需要先判断位数n//还有如何把i拆成各个数//最后进行比较int temp = i;while(temp/=10){
n++;}//算到n位 再拆分 int sum =0;int s = i;while(s ){
a = s %10;
sum = sum+pow(s%10,n);
s=s/10;}if(i == sum){printf("水仙花数是:%d\n", i);}}return0;}//我这么算最后都是0其实不对因为我们每次都在内部把i刷新成了0 所以最好用临时变量去做这些题
//打印一个菱形的图案
//13行// * // *** // *****// ***// * //就是类似这种的菱形 //intmain(){int line =0;printf("请输入行数");scanf("%d",&line);//打印上半部分int i =0;for(i =0; i < line; i++){int j =0;for(j =0; j < line -1-i; j++){printf(" ");}for(j =0; j <2*i+1; j++){printf("*");}printf("\n");}//继续打印下半部分for(i =0; i < line; i++){int j =0;for(j =0; j < i; j++){printf(" ");}for(j =0; j <2*(line-1-i)-1; j++){printf("*");}printf("\n");}return0;}
//汽水问题
//喝汽水 1瓶汽水 1元 2空瓶 换1瓶汽水给20 可以喝到多少汽水intmain(){int money =0;int total =0;int empty =0;printf("请输入多少钱:》");scanf("%d",&money);
total = money;
empty = money;while(empty /2){
total = total + empty /2;
empty = empty /2+ empty %2;}printf("钱是:%d",total);return0;}//自己想的,小学生做法是10块钱,买10瓶之后借10个空瓶,可以再换10瓶之后把瓶子还回去就是//喝了2*10 =20瓶 在这里不允许借 所以 !!!!最终你都会剩下一瓶 //所以答案是2*n-1 可以用这个原理验证是否作对
///调整奇数偶数的位置 使得奇数全部位于偶数的前面
// 输入一个整数数组实现一个函数voidmove(int arr[],int sz){//我们先从前往后找到一个奇数//然后再找到一个偶数//然后把这两个数进行交换int left =0;int right = sz -1;while((left<right)&&(arr[left]%2==1)){
left++;}while((left < right)&&(arr[right]%2==0)){
right--;}if(left < right){int temp = arr[left];
arr[left]= arr[right];
arr[right]= temp;}}voidprint(int arr[],int sz){int i =0;for(i =0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");}intmain(){int arr[]={1,2,3,4,5,6,7,8,9,10};int sz =sizeof(arr)/sizeof(arr[0]);move(arr,sz);print(arr, sz);return0;}
// 矩阵每行从左到右依次递增,从上到下也依次递增// 编写程序判断某个数字在矩阵中是否存在// 1 2 3//4 5 6// 7 8 9//可//1 2 3//2 3 4//4 5 6//可//找数为了节省时间//我们先从最后的出发 最后一个//比如说我们要找7 那么先拿第三列比较// 3 6 9 这样一下子就能去掉两个整行非常方便// ////intfindnum(int arr[3][3],int k ,int row ,int col ){int x =0;int y = col-1;while(x <= row -1&& y >=0){if(arr[x][y]> k){
y--;}elseif(arr[x][y]< k){
x++;}else{return1;}}return0;}intmain(){int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};int k =7;int ret =findnum(arr, k,3,3);if(ret ==1)printf("找到了");elseprintf("找不到");return0;}
//重新设计希望告诉我们变量在哪里
intfindnum(int arr[3][3],int k ,int* row ,int* col ){int x =0;int y =*col-1;while(x <=*row -1&& y >=0){if(arr[x][y]> k){
y--;}elseif(arr[x][y]< k){
x++;}else{*row = x;*col = y;return1;}}return0;}intmain(){int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};int k =7;int x =3;int y =3;int ret =findnum(arr, k,&x,&y);if(ret ==1)printf("找到了在%d %d ", x , y);elseprintf("找不到");return0;}//传地址过去的形式