반응형
p328의 도전 1
내가 짠 코드
#include<stdio.h>
void OddNumber(int * arr,int len){ //홀수 함수
for(int i=0;i<len;i++){
if(arr[i]%2 == 1)
printf("%d ",arr[i]);
}
}
void EvenNumber (int * arr,int len){ //짝수함수
for(int i=0;i<len;i++){
if(arr[i]%2 == 0)
printf("%d ",arr[i]);
}
}
int main(){
int arr[10];
int len =sizeof(arr)/sizeof(int);
for(int i=0; i<len;i++){
printf("숫자를 입력하셈");
scanf("%d",&arr[i]);
}
printf("홀수 :");
OddNumber(arr, len);
printf("\n짝수 :");
EvenNumber(arr, len);
return 0;
}
p328 도전 2번
#include<stdio.h>
#include<math.h>
void Binary(int * num); //포인터를 사용한 이진수 함수
int main(){
int num, result;
printf("숫자를 입력하세요 : ");
scanf("%d",&num);
Binary(&num);
printf("이진수 : %d",num);
return 0;
}
void Binary(int * num){
int a[20], i=0;
int same = (*num); // 코드를 깔끔하게 하기 위해 main 함수의 num값을 same에 할당
while (same>0)
{
a[i]=same%2;
same/=2;
i++;
}
while (i>0)
{
same += (a[i-1]*(pow(10,i-1)));
i--;
}
*num=same; //same을 다시 num에 할당
}
3번 - 포인터 안쓴 버전
하다가 출력이 자꾸 안돼서 계속 고민했는데
알고보니 내가 배열 끝을 자꾸 +1로 생각해서 그런거였음....
배열 자꾸 실수하는데 생각 잘 좀 합시당...
#include<stdio.h>
int main(){
int arr[10];
int len =10;
int oddnum=0, evennum=0; //배열에서 홀수 번째 짝수번째가 다르게 걸림으로 따로 선언해줌
for(int i=0;i<len;i++){
int num;
printf("숫자를 입력하시오");
scanf("%d",&num);
if((num%2) == 1){ //홀수라면
arr[oddnum]=num;
oddnum++;
}
else{ //짝수라면
arr[9-evennum]=num;
evennum++;
}
}
for(int i=0;i<len;i++){ // 배열 출력
printf("%d ",arr[i]);
}
return 0;
}
포인터 쓴 버전
#include<stdio.h>
void Array(int * arr,int len); //포인터 사용한 배열해주는 함수 선언
int main(){
int arr[10];
int len =10;
Array(arr,len); //배열 주소랑 길이를 매개변수로 전송
for(int i=0;i<len;i++){ // 배열 출력
printf("%d ",arr[i]);
}
return 0;
}
void Array(int * arr, int len){
int oddnum=0, evennum=0; //배열에서 홀수 번째 짝수번째가 다르게 걸림으로 따로 선언해줌
for(int i=0;i<len;i++){
int num;
printf("숫자를 입력하시오");
scanf("%d",&num);
if((num%2) == 1){ //홀수라면
arr[oddnum]=num;
oddnum++;
}
else{ //짝수라면
arr[9-evennum]=num;
evennum++;
}
}
}
4번
- 제발 배열 개수랑 배열에 값 채울때 쓰는 숫자랑 다르다는거 잊지말자!!! 계속 실수함 이거
- i++하고 나서 이건 배열 개수니까 배열값 측정할때는 i-1해야되는데 왜 계속 생각을 못하니
#include<stdio.h>
void Palindrome (char * lang); //회문 함수
int main(){
char arr[20];
printf("문자열 입력");
scanf("%s",arr);
Palindrome(arr);
return 0;
}
void Palindrome(char * lang){
int i=0,j=0;
while (lang[i]!= '\0')
{
i++;
}
while (j<=(i/2))
{
if(lang[i-1]!=lang[j]){ //회문이 아니라면
printf("회문이 아닙니다") ;
return;
}
i--;
j++;
}
printf("회문입니다");
}
반응형
'개발 공부 > C언어' 카테고리의 다른 글
[실험] #19 C언어 strncpy, strncat와 \0, \n 대체 어디부터 어디까지 복사하는거야! (0) | 2022.08.07 |
---|---|
#18 [열혈 C 프로그래밍] 도전! 프로그래밍3 - 1번, 2번, 3번, 4번, 5번, 6번 코드와 해설 (0) | 2022.08.04 |
#16 C언어 *의 피연자는 포인터여야 하는데 Int 형식이 있음 오류 (0) | 2022.08.04 |
#15 C언어 [도전! 프로그래밍3/4번] srand 여러번 쓰면 안되는 이유 (0) | 2022.08.02 |
#14 C언어 반복문과 조건문에서의 break; continue; return;의 차이점 (0) | 2022.08.02 |
댓글