c语言作业:输入一个整数,判断该数的每位数字是否都不相同,如果是则输出yes,如果不是则输出no

作者&投稿:牟颖 (若有异议请与网页底部的电邮联系)
c语言作业:输入一个整数,判断该数的每位数字是否都相同,如果是则输出yes,如果不是则输出no~

C语言很久没写了,怕误导你

说下基本的算法吧,对一个整数进行求余10操作(x%10)可以得到个位数
比如512%10=51余2,余数既是个位数,再拿51%10=5余1,得到十位数,以此类推以得到每位整数,至于判断是否相同就很简单了

#include
main()
{
int x, y, z;
printf("输入一个小于100的整数
");
scanf("%d", &x);
for(y = x, z=x*x; y > 0; y /= 10, z /= 10)
{
if(y%10 != z%10)
break;
}
if(y == 0)
printf("%d是同构数
", x);
else
printf("%d不是同构数
", x);
}

不好意思啊,刚才分析错了,while循环是必要的,你的错误主要还是1.if(a=b)应该为if(a==b)
2.如果各位数字均不相同,flag=1,那么while循环无法结束...
我改了一下,
下面的代码好像可以了:#include "stdio.h"
void main()
{
int n,a=0,b,temp,flag=1;
scanf("%d",&n);
while(flag)
{
a=n%10;n/=10; temp=n;
for(b=temp%10;temp!=0;temp/=10)
{
if(a==b)
{
flag=0;
break;
}

}
if(n==0)
break;//跳出while循环
}
if(flag)
printf("yes\n");
else
printf("no\n");
}
原先我修改的程序,输入100,123,555都没有问题,但是输入112,445却也输出yes,很明显是不正确的,后来修改的程序,若输入112,445,输出no,是满足要求的....
你再好好分析一下....
希望对你有所帮助吧
上述程序,当输入18621时,仍然会输出yes,也是不正确的,问题可能出在for循环上,所以建议用while循环,(我试过,for循环这样写也是可以的:for(;temp!=0;temp/=10){b=temp%10;.....}最后的代码修改如下:
#include "stdio.h"
void main()
{
int n,a=0,b,temp,flag=1;
scanf("%d",&n);
while(flag)
{
a=n%10;//第一次循环时a为n的个位数字,在while内循环中分别和n的高位数字进行比较;第二次循环时,a为n的十位数字,在while内循环中和高位值进行比较(低位在上一循环中已经比较过了,不再比较).....然后依次类推,直到循环结束(如果n的每位数字都不同,那么a最高可为n的最高位数字)...
n/=10;
temp=n;
printf("%d,%d ",a,temp);//输出a的值,便于和b比较,输出temp的值,便于跟踪n的值
while(temp)
{b=temp%10;
printf("%d ",b);//输出b的值,便于和a进行比较
if(a==b)
{
flag=0;
break;//跳出while内循环
}
temp/=10;//for循环中,这一语句也能正常执行,如果用for循环,这一语句删除...
}
printf("\n");
if(n==0)
break;//跳出while外循环
}
if(flag)
printf("yes\n");
else
printf("no\n");
printf("%d,%d",a,b);//输出a,b的值,如果是yes的话,那么a,b值应该相等,如果是no的话,a,b的值是不相等的...
}
如果不想要输出那么多数据,也就是只输出yes或no,那么可以对照你的程序,把我添加的printf语句删除...
这个题用循环的确有些麻烦,如果用数组的话,可能要简单很多
呵呵

#include "stdio.h"
void main()
{
int n,a=0,b,flag=1;
scanf("%d",&n);//不需要while,否则没有相同位的进入死循环
a=n%10; n/=10;//a为个位数
for(;n!=0;n/=10)
{
b=n%10;//这句要放在for里面,b为取十位,百位***数
if(a==b)//判断是否相等
{
flag=0;
break;
}

}

if(flag)
printf("yes\n");
else
printf("no\n");
}

判断 语句 if(a==b) ==是判断是否等于 =是赋值 一定为真

你应该控制输入的位数,比如值允许输入个四位数,要不然后面不太好判断
你应该存储每一位的数字,然后相互之间进行比较,你的这个程序很难看懂。

逻辑不对


C语言作业编写一个程序输入学生分数,统计及格人数和算平均分
include<stdio.h>#include <stdlib.h>typedef struct list{ char number[10]; float mark;}COUNT;int main(){ COUNT aa[100]; int i; int count =0; float sum=0; for(i=1;i<=10;i++) { scanf("%s",aa[i].number); scanf("%g",&aa[i].mark)...

c语言,输入一个整数n和n个整数,输出这n个整数的最大值
include<stdio.h>int main(){int n,a,i,t;scanf("%d",&n);scanf("%d",&t); \/\/先读的第一个数要默认成最大的,不然,t的初值是不定的for(i=1;i<n;i++) \/\/循环中再读n-1个数{scanf("%d",&a);if(t

c语言作业求助
include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){int i,zs;char zfc[11];printf(" 请输入一个整数:");scanf("%d",&zs);itoa(zs,zfc,10);i=strlen(zfc)-1;printf(" 将 %s 倒置输出:",zfc);for(i;i>-1;i--)printf("%c",zfc[i]);return 0;}...

C语言作业: 从键盘输入3个整数,按照从小到大的顺序输出
include<stdio.h> void main(){ int a,b,c,t;printf("请输入三个整数:a b c\\n");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("排序后的三个整数为:%d,%d,%d\\n",a,b,c);} ...

向大神求助!急用C语言作业
第1题 源码:include <stdio.h>#define BUF_SIZE 256int main(){ int v = 0; char buf[BUF_SIZE] = {0}; while (1) { printf("输入一个不多于五位的正整数: "); fgets(buf, BUF_SIZE, stdin); if (sscanf(buf, "%d", &v) != 1) printf("输入的...

在C语言中如何实现用键盘输入一个字符串,并打印出来?
在C语言中输入字符串后然后打印出来的编程方法如下:1.首先需要先定义一个存放字符串的数组空间,如给字符串100个数组空间。2.接着使用gets()函数来获取键盘输入的字符串。一般格式为gets(定义的字符数组名)。3.然后再使用puts()函数来输出之前输入的字符串内容。一般格式puts(定义的字符数组名)。4....

跪求!一C语言答案!急需!输入一个一维整型数组,并找出数组元素中最大值...
include <stdio.h>#define LEN 50 void main(){ int a[LEN]={0},i,j,min=0,iMin=0,max=0,iMax=0;printf("请个输入整型数组元素(输入0表示输入结束):\\n");for (j=0; j<LEN; j++){ scanf("%d", &a[j]);if (a[j] == 0)break;}min=max=a[0];for (i=1; i<j; i...

c语言 作业 求助!!!
1、从键盘输入一个小于六位的正整数,判断它是几位数,并按照相反的顺序输出各位上的数字,如输入1234,输出为4321。include <stdio.h> void main(){ int a[6],i,j=0,b;scanf("%d",&b);for(i=0;i<6;i++){ a[i]=b%10;b\/=10;} for(i=0;i<6;i++){ if(a[i]!=0){ p...

c语言作业求完整答案,谢谢啦~
i <= 230; i++ ) { if (prime(i)) { printf("%d ", i); } }}结果:include <stdio.h>void main(){ int a = 0; printf("请输入一个数:\\n"); scanf("%d", &a); if (a >= 90) { printf("excellent\\n"); } else if (a...

一道c语言的作业,有以下一个函数,编写一个程序,输入x的值,输出y的值...
printf("请输入一个整数%d:",x);printf("最大值为:%d\\n",x);printf("最小值为:%d",z);上面这三句是什么意思?我不明白,根据你的题意,应该用多分支的if语句的格式,即:if(表达式1){语句序列1;} else if(表达式2){语句序列2;} ...else {语句序列n;} 代码如下:include "...

龙川县17341088772: 用C语言编程:输入一个整数,判断这个数是奇数还是偶数. -
典萧德瑞:[答案] #include "stdio.h" main() { int x; printf("请输入一个整数"); scanf("%d",&x); if(x%2 == 0) printf("%d是偶数\n",x); else printf("%d是奇数\n",x); }

龙川县17341088772: 用C语言编程:输入一个整数,判断这个数是奇数还是偶数. -
典萧德瑞: #include "stdio.h" main() { int x; printf("请输入一个整数"); scanf("%d",&x); if(x%2 == 0) printf("%d是偶数\n",x); else printf("%d是奇数\n",x); }C语言: 是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简...

龙川县17341088772: C语言编写程序从键盘输入一个整数,判断其正负,正数输出其相反数,负数输出零? -
典萧德瑞: #include <stdio.h> int main() { int x;scanf("%d",&x);printf("%d\n",x>0?-x:0);return 0; }

龙川县17341088772: 简单的c语言题目:输入一个正整数,判断是奇数或偶数、负数或非负数. -
典萧德瑞: #include<stdio.h>int main(void) {int number,a;scanf("%d",&a);if(a%2==0)printf("偶数!");elseprintf("奇数!");if(a==0){printf("\n0既不是整数也不是负数"); goto ab;}if(a<a*10)printf("\n正整数");elseprintf("\n负整数");ab:return 0; }

龙川县17341088772: C语言 输入一个整数x,判断其为奇数 还是偶数 -
典萧德瑞: x%2==1,判断奇数为Yes 偶数为No x%2==0,判断偶数为Yes 奇数为No

龙川县17341088772: C语言编程:十九、 从键盘任意输入一个数,判断这个数是不是完数 -
典萧德瑞: #includeint check(int x)//用来判断是否为完数 { int sum =0; int i; for(i=1;i{ if(x%i==0){sum += i;} } if(sum == x) return 1; else return 0; }main () {int i;printf ("输入一个整数:");scanf ("%d",&i);if (check(i)){printf("是完数");}else{printf ("不是完数");} }

龙川县17341088772: 有c语言写一函数,此函数输入为一整数功能为判断此输入整数是否为偶数,若是返回值 -
典萧德瑞: bool judge(int x){if(x % 2 ==0 ) return true; return false;}

龙川县17341088772: C语言编程:输入一个整数,判断此数是奇数还是偶数,还是非奇非偶?
典萧德瑞:#include "stdio.h" #include "math.h" void main() { int i,j; scanf("%d",&i); if(i>0){ j=fmod(i,2); if(j==1) printf("%d为奇数",i); else printf("%d为偶数",i);} else printf("%d非奇非偶",i); }

龙川县17341088772: 用c语言写一个程序,从键盘输入1个整数,判断并输出它是 -
典萧德瑞: rftrey

龙川县17341088772: 输入1个整数,判断该数是奇数还是偶数.(用C语言编程) -
典萧德瑞: #includevoid main() { int n; printf("输入抄一个整数2113:5261"); scanf("%d",&n); if(n%2==0) { printf("%d是偶数4102\n",n); } else { printf("%d是奇数1653\n",n); } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网