C语言笔记第十六课

一、作业内容

1. 求字符串长度 , 例如给定字符串 "abc", 输出 3; 给定字符串 "abcde", 输出 5.
int Mystrlen(char str[100])
{
int i;
for(i=0;i!='\0';i++)
;
return i;
//return sizeof(str) / sizeof(str[0]) - 1;//错误的代码
}
int main()
{
char str[]="abcdexyz";
int len=Mystrlen(str);
printf("%s的长度是%d\n",str,len);
return 0;
}
2. 字符串比较 , 比较两个字符串的大小 , 字符串的大小按照字典序定义 , 例如 "abc"<"x"
;"abc"=="abc";"abc">"abb".
int Mystrcmp(char str1[], char str2[])
{
int i;
for (i = 0; str1[i] == str2[i] && str1[i]!='\0'; i++)
;
return str1[i] - str2[i];
/*if (str1[i] > str2[i])
return 1;
else if (str1[i] < str2[i])
return -1;
else
return 0;*/
}
int main()
{
char str1[] = "abcde";
//char str2[] = "x";
char str2[] = "abcc";
//char str2[] = "abcde";
printf("%d\n",Mystrcmp(str1,str2));
return 0;
}
3. 字符串转数字 , 把字符串转成对应的数字 , 转换过程中如果遇到非数字字符则转换结束 .
"1234" 转换为 1234;"a1234" 转换为 0,"12a34" 转换为 12.
一位数字字符转数字 =ch-'0', 例如 '8'-'0'==8 , 注意 '12'-'0' 错误的
一位数字转数字字符 =n+'0' 例如 8+'0'=='8', 注意 12+'0'=="12" 错误的
int Myatoi(char str[])
{
int tmp=0;//保存转换后的数据
for(int i=0;insigit (str[i]);i++)
{
tmp=tmp*10+(str[i]-'0');
}
return tmp;
}
int main()
{
char str1[]="123";
char str2[]="123a45";
char str3[]="12345xy78";
printf("%d\n",Myatoi(str1));
printf("%d\n",Myatoi(str2));
printf("%d\n",Myatoi(str3));
return 0;
}
4. 数字转字符串 , 把数字转成对应的字符串 , 例如 1234 转换为 "1234".
​

void Myatoa(char str[],int n)
{
int i=0;//str的下标
while(n!=0)
{
str[i]=n%10+'0';//把数字转换成为字符
i++;
n/=10;//舍弃个位
}
str[i]='\0';//字符串结尾标记
Reverse (str);//调用字符串反转函数
int main()
{
char str[100];
Myatoa(str,123456789);
printf("str=%s\n",str);
return 0;
}
 

​

5. 实现字符串反转 . 例如 "abc"->"cba";"abcd"->"dcba"

 

void Reverse (char str[])
{
int i=0;
int j=Mystrlen(str)-1;
char tmp;
for( ;i<j;i++,j--)
{
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}
}
int main()
{
char str1[]="abcdefg";
char str2[]="asdfghjkl";
Reverse(str1);
Reverse(str2);
printf("%s\n%s\n",str1,str2);
return 0;
}

二、上课内容

1. 函数及设计
函数 : 库函数 ( 系统自带或者第三方提供 ), 自定义函数
库函数 :printf,scanf,sqrt,pow,strxxx , 可以直接使用 ( 需要引用对应的头文件 )
写函数的目的 :1. 提高代码使用率 ;2. 方便分工协作 ;......
后面不允许把所有的代码放在 main 函数中 , 必须单独成自定义函数
函数定义完成后 , 如果需要使用必须调用该函数
函数由 4 部分组成 , 如下 :
返回值 函数名 ( 参数列表 )
{
函数体 ( 函数的实现 )
}
1. 函数名 : 唯一 , 可以由字母 , 数字和下划线组成
printf 一样 , 如果想使用函数 , 必须的调用
函数名尽量见名知意 ( 建议首字母大写 , 防止和库函数冲突 )
2. 参数列表 : 传递数据的窗口 . 在软件的实际使用过程 , 并不会使用 scanf 函数
以后在自定义函数中不允许使用 scanf
参数列表如何设计 ?( 先不写 , 然后需要从键盘获取的改成参数即可 ), 注意不能把所有的变量都加到参数列表
实际参数 : 简称实参 , 调用函数时给的数据
形式参数 : 简称形参 , 函数定义时写的参数
3. 返回值
在函数中不应该通过 printf 输出 ( 特殊情况例外 , 有多个返回值 )
应该通过返回值把结果返回
可参考 ,strlen,sqrt,pow
注意调用函数时需要接收返回值
返回值只能是 0 个或者 1 , 不能是多个 ( 如果有多个暂时使用 printf 输出 )
void: 没有 , 如果没有返回值 , 函数的前面加 void

 

int Max(int a,int b)//求两个数的最大值,这仅仅是函数的定义,如果想使用它,必须调用
{
//int a, b;
//printf("请输入两个整数\n");
//scanf("%d%d",&a,&b);//临时方便数据读取,不是正式的数据来源
if (a > b)
//printf("最大值=%d\n", a);
return a;
else
//printf("最大值=%d\n",b);
return b;
}
int Min(int a,int b)
{
int tmp;
if (a < b)
printf("最小值=%d\n", a);
else
printf("最小值=%d\n",b);
return 0;
}
int main()
{
int n = sqrt(100);
int power = pow(10,3);
printf("%d,%d\n",n,power);
//如果想使用n或power,也可以
//......
int n1 = Max(10,20);//注意,在调用函数时需要接收返回值
int n2 = Max(20,10);
//n1,n2可以输出,也可以继续使用
printf("%d,%d\n",n1,n2);
return 0;
}
//int main()
//{
// printf("趣字节\n");
//
// Max(100,200);
// Max(10,20);
// Max('a','A');
//
// sqrt(100);
//
// pow(3,5);
//
// isdigit('1');
//
// Min(10,20);
// Min(20,10);
//
// return 0;
//}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值