이 질문의 핵심은 숫자를 분리하는 것입니다. 예를 들어 119를 사용하면 결과는 1+1+9=11이 됩니다. 이렇게 하면 (1) 119%10을 사용하면 119를 10으로 나눈 나머지가 9가 되겠죠? 당신이 똑똑하다면 지금쯤 9가 분리되었다는 것을 발견했을 것입니다. (2) 그러면 119/10의 결과는 정수, 즉 11이 될 수 있습니다. 11을 10으로 나눈 나머지는 1이겠죠? 1이 또 분리된 건가요? (3) 결국 11/10의 결과는 1이 되고, 백의 자리도 분리가 됩니다. (4) 결국은 더하기만 하면 됩니다.
분리의 종료조건은 나눗셈 결과가 10보다 작은 경우입니다.
분리 과정에서 배열을 사용하여 분리된 숫자를 저장할 수 있습니다.
구체적인 코드는 다음과 같습니다.
/*방법 1은 재귀적 방법입니다. 이 방법이 더 간단하고 이해하기 가장 좋은 것 같습니다.*/
#포함
int 표시(int num)
{
if(num
return num;/*재귀 종료*/
그밖에
반환 숫자%10+표시(숫자/10);
}
void main()
{
int num,sum;
printf("정수를 입력하세요:");
scanf("%d",&num);
sum=표시(숫자);
printf("각 숫자의 합 결과: %dn",sum);
}
/*방법 2는 배열을 사용하여 수행됩니다. 방법이 너무 복잡할 수 있습니다. 좋은 방법이 있으면 공유해 주세요.*/
#포함
void main()
{
int 값[10];
int 숫자;
printf("정수를 입력하세요:");
scanf("%d",&num);
동안(num=10000)
{
printf("이 코드는 현재 10000 이하의 4자리 숫자 계산만 지원하며 입력된 정수가 유효하지 않습니다. 다시 입력하세요:");
scanf("%d",&num);}
if(숫자>=0&숫자 printf("결과는: %dn",num);
그렇지 않으면(숫자>=10&숫자 {
값[0]=num%10;
값[1]=숫자/10;
printf("결과는: %dn", value[0]+value[1]);
}
그렇지 않으면(숫자>=100&숫자 {
value[0]=num%10; /*한 자리 숫자로 구분됨*/
value[1]=num/10; /*분리할 새 숫자 가져오기*/
value[2]=value[1]%10; /*별도의 10자리*/
value[3]=value[1]/10; /*백 자리 구하기*/
printf("결과는: %dn", value[0]+value[2]+value[3]);
}
그밖에
{
value[0]=num%10; /*한 자리 숫자로 구분됨*/
value[1]=num/10; /*분리할 새 숫자 가져오기*/
value[2]=value[1]%10; /*별도의 10자리*/
value[3]=value[1]/10; /*분리할 새 숫자 가져오기*/
value[4]=value[3]%10; /*백 자리 구하기*/
value[5]=value[3]/10; /*천 단위로 숫자 가져오기*/
printf("결과는: %dn", value[0]+value[2]+value[4]+value[5]);
}
}
C 언어 배열에 관한 질문은 C 전문가가 도와드릴 수 있습니다
메인()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //10개 요소의 배열이 정의되고 각 요소는 int 유형입니다. p 포인터가 정의되었습니다.
p=a; //p 포인터는 배열 a를 가리킵니다
printf(“%xn”,p); //출력에는 p의 주소가 16진수로 표시됩니다.
printf (“%xn”,p+9); //p+9는 주소를 9 int 형식 거리만큼 이동한 다음 16진수 표시로 변경하는 것을 의미합니다.
}
정말로 주소를 출력하고 싶다면 %p 형식을 사용하면 됩니다. 기본값은 16진수입니다. 효과는 %x와 동일하지만 일부 연산이 생략됩니다.
int 유형의 변수가 2바이트를 차지하면
첫 번째 printf 문의 출력은 194이고, 두 번째 printf 문의 출력 결과는
이 질문은 첫 번째 요소부터 마지막 요소까지 몇 바이트를 차지하는지 묻는 의미입니다
0x194 +2* 9=
직접 계산해 보세요. 변환하기에는 너무 게으른데요.
194는 배열의 첫 번째 주소를 16진수로 나타냅니다. Int형은 2바이트를 차지하므로 9개 요소를 이동하는 거리가 2*9바이트가 되어 주소가 표시됩니다.
이것은 메모리에 있는 유형의 표현 형식에 깊이 들어가 있습니다. +1은 요소 유형을 이동하는 거리를 의미한다는 점을 기억하세요.
배열에 관한 몇 가지 간단한 C 언어 프로그래밍 질문입니다. 감사합니다!
#include "stdio.h"
void main()
{int a[10];
int i,max;
for(i=0;i scanf("%d,",&a[i]);
max=a[0];
for(i=1;i {
if(최대
max=a[i];
}
printf("최대값: %d",max);
}
두 번째 질문:
#include "stdio.h"
void main()
{
int i,a[10];
long int sum; /*sum은 총 점수입니다*/
부동 평균; /*평균*/
for(i=0;i {
printf("%d 학생의 점수를 입력하세요:", (i+1));
scanf("%d",a[i]);
printf("n");
}
for(i=0;i sum=sum+a[i];
평균=합계/10.0;
printf("학생 10명의 평균 점수는: %f", 평균);
}
질문 3:
#include "stdio.h"
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int c[10];
for(i=0;i
c[i]=a[i]+b[i];
for(i=0;i
printf("%d,",c[i]);
}
질문 4:
#include "stdio.h"
{
int i,a[100];
int cx;
for(i=1;i
{
a[i]=i+2;
}
scanf("조회하려는 값을 입력하세요: %d",cx);
for(i=0;i
if(cx==a[i])
{
printf("%d번째 숫자는 쿼리하려는 값입니다!");
휴식;}
그밖에
printf("입력한 값이 이 배열에 없습니다.")
}
위 내용은 C 언어로 정수의 자릿수의 합을 계산하는 프로그램을 작성하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!