我这有个C语言编写的小程序,谁能帮我注释下?谢谢啦

我这有个C语言编写的小程序,谁能帮我注释下?谢谢啦,第1张

#include<stdio.h>

#include<math.h>

void main()

{

int a,b,c

printf(" \3\3 \3\3\n") \\轿迟反斜杠 "\"表示转义字符这里输出四个ASCII值为3 的字符

\\ 中闭羡李间有空格的照常输出 最后 \n是换行符

for(a=1a<=6a++) \\这for循环语句 以a为循环控制变量a从1开始 当a不大于6是继续循环

\\否则结束循环

{

for(b=1b<=ab++) \\同上 当b<=a满足时执行

printf(" ")\\输出空格

for(c=1c<=11-2*ac++) \\

{

if(a>1&&(c==1||c==11-2*a)||a==1&&(c==2||c==5||c==8)) \\满足条件执行下面的语句

printf("\3")\\输出 ASCII为3的字符

else printf(" ") \\输出空格派肢

}

printf("\n") \\换行

}

getch()

}

不知道这大哥在哪弄的这程序,真是高手,没怎么细看,就是不知道为什么这么个程序居旁瞎然弄到***这么复杂呵呵,

建议:类似的程序不用太深究。程序员的最高境界不是能编出谁看都费劲的程序,而是编出可读性很强,运行不累赘的程序,这种程序...........本人不怎么恭维。

象这种:

void main()

{

int i,n,j,k=2

printf("输入菱形行数,注意为奇数:\n")

scanf("%d",&n)

for(i=1i+1i+=k)

{

for(j=0j <(n-i)/2j++)

printf(" ")

for(j=0j <ij++)printf("*")

printf("\n")

if (i==n)

k=-2

}

}大部分人看到for(i=1i+1i+=k)都会晕一下吧,死循环?不是,当输入奇数的时候他不是死循环,输入偶数就是死循环,这样的程序有意义闭橘么?感觉......怪怪的轿启团,是不是90后编的啊呵呵

这是对字符串 *** 作的程序

#include<stdio.h>

#include<stdlib.h>

typedef struct

{

char *ch

int length //串长度

}HString

void StrAssign(HString *T,char *chars) //生成一个值等于串常量chars的串T

{

int i,j

char *c

if(T->ch)

free(T->ch) //释放T原有空间

for(i=0,c=chars*c++i,++c) //求chars长度

printf("the length is %d\n",i)

if(!i)

{

T->ch = NULL

并野咐T->length = 0

}

else

{

if(!(T->ch=(char*)malloc((i+1)*sizeof(char))))

exit(1)

for(j=0j<i++j)

T->ch[j] = chars[j]

T->ch[i] = '\0'

T->length = i

}

}

int StrLength(HString s) //返回S的元素个数,称串的长度

{

return s.length

}

int StrCompare(HString S,HString T) //串比较

{

//若S>T,则返回值>0若S=T,则返回值=0,若S<T,则返回值<0

int i

for(i=0i<S.length &&i<T.length++i)

if(S.ch[i]!=T.ch[i])

return S.ch[i] - T.ch[i]

return S.length - T.length

}

void ClearString(HString *S) //将S清为空串

{

if(S->ch)

{

free(S->ch)

S->ch = NULL

}

S->length = 0

}

void Concat(HString *T,HString s1,HString s2)

{

//用T返回由绝纯s1,s2联接而成的新串

int i,j

if(T->ch) free(T->ch) //释放旧空间

if(!(T->ch=(char*)malloc((s1.length+s2.length+1)*sizeof(char))))

exit(1)

T->length = s1.length + s2.length

for(i=0i<s1.length++i)

T->ch[i] = s1.ch[i]

for(j=0j<=s2.length++j,++i)

T->ch[i] = s2.ch[j]

}

void SubString(HString *sub,HString s,int pos,int len)

{

//用sub返回串s的第pos个字符起长度为len的子串

//其中,1<=pos<=strlenth(s)且0<=len<=strlength(s)-pos + 1.

int i,j

if(pos<1 || pos>s.length || len<0 || len>s.length-pos+1)

{

printf("SubString's Location error!\n")

exit(1)

}

if(sub->ch) free(sub->ch)//释放旧空间

if(!len)

{

sub->ch = NULLsub->length = 0

}

else

{

sub->ch = (char*)malloc((len+1)*sizeof(char))

for(i=0,j=pos-1j<=pos+len-2++i,++j)

sub->ch[i] = s.ch[j]

sub->length = len

sub->ch[sub->length] = '\0'

}

 脊野 }

int Index(HString S,HString T,int pos)

{

//T为非空串,若主串S中第pos个字符之后存在与T相等的子串,

//则返回第一个这样的子串在S中的位置,否则返回0

int i,j,k

i = 0

for(i=i+pos-1S.ch[i]++i)

for(j=i,k=0S.ch[j]==T.ch[k]++j,++k)

if(!T.ch[k+1])

return i

return -1

}

void StrInsert(HString *s,int pos,HString T) //在pos位置插入字符串T

{

int i,j

printf("%d,%d\n",pos,s->length+1)

if(pos<1 || pos>(s->length+1))

{

printf("strInsert's Location error!\n")

exit(1)

}

//SubString(&sub,*s,pos,s->length-pos+1) //取得POS位置开始以后的字符串

//printf("s->length=%s\n",s->ch)

if(T.length)

s->ch = (char*)realloc(s->ch,(s->length+T.length+1)*sizeof(char))//增加S的空间

for(j=s->lengthj>=pos-1--j) //POS位置到最后的字符往后移

s->ch[j+T.length] = s->ch[j]//这就已经把'\0'移动到最后

for(i=0i<T.length++i) //T复制到S

{

s->ch[i+pos-1] = T.ch[i]

}

//for(i=0i<sub.length++i) //刚刚取出S的POS后的字符串,复制回S

//s->ch[pos+T.length-2+i] = sub.ch[i]

s->length = s->length + T.length

}

void StrDelete(HString *s,int pos,int len)//S存在,从S中删除第POS个字符起长度为LEN的子串

{

int i,j

if(pos<1 || pos>s->length-len)//判断删除位置是否合理

printf("delete Location error!\n")

else

{

for(i=pos+len-1,j=0i<s->length++i,++j) //删除中间元素,后面的元素往前移

s->ch[pos-1+j] = s->ch[i]

s->length = s->length - len

s->ch[s->length] = '\0'

s->ch = (char*)realloc(s->ch,(s->length+1)*sizeof(char))//将它占用空间改回来更好

}

}

void Replace(HString *s,HString t,HString v) //将V替换掉S中的T

{

int i

i = Index(*s,t,1)

printf("location:%d",i)

while(i>=0)

{

StrDelete(s,i+1,t.length)

StrInsert(s,i+1,v)

i = Index(*s,t,1)

}

}

void display(HString s)

{

printf("the string is :%s\n",s.ch)

}

void main()

{

HString obj,obj2,obj3,obj4

obj.ch = NULL//(char*)malloc(sizeof(char))

obj2.ch = NULL

obj3.ch = NULL

obj4.ch = NULL

StrAssign(&obj,"august")

StrAssign(&obj2,"yx")

StrAssign(&obj4,"ax")

display(obj)

display(obj2)

SubString(&obj3,obj,3,3)

display(obj3)

StrInsert(&obj3,1,obj2)

display(obj3)

Replace(&obj3,obj2,obj4)

display(obj3)

StrDelete(&obj3,1,3)

display(obj3)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12353953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存