1.判断最大值
定义一个无符号的整型数组,求数组中的最大值。
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned int a[] = {1,3,2,6,8,4,3};
unsigned int max = a[0];
for(int i=1;i<sizeof(a)/sizeof(unsigned
{
if (max < a[i])
max = a[i];
}
printf("数组中的最大值是%d\n",max);
return 0;
}
运行结果
2.要求在不调用标准库函数的前提下,实现strlen功能。strcpy功能
①实现strlen功能
#include <stdio.h>
int main(int argc, const char *argv[])
{
char a[100] = "";
char temp;
int len = 0;
printf("请输入一串字符我来为你统计个数(回车结束输入):\n");
for(int i=0;i<100;i++)
{
temp = getchar();
if ('\n' == temp)
{
printf("字符串输入完成!\n");
break;
}
else
a[i] = temp;
}
for(int i=0;i<100;i++)
{
if(a[i] =='\0' )
break;
else
len++;
}
printf("你输入的字符长度为:%d\n",len);
return 0;
}
代码结果(不会录入回车符)
②实现strcpy功能(strcpy在实际运用中并不会处理字节长的字符串复制给字节短时造成数据溢出的问题,这里可以小小的优化一下)
#include <stdio.h>
int main(int argc, const char *argv[])
{
char c[100] = "hello word";
char c1[100] = "";
printf("c = %s\n",c);
printf("c1 = %s\n",c1);
if(sizeof(c) > sizeof(c1))
{
for(int i=0;i<=100;i++)
{
if(c[i] == '\0')
{
c1[i] = c[i]//'\0'也会复制过去
printf("成功复制!\n");
break;
}
else
c1[i] = c[i];
}
printf("c = %s\n",c);
printf("c1 = %s\n",c1);
}
else
{
printf("\033[31m"); // 31 表示红色,后续加上 "m" 表示颜色设置结束
printf("Errro:This will cause data overflow, which is not allowed\n");
printf("\033[0m"); // 恢复默认文本颜色
}
return 0;
}
代码结果
当我们将char c1[100] = ""改为char c1[99]=""时,结果如下: