//练习一:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
/*int main(){
int a[10]= {0}, i;
srand((unsigned int)time(NULL));
for(i=0;i<10;i++)
a[i]=0;
for(i=0;i<10;i++){
a[rand()%10]++;
}
for(i=0;i<10;i++)
printf("%d出现%d次\n",i,a[i]);
return 0;
} */
//练习二:
/*int main(){
int n, i, num,digit, count[10]={0};
printf("请输入一个正整数n:");
scanf("%d",&n);
for(i = 1;i <= n;i++){
num = i;
while(num > 0){
digit = num % 10;
count[digit]++;
num /= 10;
}
}
printf("数字0到9在1到%d范围内出现的次数:\n",n);
for (i = 0; i < 10; i++) {
printf("%d 出现 %d 次\n", i, count[i]);
}
return 0;
}*/
//练习三:
/*int main(){
int i, num,digit, count[10]={0};
for(i = 1;i <= 2020;i++){
num = i;
while(num > 0){
digit = num % 10;
count[digit]++;
num /= 10;
}
}
printf("数字0到9在1到%d范围内出现的次数:\n",2020);
for (i = 0; i < 10; i++) {
printf("%d 出现 %d 次\n", i, count[i]);
}
return 0;
}*/
//练习四:/*小蓝有很多数字卡片,每张卡片上都是数字0到9。小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从1拼到多少。例如,当小蓝有30张卡片,其中0到9各3张,则小蓝可以拼出1到10,但是拼11时卡片1已经只有一张了,不够拼出11。
现在小蓝手里有0到9的卡片各2021张,共20210张,请问小蓝可以从1拼到多少?*/
int main(){
int cards[10] = {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021};
int num = 1;
int can_form = 0;
int temp, digit, is_possible;
while(1){
temp = num;
is_possible = 1;
while(temp>0){
digit = temp%10;
if(cards[digit]==0){
is_possible = 0;
break;
}
temp/=10;
}
if(is_possible){
temp = num;
while(temp>0){
digit = temp%10;
cards[digit]--;
temp/=10;
}
can_form++;
} else{
break;
}
num++;
}
printf("小蓝可以从1拼到%d\n",can_form);
return 0;
}
if的分支结构,练习一二三四。
于 2024-05-09 20:03:15 首次发布