C语言教程 第30页 C 练习实例20 – 小球自由下落 C 语言经典100例 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 程序分析:见下面注释。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> int main() { float h,s; h=s=100; h=h/2; //第一次反弹高度 for(int i=2;i<=10;i++) { s=s+2*h; h=h/2; } printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h); return 0; } 以上实例输出结果为: 第10次落地时,共经过299.609375米,第10次反弹高0.097656米 C 语言经典100例
2024-04-03
C 练习实例8 C 语言经典100例 题目:输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> int main() { int i,j,result; printf("\n"); for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/ } printf("\n"); /*每一行后换行*/ } } 以上实例输出结果为: 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45...
2024-04-03
C 传递指针给函数 C 指针 C 语言允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。 下面的实例中,我们传递一个无符号的 long 型指针给函数,并在函数内改变这个值: #include <stdio.h> #include <time.h> void getSeconds(unsigned long *par); int main () { unsigned long sec; getSeconds( &sec ); /* 输出实际值 */ printf("Number of seconds: %ld\n", sec ); return 0; } void getSeconds(unsigned long *par) { /* 获取当前的秒数 */ *par = time( NULL ); return; } 当上面的代码被编译和执行时,它会产生下列结果: Number of seconds :1294450468 能接受指针作为参数的函数,也能接受数组作为参数,如下所示: #include <stdio.h> /* 函数声明 */ double getAverage(int *arr, int size); int main () { /* 带有 5 个元素的整型数组 */ int balance[5] = {1000, 2, 3, 17, 50}; double avg; /* 传递一个指向数组的指针作为参数 */ avg = getAverage( balance, 5 ) ; /* 输出返回值 */ printf("Average value is: %f\n", avg ); return 0; } double getAverage(int *arr, int size) { int i, sum...
2024-04-03
C 练习实例9 C 语言经典100例 题目:要求输出国际象棋棋盘。 程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 如果出现乱码情况请参考本博客【C 练习实例7】的解决方法。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> int main() { int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) if((i+j)%2==0) printf("%c%c",219,219); else printf(" "); printf("\n"); } return 0; } 以上实例输出结果为: C 语言经典100例
2024-04-03
C 练习实例5 C 语言经典100例 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include <stdio.h> int main() { int x,y,z,t; printf("\n请输入三个数字:\n"); scanf("%d%d%d",&x,&y,&z); if (x>y) { /*交换x,y的值*/ t=x;x=y;y=t; } if(x>z) { /*交换x,z的值*/ t=z;z=x;x=t; } if(y>z) { /*交换z,y的值*/ t=y;y=z;z=t; } printf("从小到大排序: %d %d %d\n",x,y,z); } 以上实例输出结果为: 请输入三个数字: 1 3 2 从小到大排序: 1 2 3 C 语言经典100例
2024-04-03
C 练习实例15 C 语言经典100例 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 程序分析:(a>b)?a:b这是条件运算符的基本例子。 程序源代码: // Created by www.w3cschool.cn on 15/11/9. // Copyright © 2015年 W3Cschool教程. All rights reserved. // #include<stdio.h> int main() { int score; char grade; printf("请输入分数: "); scanf("%d",&score); grade=(score>=90)?'A':((score>=60)?'B':'C'); printf("%c\n",grade); return 0; } 以上实例输出结果为: 请输入分数: 87 B C 语言经典100例
2024-04-03
C 传递数组给函数 C 数组 如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。 方式 1 形式参数是一个指针(您可以在下一章中学习到有关指针的知识): void myFunction(int *param) { . . . } 方式 2 形式参数是一个已定义大小的数组: void myFunction(int param[10]) { . . . } 方式 3 形式参数是一个未定义大小的数组: void myFunction(int param[]) { . . . } 实例 现在,让我们来看下面这个函数,它把数组作为参数,同时还传递了另一个参数,根据所传的参数,会返回数组中各元素的平均值: double getAverage(int arr[], int size) { int i; double avg; double sum; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; } 现在,让我们调用上面的函数,如下所示: #include <stdio.h> /* 函数声明 */ double getAverage(int arr[], int size); int main () { /* 带有 5 个元素的整型数组 */ int balance[5] = {1000, 2, 3, 17, 50}; double avg; /* 传递一个指向数组的指针作为参数 */ avg = getAverage( balance, 5 ) ; /* 输出返回值 */ printf( "平均值是: %f ",...
2024-04-03
C 从函数返回数组 C 数组 C 语言不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。我们将在下一章中讲解有关指针的知识,您可以先跳过本章,等了解了 C 指针的概念之后,再来学习本章的内容。 如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下: int * myFunction() { . . . } 另外,C 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。 现在,让我们来看下面的函数,它会生成 10 个随机数,并使用数组来返回它们,具体如下: #include <stdio.h> /* 要生成和返回随机数的函数 */ int * getRandom( ) { static int r[10]; int i; /* 设置种子 */ srand( (unsigned)time( NULL ) ); for ( i = 0; i < 10; ++i) { r[i] = rand(); printf( "r[%d] = %d\n", i, r[i]); } return r; } /* 要调用上面定义函数的主函数 */ int main () { /* 一个指向整数的指针 */ int *p; int i; p = getRandom(); for ( i = 0; i < 10; i++ ) { printf( "*(p + %d) : %d\n", i, *(p + i)); } return 0; } 当上面的代码被编译和执行时,它会产生下列结果: r[0] = 313959809 r[1] = 1759055877 r[2]...
2024-04-03
C 嵌套 switch 语句 C 判断 您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。 语法 C 语言中 嵌套 switch 语句的语法: switch(ch1) { case 'A': printf("这个 A 是外部 switch 的一部分" ); switch(ch2) { case 'A': printf("这个 A 是内部 switch 的一部分" ); break; case 'B': /* 内部 B case 代码 */ } break; case 'B': /* 外部 B case 代码 */ } 实例 #include <stdio.h> int main () { /* 局部变量定义 */ int a = 100; int b = 200; switch(a) { case 100: printf("这是外部 switch 的一部分\n", a ); switch(b) { case 200: printf("这是内部 switch 的一部分\n", a ); } } printf("a 的准确值是 %d\n", a ); printf("b 的准确值是 %d\n", b ); return 0; } 当上面的代码被编译和执行时,它会产生下列结果: 这是外部 switch 的一部分...
2024-04-03
C 嵌套 if 语句 C 判断 在 C 语言中,嵌套 if-else 语句是合法的,这意味着您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 语法 C 语言中 嵌套 if 语句的语法: if( boolean_expression 1) { /* 当布尔表达式 1 为真时执行 */ if(boolean_expression 2) { /* 当布尔表达式 2 为真时执行 */ } } 您可以嵌套 else if…else,方式与嵌套 if 语句相似。 实例 #include <stdio.h> int main () { /* 局部变量定义 */ int a = 100; int b = 200; /* 检查布尔条件 */ if( a == 100 ) { /* 如果条件为真,则检查下面的条件 */ if( b == 200 ) { /* 如果条件为真,则输出下面的语句 */ printf("a 的值是 100,且 b 的值是 200\n" ); } } printf("a 的准确值是 %d\n", a ); printf("b 的准确值是 %d\n", b ); return 0; } 当上面的代码被编译和执行时,它会产生下列结果: a 的值是 100,且 b 的值是 200 a...
2024-04-03