1、实现一个方法“多个返回值”的效果:返回数字的个位、十位、百位。
基于本程序的一些基本的c语法:
'%'为取余运算符,用于把它前面的整数值或表达式除以
其后面的整数值或表达式,结果为不能被后面的整数或表达
式整除的最小整数,它后面的数值应该为大于1的正整数。如
表中所示的"13%7",就表示13 除以7余6。
‘/' 是2目运算符,除法运算,整数除以整数则得整数
'&' 取地址运算符,&a表示取变量a的地址;
'*' 指针运算符(取内容运算符)*p表示取p所指向的变量的内容
①先定义后赋值 int a=3,*p;(定义指针变量*p)
p=&a;(对指针变量取地址)
②定义变量的同时赋值 int a=3,*p=&a
也就是说在赋值时,int *p=&a
相当于 int *p;p=&a
它们的区别其实就是:
int *p=&a是同时定义*p并对赋值p(即a的地址赋给P),
而p=&a,只是对P赋值,没有定义指针变量。
但要注意,只有在同时定义赋值时“*p=&a”这种写法才是对的
其他情况下不要用*p=&a,这种形式,
15ptrMultReturnValue.c
#include <stdio.h>
/*达到一个方法“多个返回值”的效果:返回数字的个位、十位、百位。*/
int parseGSB(int num,int *ge,int *shi,int *bai)
{
if(num<0||num>999)
{
return 0;
}
//365: 个位365%10 = 5 //365整除10得到的余数
//十位:(365/10)%10 = 6
//百位: (365/100)%10 = 3
*ge = num%10;
*shi = (num/10)%10;
*bai = (num/100)%10;
}
int main(int argc, char *argv[])
{
int i = 365; //最大为999的一个数的个位、十位、百位数字
int ge,shi,bai;
if(parseGSB(i,&ge,&shi,&bai))
{
printf("%d,%d,%d",ge,shi,bai);
}
return 0;
}
2、计算一个字符串的长度(null-terminated)
16ptrCalculStringLenth.c
#include <stdio.h>
/*计算一个字符串的长度(null-terminated)*/
int mystrlen(char *str) //从首地址往后移,直到\0位置
{
int len =0;
while((*str)!='\0') //注意此处不要写错应为\0,而不是/0
{
len++;
str++;
}
return len;
}
int main(int argc, char *argv[])
{
int len = mystrlen("helloworld!");
printf("%d",len);
return 0;
}
3、判断一个字符串是否以另一个子子字符串结尾。代码见备注。
17ptrJudgeString.c
#include <stdio.h>
/*判断一个字符串是否以另一个子子字符串结尾。*/
int endsWith(char *str,char *substr) //如果是则返回1,否则返回0
{
/*
程序思路:
首先将指针从开始移动到最后,分别到两个字符串的最后一个字符,顺便计算
两个字符串的长度,进行比对,如果子字符串(substr)长度比主字符串(str)长则返回0
然后从两个字符串最后往前遍历比对,如果到最后都不等,即没有相同的字符则返回0,
代表不是以该子字符串结尾;
否则是以子字符串结尾的,返回1,代表是以子字符串substr结尾
*/
int strlen=0; //定义变量,代表字符串的长度
while(*str!='\0')
{
str++;
strlen++;
}
int substrlen=0;
while(*substr!='\0')
{
substr++;
substrlen++;
} //
if(substrlen>strlen) //首先判断两个字符串的长度,如果子字符串
{
return 0;
}
int i;
for(i=0;i<=substrlen;i++)
{
/*
从两个字符串最后往前遍历比对,如果到最后都不等,即没有相同的字符则返回0
否则是以子字符串结尾的,返回1
*/
char ch1 = *str;
char ch2 = *substr;
if(ch1!=ch2)
{
return 0;
}
str--;
substr--;
}
return 1;
}
// str1:"rupeng"; str2:"eng"; str3:"ing"
int main(int argc, char *argv[])
{
printf("%d\n",endsWith("rupeng","eng"));
printf("%d\n",endsWith("rupeng","ing"));
printf("%d\n",endsWith("rupeng","rupenging"));
return 0;
}