一、改写strcmp
#include <stdio.h>
int str_cmp(char* s1, char* s2){
int i = 0;
for(; s1[i] != '\0' && s2[i] != '\0'; i++){
if(s1[i] != s2[i])
return s1[i] - s2[i] > 0 ? 1:-1;
continue;
}
if(s1[i])
return 1;
else if(s2[i])
return -1;
else
return 0;
}
int main(int argc, const char *argv[])
{
char str1[20] = "1234 ";
char str2[30] = "1234";
int res = str_cmp(str2, str1);
printf("res = %d\n", res);
return 0;
}
二、改写strcat
#include <stdio.h>
void str_cat(char *s1, char *s2){
int i = -1, j = 0;
while(s1[++i]); // 找到s1的'\0'位置
for(; s2[j] != '\0'; j++){
s1[i+j] = s2[j];
}
s1[i+j+1] = '\0';
}
int main(int argc, const char *argv[])
{
char str1[30] = "1234";
char str2[20] = "5678";
str_cat(str1, str2);
printf("str1 = %s, str2 = %s\n", str1, str2);
return 0;
}
三、打印杨辉三角形
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[10][10] = {1}; // 全部初始化为0
for(int i = 1; i < 10; i++){
for(int j = 0; j < 10; j++){
if(j == 0){
a[i][j] = 1;
}
else
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
if(a[i][j])
printf("%-4d", a[i][j]);
}
printf("\n");
}
return 0;
}