原来是我错付了 发表于 2022-10-28 11:34:11

哪里写错了??

#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;

jhq999 发表于 2022-10-28 11:47:27

#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;
}      

须弥芥子 发表于 2022-10-28 11:49:23

=和==没有分清
      else if(k1==k)
      {
            if(a>temp)
                jg=a;
      }

jackz007 发表于 2022-10-28 14:01:44

本帖最后由 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>

原来是我错付了 发表于 2022-10-28 14:59:27

jhq999 发表于 2022-10-28 11:47


1. 为什么要 有int num=a这一步,直接a有什么问题???
2. for的条件为什么只有num这样不会无限循环吗?

jhq999 发表于 2022-10-29 07:50:48

原来是我错付了 发表于 2022-10-28 14:59
1. 为什么要 有int num=a这一步,直接a有什么问题???
2. for的条件为什么只有num这样不会无限循环吗 ...

1、你后面不是还有让jg=a吗?如果用a第二层循环结束a全等于0
2、num/=10;最后num肯定等于零
页: [1]
查看完整版本: 哪里写错了??