필자는 java, spring 만 공부해봤으며 자바만 우직하게 파는 무식? 한 놈이었습니다.
시험에 앞서, c언어를 한번도 해본 적이 없습니다,,
이에 위기감을 느껴 벼락치기로 끝내보려합니다,, 또한 처음 접하므로 기본부터 시작하려합니다.
기본이 약하신 분들은 미흡하나마 보시고 도움이 되시면 좋겠습니다.
#include <stdio.h>
int main(void)
{
int a=1, sum=0;
while(a<=10)
{
sum+=a;
a++;
}
printf("1+2+...+10=%d\n", sum);
}
#include <stdio.h>
int main(void){
int i, sum=0;
while(i>0){
sum+=i;
}
printf("양의 정수합 "+sum);
}
clang: error: linker command failed with exit code 1 (use -v to see invocation)
????????? 뭐야 이게,
라고 생각했지만 바로 바보같은 코드임을 깨우쳤습니다.
ㅋㅋㅋㅋ 입력을 안받으면 무한 반복되는데... 또한 i 값 초기화도 안했...
밤샘 했더니 머리가 안돌아가네요 ㅜ ㅎㅎ
#include <stdio.h>
int main(void){
int i, sum=0;
printf("입력 해줭");
scanf("%d", &i);
while(i>0){
sum+=i;
printf("숫자 입력:");
scanf("%d", &i);
}
printf("sum= %d", sum);
}
=
+, -, *, /, &, ++, --
<, >, <=, >=, ==, !=
&&, ||, !
! : NOT(논리) 참이면 거짓, 거짓이면 참
+=, -=, *=, /=, %= 등...
?
&, |, ~, ^, <<, >>
#include <stdio.h>
int main(void){
int i, j, temp, a[5];
for(i=0;i<5;i++){
printf("입력 데이터 a[%d]", i);
scanf("%d", &a[i]);
}
for(i=0; i<5;i++){
for(j=0;i<5;j++){
if(a[i]>a[j]){
// 배열 a[i]가 크다면 temp 변수에 넣어주고 저장한 다음에 a[i] 변수는 빈 공간임으로,
// 그 자리를 a[j]를 대입해주고, a[j]를 temp변수에 넣어주면서 오름차순 정렬 하는 것이다.
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n\n 정렬(오름차순)후의 데이터\n\n");
for(i=0;i<5;i++){
printf("a[%d]=%3d", i, a[i]);
}
}
int test=7;
데이터형 배열명[요소의 개수] = { 초기값1,초기값2,초기값3,...};
(자바는 배열의 크기가 다르면 에러남. (가바지 컬렉션 때문인가?? 에러 나는 이유를 모르겠다. 이 부분은 왜 그런지 체킹 해보자.)
- 정말 바보같았다. 왜냐하면, 씨언어 컴파일러 같은 경우엔 덜 할당되면 return 0을 한다. 그러나 자바 같은 경우에는 그냥 그 공간이 남으면서 돌고 있는 것이다. 한마디로 메모리 낭비 중인것이다.
=> 결론 : 둘다 덜 할당되면 돌아가지만, 메모리 낭비중인 것이며, 범위를 넘어선다면 out of range인 것이다.
(바보같게 이런 간단한 것조차 짧게나마 고민을 해봤다니...)
#include<stdio.h>
int test[6]= {70,50,60,60,0,100};
int main(void){
int i, sum=0;
double avg;
for(i=0;i<6;i++){
sum+=test[i];
}
avg= sum/6;
printf("%.1f는 평균입니다.", avg);
}
(참고로, error 코드입니다.
자바에서 메인함수쓰고 상속받게해서 새로운 클래스로 작성하는 것이 익숙해서 저도 모르게 배열을 메인 함수 위로 빼버려서 에러가 난 것입니다.)
새로운 언어를 습득하면서 기본적인 것을 당연하게 놓치면서, 에러가 발생할 때마다 이렇게 다시 한번 상기시키는 것이 좋은 것 같습니다.
필자는 2차 배열 까지만 사용하는 것을 권장합니다.
(3차 까지도 괜찮지만, 복잡해짐)