1.利用main函数的外部传参实现简易计算器功能。
代码如下:
#include <stdio.h> int main(int argc, const char *argv[]) { if(*argv[2] == '+') { printf("%d+%d=%d\n",(*argv[1]-48),(*argv[3]-48),(*argv[1]-48)+(*argv[3]-48)); } if(*argv[2] == '-') { printf("%d-%d=%d\n",(*argv[1]-48),(*argv[3]-48),(*argv[1]-48)-(-48+*argv[3])); } if(*argv[2] == '/') { printf("%d/%d=%d\n",(*argv[1]-48),(*argv[3]-48),(-48+*argv[1])/(-48+*argv[3])); } return 0; }
结果如下:
ubuntu@ubuntu:day02$ ./a.out 1 + 2 1+2=3 ubuntu@ubuntu:day02$ ./a.out 1 - 2 1-2=-1 ubuntu@ubuntu:day02$ ./a.out 1 / 2 1/2=0
2.使用指针的方式,打印杨辉三角的前十行
代码如下:
#include<stdio.h> int main(int argc,const char *argv[]) { int arr[10][10] = {0}; int (*p)[10] = arr; for(int i=0;i<10;i++){ for(int j=0;j<=i;j++){ if(i==j||j==0){ *(*(p+i)+j) = 1; }else{ *(*(p+i)+j) = *(*(p+i-1)+(j-1)) + (*(*(p+i-1)+j)); } } } for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ if(*(*(p+i)+j)!=0) printf("%-5d",arr[i][j]); } printf("\n"); } }
结果如下:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1
3.使用指针实现strcmp函数的功能
代码如下:
#include<stdio.h> #include<string.h> int main(int argc,const char *argv[]) { char arr[100],arr1[200]; gets(arr); gets(arr1); char *p = arr,*p1 = arr1; while(*p1){ if(*p == *p1){ p++; p1++; }else if(*p>*p1){ printf("arr>arr1\n"); break; }else if(*p<*p1){ printf("arr<arr1\n"); break; } } if(*p1 == '\0'){ printf("arr=arr1\n"); } return 0; }
结果如下:
ubuntu@ubuntu:day02$ ./a.out qwerABC qwerabc arr<arr1 ubuntu@ubuntu:day02$ ./a.out qwerabc qwerABC arr>arr1 ubuntu@ubuntu:day02$ ./a.out ABC ABC arr=arr1 ubuntu@ubuntu:day02$
4.使用指针实现strcat函数的功能
代码如下:
#include<stdio.h> #include<string.h> int main(int argc,const char *argv[]) { char arr[100],arr1[200]; gets(arr); gets(arr1); int len = strlen(arr)+strlen(arr1); char ccc[len]; //创建新的数组,防止超出范围 char *p = arr,*p1 = arr1,*p2 = ccc; while(*p){ //数组1放入新数组 *p2 = *p; p2++; p++; } while(*p1){//数组2放入新数组 *p2 = *p1; p2++; p1++; } puts(ccc); return 0; }
结果如下:
hello world !!! hello world !!!