11.3
函式递回
#include<stdio.h>
void countto10(int)
int main(){
countto3(1);
return 0;
}
//函式递回输出一到三
void countto3(int i){
if(i <= 3) {
printf("%d\n",i);
countto(i+1);
}
}
#include<stdio.h>
void countto1(int);
int main(){
countto1(3);
return 0; //函式递回由三印到一
}
void countto1(int i){
if(i<=3&&i>0){
printf("%d\n",i);
countto1(i-1);
}
}
#include<stdio.h>
void countto1(int);
int main(void){
countto1(1)
return 0;
}
//因为函式递回,印出的仍然是三到一
void countto1(int i){
if (i<=3){
countto1(i+1)
printf("%d\n",i)
}
}
#include<stdio.h>
int sum(int);
int main(){
int n;
printf("输入一个数:");
scanf("%d",&n);
printf("%d",sum(n));
return 0;
//用递回函式计算连续数字的和
}
int sum(int a){
if (a==1){
return 1;
}
return sum(a-1)+a;
}
#include<stdio.h>
int s(int);
int main(){
int n;
printf("上的楼层数为:");
scanf("%d",&n);
printf("%d",s(n));
return 0;
} //用函式递回计算上楼梯方法
int s(int a){
if(a<=2){
return a;
}
return s(a-1)+s(a-2);
}
阵列变数
一群具有相同资料元素集合的资料形态
会用一段连续的记忆体来存储
元素资料形态 阵列变数名称[元素个数]
int var[3]
这个变数叫var,var是个阵列
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
srand(time(0));
int c1=0,c2=0,c3=0,c4=0,c5=0,c6=0;
int a;
for(a =1;a<=6000;a++){
int num =rand()%6+1;
switch(num){
case 1:c1++;break;
case 2:c2++;break;
case 3:c3++;break;
case 4:c4++;break;
case 5:c5++;break;
case 6:c6++;break;
} //计算掷6000次骰子个点被掷到的次数
}
printf("%d\n",c1);
printf("%d\n",c2);
printf("%d\n",c3);
printf("%d\n",c4);
printf("%d\n",c5);
printf("%d\n",c6);
return 0;
}
==元素资料形态 阵列变数名称[元素个数]={第一个数的值,第二个数的值……,最后一个数的值}
int num[6]={0}
六个数会都被初始化为0
int num[]={0,1,2,3,4,5}
会被默认为六个数
int num[3]={3,5}
点个书会被默认初始化为0
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
srand(time(0));
int c[6]=0;
int a;
for(a =1;a<=6000;a++){
int num =rand()%6+1;
switch(num){
case 1:c[0]++;break;
case 2:c[1]++;break;
case 3:c[2]++;break;
case 4:c[3]++;break;
case 5:c[4]++;break;
case 6:c[5]++;break;
} //计算掷6000次骰子个点被掷到的次数
}
printf("%d\n",c[0]);
printf("%d\n",c[1]);
printf("%d\n",c[2]);
printf("%d\n",c[3]);
printf("%d\n",c[4]);
printf("%d\n",c[5]);
return 0;
}