{ ia=stri[i]+5;
if (ia>’Z’) ia-=26;
}
else if(stri[i]>=’a’&&stri[i]<=’z’)
{ ia=stri[i]+5;
if (ia>’z’) ia-=26;
}
else ia=stri[i];
strp[i++]=ia;
}
strp[i]=’/0’;
return(strp);
}
main()
{ char s[50];
gets(s);
printf('%s/n', jiami(s));
}
2.统计文本单词的个数
输入一行字符,统计其中有多少个单词,单词之间用格分隔开。
算法思路:
(1)从文本(字符串)的左边开始,取出一个字符;设逻辑量word表示所取字符是否是单词内的字符,初值设为0
(2)若所取字符不是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符,再判断word是否为1,若word不为1则表是新单词的开始,让单词数num= num +1,让word =1;
(3)若所取字符是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符, 则表示字符不是单词内字符,让word=0;
(4) 再依次取下一个字符,重得(2)(3)直到文本结束。vb60抽奖程序
下面程序段是字符串string中包含的单词数
#include 'stdio.h'
main()
{char c,string[80];
int i,num=0,word=0;
gets(string);
for(i=0;(c=string[i])!='/0';i++)
if(c==' ') word=0;
else if(word==0)
{ word=1;
num++;}
printf('There are %d word in the line./n',num);
}
十二、穷举法
穷举法(又称“枚举法”)的基本思想是:一一列举各种可能的情况,并判断哪一种可能是符合要求的解,这是一种“在没有其它办法的情况的方法”,是一种最“笨”的方法,然而对一些无法用解析法求解的问题往往能奏效,通常采用循环来处理穷举问题。
例: 将一张面值为100元的等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?
main()
{ int i, j, k;
printf(' 5元 1元 5角/n');
for(i=1; i<=20; i++)
for(j=1; j<=100-i; j++)
{ k=100-i-j;
if(5*i+1*j+0.5*k==100)
printf(' = = =/n', i, j, k);
}
}
十三、递归算法
用自身的结构来描述自身,称递归
VB允许在一个Sub子过程和Function过程的定义内部调用自己,即递归Sub子过程和递归Function函数。递归处理一般用栈来实现,每调用一次自身,把当前参数压栈,直到递归结束条件;然后从栈中弹出当前参数,直到栈空。
递归条件:(1)递归结束条件及结束时的值;(2)能用递归形式表示,且递归向终止条件发展。
例:编fac(n)=n! 的递归函数
int fac(int n)
{ if(n==1)
return(1);
else
return(n*fac(n-1));
}
main()
{ int n;
scanf('%d', &n);
printf('n!=%d/n', fac(n));
}
六种常用算法
有条不紊——递推法破解难题问:“我对数据结构有了一定了解,但还是不太懂程序。从经典公式“程序=算法+数据结构”得知,是因为不了解算法。能不能介绍几种简单的算法,当然从最容易懂的那种开始了?”
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-34162-6.html
越往后对我们越有利
这—次不教训米国