1. 判断最大值:定义一个无符号的整型数组,求数组中的最大值。 思路:int a1=10, a2=20, a3=5; 两两相比,求最大值
#include <stdio.h>
int comparenum(unsigned int s[],int n);
int main(int argc,const char* argv[])
{
unsigned int s[] = {1,3,7,4,8};
int max = comparenum(s,sizeof(s)/sizeof(int));
printf("最大值为:%d\n",max);
return 0;
}
int comparenum(unsigned int s[],int n){
int max = 0 ;
for(int i=0;i<n;i++){
if(max <= s[i])
{
max = s[i];
}
}
return max;
}
2. 从终端获取字符串,将整个字符串倒置存储。(提示:可以使用辅助数组)
#include <stdio.h>
#include <string.h>
int main(int argc,const char* argv[])
{
char str[30],temp;
scanf("%s",str);
int len = strlen(str);
for(int i = 0;i < len;i++)
{
if(i == len/2)
break;
temp = str[len-i-1];
str[len-i-1] = str[i];
str[i] = temp;
}
printf("%s\n",str);
return 0;
}

3. string函数族的改写。至少strlen strcpy 。
3.1 strlen
#include <stdio.h>
int strlen(char str[]);
int main(int argc,const char* argv[])
{
char s1[] = "he is a good boy";
int len = strlen(s1);
printf("length is :%d\n",len);
return 0;
}
int strlen(char str[])
{
int i =0;
while(1)
{
if(str[i] == '\0')
break;
i++;
}
return i;
}
3.2 strcpy
#include <stdio.h>
#include <string.h>
char * strcpy1(char * dst,char * str);
int main(int argc, const char *argv[])
{
char str[] = "he is boy";
char dst[20];
strcpy1(dst,str);
printf("%s\n",dst);
return 0;
}
char * strcpy1(char * dst,char * str){
char * t = dst;
while(1){
if(*str == '\0')
break;
*t++ = *str++;
}
*t = '\0';
return dst;
}
3.3 strcmp
#include <stdio.h>
int strcmp(char s1[],char s2[]);
int main(int argc,const char* argv[])
{
char s1[] = "hello";
char s2[] = "hellold";
int res = strcmp(s1,s2);
printf("%d\n",res);
return 0;
}
int strcmp(char s1[],char s2[])
{
int i=0,res;
while(1)
{
if(s1[i] == s2[i])
i++;
else
{
res = s1[i] - s2[i];
break;
}
}
return res;
}
3.4 strcat
#include <stdio.h>
char * strcat(char * s1,char * s2);
int main(int argc,const char* argv[])
{
char s1[] = "abcdf";
char s2[] = "123456";
strcat(s1,s2);
printf("%s\n",s1);
return 0;
}
char * strcat(char * s1,char * s2)
{
char * p = s1;
while(1)
{
if(*p == '\0')
break; // 将指针指向\0,
p++;
}
while(*s2 != '\0')
{
*p++ = *s2++;
}
*p = '\0';
return s1;
}
4. 10层杨辉三角
#include <stdio.h>
int main(int argc,const char* argv[])
{
int yang[10][10];
for(int i = 0;i<10;i++)
for(int j=0;j<=i;j++)
{
if(i==j || j==0) //将第一行列以及行列相等的数初始化为1
yang[i][j] = 1;
else
yang[i][j] = yang[i-1][j]+yang[i-1][j-1];
}
for(int i=0;i<10;i++)
{
for(int j=0;j<=i;j++)
printf("%d ",yang[i][j]);
printf("\n");
}
return 0;
}