|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【冒泡排序法】
#include <stdio.h>
int main(void)
{
int a[10];
int i,j,t; /*这里设了3个变量,其中i控制输入字符的个数,j控制本排序一共要走几趟的次数,t用来交换变量的值的中间参数*/
printf("input 10 numbers : \n");
for (i = 0; i < 10; i++)/*用一个简单的for循环来进行输入10个数,分别,一次放入到数组中*/
scanf("%d", &a);/*之前在格式控制里面加了个空格,但是要特别注意在最后一个数字输入的时候不能直接按回车,要按一个空格,确保流程的完整性,让电脑知道你的工作做完了
但还是建议不要加空格,以免造成不必要的错误,到时候看都看不出*/
printf("\n");
for (j = 0; j < 9; j++) /*10个数字排序,也就是要走九趟,每一趟检验的数字递减,用j来控制走的次数,再内嵌一个for循环,来交换数字的顺序*/
for (i = 0; i < 9-j; i++)/*初值i=0就是说明从第一个数开始比较*/
if (a > a[i+1])
{
t = a;
a = a[i+1];
a[i+1] = t;
}
printf("the sort numbers : \n");
for (i = 0; i < 10; i++)
printf("%d ", a);
printf("\n");
return 0;
}
/*
======================================
输出结果:
input 10 numbers :
0 1 2 3 4 5 6 7 8 9
the sort numbers :
0 1 2 3 4 5 6 7 8 9
Press any key to continue
======================================
*/
【用指针交换变量的值】
#include <stdio.h>void huhuan(int *i, int *j)/*定义“交换”函数,作用是交换两个函数的值*/{ int t;
t = *i;/*特别注意:实际上这里的t要和*i,*j相互匹配,因为i是地址,真正的变量是*i。同理,如果是*t的话也是错的*/ *i = *j;/*因为真正期待作用的是变量,记住,一定是单个变量,而不是加任意符号含有特殊意义的字符串*// *j = t;
return 0;}int main(void){ int a = 1,b = 2; huhuan(&a, &b);/*这里一定是&a和&b,因为要和上面的i,j地址变量匹配*//*另外,这里的huhuan函数不返回值,也就不存在把huhuan函数的值赋给任何变量*/ printf("a = %d\nb = %d\n", a, b); return 0;}/*/*作用:交换两个变量的值。实质:从最本质去考虑,通过交换想未知数一样交换两个变量,而不是单纯的交换两个变量值特点:使用的函数(唯一的一种使用函数来交换值的方法)================================输出结果:
a = 2b = 1
================================*/
错解①:
#include <stdio.h>void huhuan(int a , int b){ int t;
t = a; a = b; b = t;/*这是在没有返回值下的结果造成的,实参的值传递给形参的话就只在本函数内运行,结果并不带出本huhuan函数*/
return 0;}int main(){ int a = 1; int b = 2; huhuan(a,b); printf("a = %d\nb = %d", a, b); return 0;}/*=================================输出结果:
a = 1b = 2Press any key to continue
=================================分析:没有改变交换a,b的值的目的,原因是调用函数与主函数之间的局部变量没有任何关系,之间是不会发生混淆的。就算在调用函数之后a,b的值确实参与了huhuan函数的运算,但是由于函数没有返回值,所以到主函数中a,b的值还是没有变,这就相当于用a,b的身份证去做了一次记录,但是本质上他们的一切特征还是没变*/
错解②;
#include <stdio.h>
void huhuan(int *a , int *b){ int *t;
t = a; a = b; b = t;
return 0;}int main(){ int a = 1; int b = 2; huhuan(&a,&b); printf("a = %d\nb = %d", a, b); return 0;}/*同上,这里的*t是因为要和上面的定义相对应*/
|
评分
-
查看全部评分
|