题一、
利用main函数的外部传参实现简易计算器功能。
#include <stdio.h>
int main(int argc, const char* argv[])
{
switch (*argv[3])
{
case '+':
printf("%d", *argv[1] + *argv[2] - 96);
break;
case '-':
printf("%d", *argv[1] - *argv[2] - 96);
break;
case '*':
printf("%d", (*argv[1] - 48) * (*argv[2] - 48));
break;
case '/':
printf("%d", (*argv[1] - 48) / (*argv[2] - 48));
break;
}
}
用switch-case做分支。
题二、
使用指针的方式,打印杨辉三角的前十行
#include <stdio.h>
int main()
{
int a[10][10] = { 0 };
int(*p)[10] = a;
for (int i = 0;i < 10;i++) *(*(p + i)) = 1;
for (int i = 1;i < 10;i++)
{
for (int j = 1;j < 10;j++) *(*(p + i) + j) = *(*(p + i - 1) + j) + *(*(p + i - 1) + j - 1);
}
for (int i = 0;i < 10;i++)
{
for (int j = 0;j < 10 - i;j++)
{
printf(" ");
}
for (int k = 0;k < 10;k++)
{
if (*(*(p + i) + k))printf("%-4d", *(*(p + i) + k));
}
printf("\n");
}
}
基础。
题三 、
使用指针实现strcmp和strcat函数的功能
#include <stdio.h>
#include <string.h>
char ans;
int main()
{
int mystrcat(char* sp1,char* sp2);
char* mystrcmp(char* sp1, char* sp2);
char str1[32] = "hello";
char str2[32] = "hello";
char* p1 = str1;
char* p2 = str2;
printf("%d\n", mystrcat(p1,p2));
mystrcmp(p1,p2);
printf("%s\n",str1);
}
int mystrcat(char* sp1,char* sp2)
{
while (*sp1 == *sp2 && *sp1 != 0 && *sp2 != 0)
{
sp1++;
sp2++;
}
return *sp1 - *sp2;
}
char* mystrcmp(char* sp1, char* sp2)
{
while (*sp1) sp1++;
while (*sp2)
{
*sp1 = *sp2;
sp1++;
sp2++;
}
*sp1 = *sp2;
}
有两个要求而且是实现函数功能,所以写了函数。