呵呵,先说说我吧,我买的书给你一个版本的!而且买书时间差不多不超过一个月,现在是高二学生(马上要高三了),学起C语言并没感觉到吃力!而我的一个同学就不同了,我们一起看的我都成了他老师了!当我看他看的时候才发现原因,他的速度是我看的3倍。这可能就是问题的所在了!建议楼主从书的目录开始看,一字一句一个都不少,你会发现结果截然不同!就你所说的所运用的数学知识大多都是逻辑,如果有条件的话希望楼主恶补一下高中数学!但还是那句话,逻辑是程序的灵魂,成绩并不能说明着什么!如果可以的话希望楼主能买“数据结构”之类的书,对提高逻辑以及C语言有很大的帮助!这本书的编辑是“谭浩强”教授,是中国响当当的人物,开始我也认为排序不好,但最后发现前面的每一个字都具有非凡的意义!~你说的那个程序数太大了,我给改为1*2*3*....*10结果:如图楼主还是要认真的读读那本书,我也不知道更好的办法了!
以下是我写的一个方法。
由于打印内容比较多,可能你的控制台窗口最后只能显示下后面的结果。
所以你需要自己设置下。或者打印到某个文件里。
算法供你参考下,你自己改成自己需要的c程序吧。
另外,里面计算的部分可以优化,你也自己优化下吧。
不好意思,我修改了一次这个回答,前次的算法有遗漏。
int printresult(int result[])
{
for (int k=0;k<9;k++)
{
cout<
cout<
}
int fun(int num,int source[],int result[])
{
for (int i=1;i<=num;i++)
{
result[9-num] = source[i-1];
int nextsource[10];
for (int k=1;k
if (k>=i)
{
nextsource[k-1] = source[k];
}
else
{
nextsource[k-1] = source[k-1];
}
}
fun(num-1,nextsource,result);
if (num == 1)
{
printresult(result);
}
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int source[9];
int result[9];
for (int i=0;i<9;i++)
{
source[i] = i+1;
result[i] = 0;
}
fun(9,source,result);
return 0;
}
1.输入语句:scanf("控制格式",接受值列表),其中控制格式常用的有:%d,%c,%s,%f,分别
表示整型,字符型,字符串和浮点型.
例如int
a;char
c;scanf("%d
%c",&a,&c);表示向a和c输入值
2.赋值语句:=号,如将b赋值为10,为b=10
3.条件:if(布尔表达式){程序}else{程序}(注:此结构可嵌套)
switch(离散量){case
常量:...;case
常量:...}
例:int
a;scanf("%d",&a);
if(a>10)
{printf("大于专10");}
else
{printf("小于10")}
例:switch(months)
{
case
1:printf("1月有31天");break;
case
3:printf("3月有31天");break;
....
default:break;
}
4.循环属:for结构,while结构,do-while结构
for(初始化;判断;变化)
{
}
while(条件)
{
}
do
{
}while(条件)
输入copy:scanf("%d",&a);
百分号后面可以跟d,c,s,f等,分别代表输入整型,字符,字符串,浮点型
赋值:=号,如a=10;
条件:if(条件){程序}
else{程序}
循环:循环有多个,比较常用的是for,和while
如:for(i=0;i<10;i++){程序}//for(初使化;条件;变化)
while(条件){程序}//while里条件成立执行括号里代码
要是冒泡法的话,那就是10个for语句,最后再来个if语句就可以了