Problem 1: 检查一个整数中重复出现的数字,若有重复数字则显示 repeated;否则显示 no repeated.
本题目可以使用bool值的数组来解决:
#include<stdbool.h>
#include<stdio.h>
int main()
{
bool a[10]={false};//初始化数组 使所有值均为false(0)
int digit,n;
printf("input n: ");
scanf("%d",&n);
while(n!=0)
{
digit=n%10;
if(a[digit])//判断该数是否出现过 并将digit与对应下标建立起联系
break;
a[digit]=true;//若digit之前未出现过 则在第一次出现时将a[digit]的值变为true
n/=10;
}
if(n!=0)
printf("repeated\n");
else
printf("no repeated\n");
return 0;
}
因为只需考虑有重复或无重复两种情况,因此使用bool值的数组可以完成.
Problem 2: 修改问题1,使其显示出0-9这9个数字分别出现的次数.
代码如下:
#include<stdio.h>
int main()
{
int a[10]={0};
int n,i;
printf("input n: ");
scanf("%d",&n);
while(n!=0)
{
a[n%10]++;//若出现某一数字 则在对应下标的数组元素计数
n/=10;
}
printf("Digit: ");
for(i=0;i<10;i++)
printf("%3d",i);
putchar('\n');
printf("Occurrences: ");
for(i=0;i<10;i++)
printf("%3d",*(a+i));
putchar('\n');
return 0;
}
本例中不可再使用bool值的方法,因为无法进行计数,
bool类型的值只有false(0)与true(1)两种值,存储非零值会导致变量赋值为1.
keep coding…..