#jitoa【C语言刷题感悟】 原创

pl噼里啪啦
发布于 2023-12-30 00:35
浏览
0收藏

金陵科技学院-开放原子开源社 周思艺编写
一、结构体数组排序-根据成绩高低将学生记录排序
#jitoa【C语言刷题感悟】-鸿蒙开发者社区
#jitoa【C语言刷题感悟】-鸿蒙开发者社区
本题要求fun函数可以根据成绩高低进行排序。
main函数中定义了一个stu类型的a数组,p为指针,给p结构体的起始地址,形参n为结构体单位个数。
定义一个stu类型的变量t,运用交换法排序进行从大到小的排序:
void fun ( struct stu p, int n )
{
int i,j;
struct stu t;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(p[i].score<p[j].score){
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
二、存在的必须是唯一的
#jitoa【C语言刷题感悟】-鸿蒙开发者社区
由于str数组元素不超过20个,在fun函数中定义同样数组a【20】来存储出现过的字符。一次检查str中各个字符直到字符串结束,将检查的字符与a中存储各位对比:
void fun(char str[])
{
int i,j,s=1;
char a[20];
a[0]=str[0];
for(i=1;str[i]!=‘\0’;i++){
for(j=0;j<s;j++){
if(str[i]!=a[j])continue;
else goto again;
}
str[s]=str[i];
a[s]=str[s];
s++;
again:;
}
str[s]=‘\0’;
}
a有s个元素,s用于记录出现过的字符种类,str最终的元素个数也为s。
三、字符数组与字符串:求带符号的数字串对应的整数
#jitoa【C语言刷题感悟】-鸿蒙开发者社区
fun函数有返回值。
p为指针,p为s数组的首地址(即s【0】地址)。
由于输入字符串"-1234",则函数把它转换为整数值 -1234,输入字符串"1234",则函数把它转换为整数值 1234,则要考虑正负问题。则可以定义一个变量b,来确定返回值的正负:
(1)由输入条件可知,判断首位是否为’0’到’9’,若为则结果为正,否则为负。
(2)判断后,通过ASCII码,将其转为字符所对应的数字。
long fun(char p)
{
char f=p;
int s=0,b,n,i;
if(p>=‘0’&&p<=‘9’){b=1;i=0;}
else {b=0,i=1;}
for(;
(p+i)!=‘\0’;i++)
{
if(
(p+i)>=‘0’&&
(p+i)<=‘9’)
{
n=
(p+i)-48;
s=s
10+n;
}
}
if(b==0)return -s;
else return s;
}

感悟
1、对于读取字符串,读取结束条件可以考虑所读为是等于’\0’。例如:题二的str[i]!=‘\0’;和题三的(p+i)!=‘\0’;
2、对于字符转数字正负问题,可用一个变量来做标志,在返回值时,用if-else语句来确定返回值的正负。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
收藏
回复
举报
回复
    相关推荐