C语言,判断某整数中是否存在重复数字。怎么写呢?
#include<stdio.h>
#include<stdbool.h>
intmain()
{
longintnum,temp;
inti=1;
printf("请输入一个整数:");
scanf("%ld",&num);
temp=num;
//获取所输入整数的位数。
while(temp/10>0){
i+=1;
temp=temp/10;
}
//打印所输入整数的位数,并定义一个bool型数组。
printf("该数为%d位数。\n",i);
boola[i+1];
//初始化数组中所有元素为0.
for(intj=0;j<i+1;j++){
a[j]=0;
}
//判断是否有重复的数字。
<spanstyle="color:#ff0000;">do{
intn=num%10;
if(a[n]==1){
printf("出现重复了。\n");
break;
}
a[n]=1;
num/=10;
}while(num);</span>
if(num==0){
printf("没有重复。\n");
}
return0;
}
扩展资料:
return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。 return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。
如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
如果函数名前有返回类型定义,如int,double等就必须有返回值,而如果是void型,则可以不写return,但这时即使写了也无法返回数值。
#include<stdio.h>
#include<stdbool.h>
intmain()
{
longintnum,temp;
inti=1;
printf("请输入一个整数:");
scanf("%ld",&num);
temp=num;
//获取所输入整数的位数。
while(temp/10>0){
i+=1;
temp=temp/10;
}
//打印所输入整数的位数,并定义一个bool型数组。
printf("该数为%d位数。\n",i);
boola[i+1];
//初始化数组中所有元素为0.
for(intj=0;j<i+1;j++){
a[j]=0;
}
//判断是否有重复的数字。
<spanstyle="color:#ff0000;">do{
intn=num%10;
if(a[n]==1){
printf("出现重复了。\n");
break;
}
a[n]=1;
num/=10;
}while(num);</span>
if(num==0){
printf("没有重复。\n");
}
return0;
}
扩展资料:
return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。 return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。
如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
如果函数名前有返回类型定义,如int,double等就必须有返回值,而如果是void型,则可以不写return,但这时即使写了也无法返回数值。
int main(void)
{
int a[10]={0},n; //a[10]用于对出现过的数进行记录,之所以a[10] 因为对应0 - 9
long x;
printf("请输入要判断的数值 :");
scanf("%ld",&x);
do { // 该处使用do语句而不是for 语句因为如果是for语句 如果x=0 则会直接退出循环,不进行判断,而do语句则会判断一次
n=x%10;
if(a[n] !=1){
a[n]=1; //对数值中的每一个数进行记录
}
else{ //如果等于1 则说明出现过
printf("该数值中有重复的数值: ");
return 0;
}
}while ( x > 0);
return 0;
}
#include "stdio.h"
int main()
{
int i,j,n;
bool tag[10];
printf("输入整数:");
scanf("%d",&n);
for(i=0;i<10;i++)tag[i]=false;
j=n;
while(j){
if(tag[j%10])break;
tag[j%10]=true;
j=j/10;
}
if(j)printf("整数%d有重复的数字",n);
else printf("整数%d没有重复的数字",n);
return 0;
}