c++
중첩for문
|
결과
홀수를 입력받아 마름모출력 프로그램
#include <iostream>
using namespace std;
int in_put();//입력 함수
void logenze(int& a);//마름모 출력함수
int main()
{
int a;
while(1)
{
a=in_put();
if(a==0)//0이 입력되면 종료
{
break;
}
if(a%2==0)//짝수이면 다시 입력 받음
{
cout<<"홀수만입력하세요!"<<endl;
continue;
}
logenze(a);//마름모 함수 콜
}
return 0;
}
int in_put()//입력함수 원형
{
int input;
cout<<"홀수입력(0 to exit!)";
cin>>input;//홀수 입력
return input;//입력값 리턴
}
void logenze(int& a)//마름모 함수 원형
{
int temp=a/2;//사각형 한 라인의 중앙점
int t1=0;
int t2=0;
int c=1;
int c1=1;
int c2=temp+1;
int c4=temp+1;
for(int i=0;i<a;i++)
{
for(int j=0;j<a;j++)//처음 실행되는for문
{
if(((i==0) && (j==temp))||((i==a-1)&&(j==temp)))
{ //맨 윗행중앙점과 맨 아래행 중앙점 찍기
cout<<"*";
}
else if(((i==temp) && (j==0))||((j==a-1)&&(i==temp)))
{ //맨 왼쪽 열의 중앙과 맨오른쪽 열 중앙에 점 찍기
cout<<"*";
}
else if(i==c&&j==temp-c)//윗쪽의 왼쪽 대각선점찍기
{
cout<<"*";
t1=c;
c++;
}
else if(i==c1&&j==temp+c1)//윗쪽의 오른쪽 대각선점찍기
{
cout<<"*";
t2=c1;
c1++;
}
//======================
else if(i==c2&&j==temp-t1)//아랫쪽의 왼쪽 대각선점찍기
{
cout<<"*";
c2++;
t1--;
}
else if(i==c4&&j==temp+t2)//아랫쪽의 오른쪽 대각선점찍기
{
cout<<"*";
c4++;
t2--;
}
else//'*'찍는곳 말고는 빈칸 출력
{
cout<<" ";
}
}
cout<<endl;//개행
}
}
결과
const
포인터가 가리키는 변수 상수화
포인터 상수화
포인트가 가리키는 변수 상수화 + 포인터 상수화
포인터 p가 가리키고 있는 변수의 값도 변경하지 못하고, 포인터 p 는 프로그램이 종료될때까지 a만 가르켜야 한다
===========================================================================================================
c 언어
버블정렬
다중배열 배열의 주소 표시법 #include <stdio.h> int main() { int i; int j; int array[3][4]={{15,23,45,56}, {34,52,76,23}, {43,62,91,84}}; printf("&array[0][0]= %p\n",&array[0][0]);//그행의첫주소 1행1열 printf("&array[1][0]= %p\n",&array[1][0]);//2행1열 printf("&array[2][0]= %p\n",&array[2][0]);//3행1열 printf("array= %p\n",array);//배열시작주소이자1행1열주소 printf("array[0]= %\n",array[0]); //그 행의 첫주소 1행1열 printf("array[1]= %p\n",array[1]);//2행1열 printf("array[2]= %p\n",array[2]);//3행1열 printf("array+1= %p\n",array+1);//그행의 첫주소 1행1열 printf("array+2= %p\n",array+2);//2행1열 printf("array+3= %p\n",array+3);//3행1열 printf("&a %p\n",&array+1);//배열주소전체값을 플러스 int *p=*array; for(i=1;i<13;i++) { printf("%d ",*p[i-1]); if(i%4==0) { printf("\n"); } } return 0; } 배열의 값과 주소 표시법 |
2)array[0]은array[0][0]~[0][1]가지므로 = array==array[0]==&array[0][0]
3)포인터나 연산에서 1증가하면 원소크기만큼 증가 즉(array+1)==array[1]==1008이고,(array[0]+1)은&array[0][1]==1004가된다
4)array[0]은array[0][0]이므로 *(array[0])==array[0][0]가된다. array==&array[0]로 첫번째 원소의 주소이고 *array==array[0]이다. array[0]==&array[0][0]이다.
따라서 **array == *(array[0])==array[0][0]가 된다. 따라서 array는 주소의 주소이다.
함수 인자로써의 배열
배열의 이름이 배열의 주소이기 때문에 함수 인자에 주소를 전달한다.
average함수 배열의 주소가 전달되기 때문에 int *sp 처럼 포인터로 받는다
결과
score주소와 인수로 받은 sp은 주소가 같다.
배열의 넘겨받는 형식인수
float average(int *s, int n)
float average(int s[3],int n)
float average(int s[],int n)
다차원 배열의 형식 인수
float average(int s[][3], int n)
int *s vs int s[]
둘다 같은 의미를 지닌다.
int s[] 는 함수의 매개변수 선언시에만 사용 가능
'코스웨어 > 10년 스마트폰BSP' 카테고리의 다른 글
[BSP]업무일지-김상식-20100616 (0) | 2010.06.16 |
---|---|
[BSP] 업무일지 - 김기찬 - 20100615 (1) | 2010.06.15 |
[BSP]-업무일지-정호영-20100614 (1) | 2010.06.14 |
[BSP]업무일지 -김강수 - 20100611 (2) | 2010.06.13 |
[BSP]-업무일지-임종현-20100610 (1) | 2010.06.10 |
[BSP]업무일지-서유해-20100608 (1) | 2010.06.08 |
[BSP]업무일지 - 서동준 - 20100607 (1) | 2010.06.08 |
스마트폰BSP - 회식 20100520 (0) | 2010.05.24 |