哪里写错了??
#include<stdio.h>int main()
{
int n,i,temp=0,k=0,k1,jg;
scanf("%d",&n); int a;
for(i=0;i<n;i++)
{
scanf("%d",&a);
k1=0;
for(;a%10!=0;)
{
k1+=a%10;
a/=10;
}
if(k1>k)
{
k=k1;
jg=a;
temp=a;
}
else if(k1=k)
{
if(a>temp)
jg=a;
}
}
printf("%d",jg);
return 0;
}
结果输出为什么为0;
#include<stdio.h>
int main()
{
int n,i,temp=0,k=0,k1,jg;
scanf("%d",&n); int a;
for(i=0;i<n;i++)
{
scanf("%d",&a);
k1=0;
int num=a;//////
for(;num;)///////
{
k1+=num%10;
num/=10;
}
if(k1>k)
{
k=k1;
jg=a;
temp=a;
}
else if(k1==k)/////
{
if(a>temp)
jg=a;
}
}
printf("%d",jg);
return 0;
} =和==没有分清
else if(k1==k)
{
if(a>temp)
jg=a;
} 本帖最后由 jackz007 于 2022-10-28 14:11 编辑
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void random(int d[] , int m , int n)
{
time_t t ;
if(n > 0 && m > 0) {
srand((unsigned long long) time(& t)) ;
for(int i = 0 ; i < n ; i ++) for(int j = 0 ; j < m ; j ++) d = rand() % 10 ;
}
}
void swap(int * a , int * b)
{
int t ;
t = * a ; * a = * b ; * b = t ;
}
void sort(int d[] , int n)
{
for(int i = 0 ; i < n - 1 ; i ++) for(int j = i + 1 ; j < n ; j ++) if(d < d) swap(& d , & d) ;
}
int comp(int d1[] , int d2[] , int n)
{
int i ;
for(i = 0 ; i < n && d1 == d2 ; i ++) ;
return (i == n) ? 0 : (d1 > d2) ? 1 : -1 ;
}
int main()
{
int a , b , d , e , i , j , k , m = 12 , n , t ;
scanf("%d", & n) ;
random(a , m , n) ;
for(i = 0 ; i < n ; i ++) for(j = 0 ; j < m ; j ++) b = a ;
for(i = 0 ; i < n ; i ++) {
printf("[%2d] : %d" , i + 1 , a) ;
for(j = 1 ; j < m ; j ++) printf(" %d" , a) ;
printf("\n") ;
}
printf("\n") ;
for(i = 0 ; i < n ; i ++) for(j = d = 0 ; j < m ; j ++) d += a ;
for(i = 0 ; i < n ; i ++) sort(a , m) ;
for(i = 0 ; i < n ; i ++) e = i ;
for(i = 0 ; i < n - 1 ; i ++) for(j = i + 1 ; j < n ; j ++) if(d] < d]) swap(& e , & e) ;
for(k = 0 ; k < n && d] == d] ; k ++) {
printf("[%2d] : %d" , e + 1 , b]) ;
for(i = 1 ; i < m ; i ++) printf(" %d" , b]) ;
printf("\n") ;
}
if(k > 1) {
for(i = 0 ; i < k - 1 ; i ++) for(j = i + 1 ; j < k ; j ++) if(comp(a] , a] , m) < 0) swap(& e , & e) ;
printf("\n") ;
printf("[%2d] : %d" , e + 1 , b]) ;
for(i = 1 ; i < m ; i ++) printf(" %d" , b]) ;
printf("\n") ;
}
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
8
[ 1] : 3 8 0 5 8 6 9 4 8 2 3 1
[ 2] : 9 6 1 3 7 0 0 2 2 8 1 9
[ 3] : 2 5 1 2 8 4 1 9 9 5 2 0
[ 4] : 5 9 0 5 4 9 6 7 6 8 5 7
[ 5] : 7 6 7 5 1 4 4 3 7 4 8 3
[ 6] : 9 1 8 7 3 9 7 6 6 8 5 2
[ 7] : 5 5 2 6 0 3 5 7 5 3 3 4
[ 8] : 0 0 6 4 8 8 2 8 8 0 0 0
[ 4] : 5 9 0 5 4 9 6 7 6 8 5 7
[ 6] : 9 1 8 7 3 9 7 6 6 8 5 2
[ 6] : 9 1 8 7 3 9 7 6 6 8 5 2
D:\\C> jhq999 发表于 2022-10-28 11:47
1. 为什么要 有int num=a这一步,直接a有什么问题???
2. for的条件为什么只有num这样不会无限循环吗?
原来是我错付了 发表于 2022-10-28 14:59
1. 为什么要 有int num=a这一步,直接a有什么问题???
2. for的条件为什么只有num这样不会无限循环吗 ...
1、你后面不是还有让jg=a吗?如果用a第二层循环结束a全等于0
2、num/=10;最后num肯定等于零
页:
[1]