#include <stdio.h>
#define HOWMANY 50000
void processSieve(int[]);
int getLower();
int getUpper(int);
void showPrimes(int[], int, int);
int main()
{
int sieve[HOWMANY+1]; // The array of true/false
int lower = 1, upper = HOWMANY;
processSieve(sieve);
lower = getLower();
upper = getUpper(lower);
showPrimes(sieve, lower, upper);
}
void processSieve(int sieve[HOWMANY+1]) // 1. 1~50000까지의 소수들을 구분
{
int i, n;
for (n=2; n<HOWMANY; n++)
{
for(i=2; i<=n; i++)
{
if (n==i)
{
sieve[n]=1;
break;
}
else if (n%i == 0)
{
sieve[n]=0;
break;
}
}
}
}
int getLower(void) // 2. 시작값 설정
{
int lower;
do {
printf("Please enter the lower boundary (between 1 and 50000) ");
scanf("%d", &lower);
} while(lower<1 || lower>50000);
printf("\n");
return lower;
}
int getUpper(int lower) // 3. 끝값 설정
{
int upper;
do {
printf("Please enter the upper boundary (between %d and 50000) ", lower);
scanf("%d", &upper);
} while(upper<=lower || upper>50000);
printf("\n");
return upper;
}
void showPrimes(int sieve[HOWMANY+1], int lower, int upper) // 4. 시작값과 끝값 사이에서 차이가 6인 것을 카운트 후 프린트
{
int i, count=0;
printf("Here are all of the sexy prime pairs in the range %d to %d, one pair per line:\n", lower, upper);
for (i=lower; i<=upper-6; i++)
{
if(sieve[i]==1 && sieve[i+6]==1)
{
printf("%d and %d\n", i, i+6);
count++;
}
}
printf("There were %d sexy prime pairs displayed.", count);
}
#include <stdio.h>
int reverse(int n);
void palindrome(int n);
int main()
{
int n;
printf("Please enter a number: ");
scanf("%d", &n);
reverse(n);
palindrome(n);
return 0;
}
int reverse(int n)
{
int rn=0, i, o=0;
for(i=n; i>0; i/=10)
{
o = i%10;
rn = rn*10 + o;
}
return rn;
}
void palindrome(int n)
{
int count=0, i=0, rn=reverse(n);
for(i=n; i!=rn; )
{
i += rn;
rn = reverse(i);
count++;
}
if (1000<count || i>2000000000)
printf("%d is not a panlindrome ");
else
printf("%d %d", count, i);
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 100
#define COL 100
int n, m, i, j;
int count=0;
int a[ROW][COL]={0,};
void dis1mine (int n, int m, int a[][COL]);
void dis2mine (int n, int m, int a[][COL]);
void main()
{
srand((unsigned)time(NULL));
printf("지뢰밭의 행과 열의 크기를 입력하시오: \n");
scanf("%d %d", &n, &m);
printf("\n");
dis1mine(n, m, a);
dis2mine(n, m, a);
}
void dis1mine(int n, int m, int a[][COL])
{
for(i=1; i<n+1; i++)
{
for(j=1; j<m+1; j++)
{
a[i][j]=rand()%5;
if(a[i][j]==1)
printf("* ");
else
printf("·");
}
printf("\n");
}
printf("\n");
}
void dis2mine (int n, int m, int a[][COL])
{
for(i=1; i<n+1; i++)
{
for(j=1; j<m+1; j++)
{
count=0;
if(a[i][j]==1)
{
printf("* ");
}
else if(a[i][j]!=1)
{
if(a[i-1][j-1]==1) count++;
if(a[i-1][j]==1) count++;
if(a[i-1][j+1]==1) count++;
if(a[i][j+1]==1) count++;
if(a[i+1][j+1]==1) count++;
if(a[i+1][j]==1) count++;
if(a[i+1][j-1]==1) count++;
if(a[i][j-1]==1) count++;
printf("%d ", count);
}
}
printf("\n");
}
}
#include <stdio.h>
#define STUDENT 1000
void main()
{
int i, n;
float sum=0, mean;
float a[STUDENT]={0, };
printf("학생 수를 입력하시오: ");
scanf("%d", &n);
for(i=0; i<n; i++)
{
printf("쓴 금액 입력: ");
scanf("%f", &a[i]);
sum+=a[i];
}
mean = sum/n;
sum=0;
for(i=0; i<n; i++)
if(a[i]<mean)
sum+=mean-a[i];
printf("전달해야할 금액: %f", sum);
}
#include <stdio.h>
#include <string.h>
#define ENTRY 1000
#define LENGTH 16
#define TEXT 80
void main(){
int n, i, j, count=0;
char dict[ENTRY][LENGTH];
char text[TEXT];
char *word1[ENTRY];
char *token;
char seps[]=" ";
char word2[ENTRY][LENGTH];
scanf("%d", &n);
fflush(stdin);
for(i=0; i<n; i++){
fgets(dict[i], sizeof(dict[i]), stdin);
dict[i][strlen(dict[i])-1]=NULL;
}
printf("\n");
fgets(text, sizeof(text), stdin);
text[strlen(text)-1]=NULL;
token=strtok(text, seps);
for(i=0; token!=NULL; i++){
word1[i]=token;
token=strtok(NULL, seps);
count++;
}
printf("\n");
for(i=0; i<count; i++){
for(j=0; j<n; j++){
if(strlen(word1[i])==3 && strlen(dict[j])==3)
strcpy(word2[i], dict[j]);
else if(strlen(word1[i])==6 && strlen(dict[j])==6)
strcpy(word2[i], dict[j]);
else{
if(word1[i][2]==word1[i][3] && dict[j][2]==dict[j][3])
strcpy(word2[i], dict[j]);
else if(word1[i][3]== dict[j][3] && word1[i][1]=='q' && dict[j][1]=='p')
strcpy(word2[i], dict[j]);
else if(word1[i][3]== dict[j][2])
strcpy(word2[i], dict[j]);
else if(word1[i][0]=='b' && dict[j][0]=='d')
strcpy(word2[i], dict[j]);
}
}
}
for(i=0; i<count; i++){
printf("%s ", word2[i]);
}
}
#include <stdio.h>
#include <string.h>
#define VOTER 1000
#define NAME 80
#define ENTRY 20
void main(){
int i, j, n, result=1;
int max=0, min=0;
int vote[VOTER][ENTRY];
char cdd[ENTRY][NAME];
scanf("%d", &n);
fflush(stdin);
for(i=0; i<n; i++){
fgets(cdd[i], sizeof(cdd[i]), stdin);
cdd[i][strlen(cdd[i])-1]=NULL;
}
for(i=0; i<5; i++)
for(j=0; j<n; j++)
scanf("%d", &vote[i][j]);
do{
int sum[ENTRY]={0};
for(i=0; i<5; i++){
if(vote[i][0]>0)
sum[vote[i][0]-1]++;
else
sum[vote[i][1]-1]++;
}
for(j=0; j<n; j++){
if(sum[max]<sum[j])
max=j;
if(sum[min]>sum[j])
min=j;
}
for(i=0; i<5; i++)
if(vote[i][0]==min+1)
vote[i][0]=-1;
if(sum[max]> 5.0/2.0)
result=0;
}while(result!=0);
printf("\n");
printf("%s", cdd[max]);
}
#include <stdio.h>
#define SIZE 8
void in(int queue);
void out(int queue);
int queue[SIZE]={1, 2, 3, 4, 5, 6, 7, 8, 9};
int front=-1, rear=-1;
int main(){
int n, result=1;
do{
printf("input number: ");
scanf("%d", &n);
if(n==-1)
result=0;
else if(n!=0)
in(queue);
else if(n==0)
out(queue);
}while(result!=0);
return 0;
}
void in(int queue){
front++;
if(front>=8)
printf("queue full!\n");
}
void out(int queue){
rear++;
if(front==rear || rear>=8)
printf("queue empty!\n");
else
printf("[%d]\n", rear+1);
}
#include <stdio.h>
#define ROW 10
#define COL 20
void main(){
int i, j, col, weight;
float temp0, temp1, temp2, temp3;
int temp=0, result=0;
int sum_value=0, sum_weight=0;
int sum_v1, sum_v2, sum_w1;
int stolen[COL]={0};
float bag[ROW][COL];
scanf("%d %d", &col, &weight);
for(i=0; i<2; i++)
for(j=0; j<col; j++)
scanf("%f", &bag[i][j]);
for(i=0; i<col; i++){
bag[2][i]=bag[0][i]/bag[1][i];
bag[3][i]=i;
}
for(i=0; i<col; i++){
for(j=0; j<col-1; j++){
if(bag[2][j]<bag[2][j+1])
{
temp2=bag[2][j];
bag[2][j]=bag[2][j+1];
bag[2][j+1]=temp2;
temp3=bag[3][j];
bag[3][j]=bag[3][j+1];
bag[3][j+1]=temp3;
temp0=bag[0][j];
bag[0][j]=bag[0][j+1];
bag[0][j+1]=temp0;
temp1=bag[1][j];
bag[1][j]=bag[1][j+1];
bag[1][j+1]=temp1;
}
}
}
do{
for(i=0; i<col; i++){
if(sum_weight+bag[1][i]>weight){
sum_v1=sum_value-bag[0][i-1]+bag[0][i];
sum_w1=sum_weight-bag[1][i-1]+bag[1][i];
if(sum_v1>sum_value && sum_w1<=weight){
sum_value=sum_v1;
sum_weight=sum_w1;
stolen[i-1]=0;
stolen[i]=bag[3][i];
result=1;
}
else
result=1;
}
else if (sum_weight==weight)
result=1;
else{
sum_value+=bag[0][i];
sum_weight+=bag[1][i];
stolen[i]=bag[3][i];
}
}
}while(result==0);
printf("\n");
printf("Max value: %d\n", sum_value);
for(i=0; i<col; i++){
for(j=0; j<col-1; j++){
if(stolen[j]>stolen[j+1]){
temp=stolen[j];
stolen[j]=stolen[j+1];
stolen[j+1]=temp;
}
}
}
for(i=0; i<col; i++)
if(stolen[i]!=0)
printf("%d ",stolen[i]);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char str1[100];
char str2[100];
float num2;
int i, num1;
void reverseString (char *str);
void getString (char *str);
int compareString (char *strl, char *str2);
int strToInteger (char *str);
float strToFloat (char *str);
int main(){
getString(str1);
getString(str2);
reverseString(str1);
reverseString(str2);
printf("\n");
if(compareString(str1, str2)==1)
printf("Two strings are same\n");
else if(compareString(str1, str2)==0)
printf("Two strings are not same\n");
printf("\n");
compareString(str1, str2);
num1=strToInteger(str1);
printf("The integer string is: %d\n", num1);
printf("\n");
num2=strToFloat(str2);
printf("The float string is: %0.2f\n", num2);
printf("Number [%d] + Number[%0.2f] is %0.2f\n", num1, num2, (float) num1+num2);
}
void reverseString (char *str){
int length=0;
char temp;
for(i=0; str[i]!=NULL; i++)
length++;
for(i=0; i<length/2; i++){
temp=str[i];
str[i]=str[length-1-i];
str[length-1-i]=temp;
}
printf("The reverse order of the first string is: %s\n", str);
}
void getString (char *str){
printf("Please enter your string: ");
gets(str);
printf("The string you first entered is: %s\n", str);
printf("\n");
}
int compareString (char *strl, char *str2){
int count=0;
int result;
for(i=0; str1[i]!=NULL; i++)
if(str1[i]!=str2[i])
count++;
if(count==0) result=1;
else result=0;
return result;
}
int strToInteger (char *str){
int result=0, negative=1;
printf("Please enter your integer string: ");
gets(str);
if(*str=='-'){
negative=-1;
str++;
}
while(*str){
result = result*10 + *str - '0';
str++;
}
return result*negative;
}
float strToFloat (char *str){
float result1=0.0, result2=0.0, j=1;
int negative=1;
printf("Please enter your float string: ");
gets(str);
if(*str=='-'){
negative=-1;
str++;
}
while(*str!='.' ){
result1 = result1*10 + *str-'0';
str++;
}
if(*str=='.'){
str++;
while(*str){
result2 = result2*10 + *str-'0';
str++;
j*=0.1;
}
}
return (result1+result2*j)*negative;
}
'프로그래밍' 카테고리의 다른 글
LAB WEEK#8 Array (0) | 2018.11.05 |
---|---|
LAB WEEK#7 Function (0) | 2018.10.31 |