基础3.2:第一次作业(control)

1 算术运算

(完整代码见001_mod.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int x, y, z;
    scanf("%d %d", &x, &y);
    z = x % y;
    printf("%d\n",z);
	return 0;
}

完整代码见002_calculate.c

#include <stdio.h>
    
    int main() {
        int n;
        scanf("%d",&n);
        int sum = 0;
        for(int i=0;i<n;++i){
            int m;
            scanf("%d",&m);
            if(m<0) continue;
            sum += m;
            
        }
        printf("%d",sum);
    
        return 0;
    }

完整代码见00103——func.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	//int n;
	//scanf("%d",&n);
	//printf("%d",n);
	//主要程序内容写在这里
	int x;
	scanf("%d",&x);
	printf("%d\n",x*x+2*x+5);
	return 0;
}

(完整代码见00104_circle.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.14159
int main() {
	//int n;
	//scanf("%d",&n);
	//printf("%d",n);
	//主要程序内容写在这里
	double r;
	scanf("%lf", &r);
	printf("%lf\n",PI*r*r);
	return 0;
}

2.比较运算

完整代码见002_triangle.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	//int n;
	//scanf("%d",&n);
	//printf("%d",n);
	//主要程序内容写在这里
    int a, b, c;
    scanf("%d%d%d", &a,&b,&c);
    (a*a+b*b==c*c) ?(printf("1\n")):( printf("0\n"));
	return 0;
}

3.变量

注意:三个数两两进行交换,可以用抱薪救火法;
相当于用两次抱薪救火法,即
(完整代码见00301_swap.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	//int n;
	//scanf("%d",&n);
	//printf("%d",n);
	//主要程序内容写在这里
	int a, b, c, temp ;
	scanf("%d %d %d", &a,&b,&c);
	temp = a;
	a = b;
	b = c;
	c = temp;
	printf("%d %d %d\n",a,b,c);
	return 0;
}

(完整代码见00302_swap.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	//int n;
	//scanf("%d",&n);
	//printf("%d",n);
	//主要程序内容写在这里
	int a, b, c, temp1,temp2 ;
	scanf("%d %d %d", &a,&b,&c);
	temp1 = a;
	a = b;
	b = temp1;
	temp2 =b;
	b = c;
	c = temp2;
	printf("%d %d %d\n",a,b,c);
	return 0;
}

4.if

(完整代码见00401_jiouxing.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int n;
	scanf("%d",&n);
	if(n%2==0)
	{
	    printf("0\n");
	}
	else
	{
	    printf("1\n");
	}
	
	//printf("%d",n);
	//主要程序内容写在这里

	return 0;
}

(完整代码见00402——if1.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int a,b;
	scanf("%d%d",&a,&b);
	if(a+b>10)
	{
	    printf("%d",a*b);
	}
	else
	{
	    printf("%d",a-b);
	}


	return 0;
}

(完整代码见00403——if2.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int a,b;
	scanf("%d%d",&a,&b);
	if(a + b >= 0 && a + b <=3 )
	{
	       printf("YES\n");
	}
	else if(a + b >= 4)
	{
	    printf("NO\n");
	}
	else if(a + b < 0)
	{
	    printf("negative\n");
	}
	

	return 0;
}

完整代码见00404——if3.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int a, b, c, d;
	scanf("%d%d%d%d",&a,&b,&c,&d);
	if(a + b > 10)
	{
	    printf("%d\n",a * b);
	}
	else if(b + c > 5)
	{
	    printf("%d\n",c * d);
	}
	else if(d < 10 || a * c > 100)
	 {
	        printf("Yes\n");
	  }
	else
	    {
	        printf("No\n");
	    }


	return 0;
}

(完整代码见00405——score.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int S;
	scanf("%d",&S);
	if(S >= 90 && S <= 100)
	{
	    printf("A\n");
	}
	else if(S >= 80 && S < 90)
	{
	    printf("B\n");
	}
	else if(S >= 70 && S < 80)
	{
	    printf("C\n");
	}
    else if(S >= 60 && S < 70)
	{
	    printf("D\n");
	}
	else if(S >= 0 && S < 60)
	{
	    printf("E\n");
	}

	return 0;
}

完整代码见00406——age.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d", &n);
	if(n >= 0 && n <= 3)
	{
	    printf("infant\n");
	}
	else if(n >=4 && n <= 12)
	{
	    printf("child\n");
	}
	else if(n >= 13 && n <= 18)
	{
	    printf("youngster\n");
	}
	else if(n >= 19 && n <= 25)
	{
	    printf("youth\n");
	}
	
	return 0;
}

5.switch

(完整代码见00501——alpha.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	char ch;
	scanf("%c", &ch);
	switch(ch)
	{
	case 'a': printf("apple\n");break;
	case 'b': printf("banana\n");break;
	case 'c': printf("cat\n");break;
	default: printf("no\n");
	}
	//printf("%d",n);
	//主要程序内容写在这里

	return 0;
}

(完整代码见00502——sum_switch.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int a, b;
	scanf("%d%d",&a, &b);
	switch(a + b)
	{
	    case 1: printf("one\n");break;
	    case 2: printf("two\n");break;
	    case 3: printf("three\n");break;
	    case 4: printf("four\n");break;
	    case 5: printf("five\n");break;
	    case 6: printf("six\n");break;
	    case 7: printf("seven\n");break;
	    case 8: printf("eight\n");break;
	    case 9: printf("nine\n");break;
	    default:printf("None\n");
	    
	}
	

	return 0;
}

(完整代码见00503——day_switch.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n, m;
	scanf("%d%d",&n,&m);
	//printf("%d",n);
	//主要程序内容写在这里
    switch(m)
    {
        case 1 :
        case 3 :
        case 5 :
        case 7 :
        case 8 :
        case 10 :
        case 12 :printf("31\n"); break;
        case 4 :
        case 6 :
        case 9 :
        case 11: printf("30\n"); break;
        case 2 :
        if((n % 4 == 0 && n % 100 != 0)|| (n % 400 == 0))
        {
            printf("29\n");
        }
        else
        {
            printf("28\n");
        }
    }
	return 0;
}

6.while

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n, i = 0;
	scanf("%d",&n);
	while(n%2==0)
	{
	 i+=1;
	 n/=2;
	}
	printf("%d",i);


	return 0;
}

7.while/for

完整代码见00701_out.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d",&n);
	for(int i = 1; i <= n; i++)
	{
	    printf("%d\n",i);
	}
	
	return 0;
}

完整代码见00702_out.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d",&n);
	for(int i = 3; i <= n; i++ )
	{
	    if(i % 3 == 0)
	    {
	        printf("%d\n",i);
	    }
	}


	return 0;
}

完整代码见00703_lucky.c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d",&n);
	if(n>=0&&n<10){
	    (n==7)?(printf("Yes\n")):(printf("No\n"));
	}else{
	while(n)
    {
        if(n%10==7)
        {
            printf("Yes\n");
        break;
        }
        else
        {
            n/=10;
        }
    }
    if(n==0) printf("No\n");
	}
	return 0;
}

注意:
(1)用标志为进行判定;
int primer = 1;
(2)循环:2——————n-1

for(int i=2;i<n;++i){
            if(n%i == 0){
                primer = 0;
                break;
            }
        }

(完整代码见00704——prime.c)

 #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main() {
        int n;
        scanf("%d",&n);
        int primer = 1;
        for(int i=2;i<n;++i){
            if(n%i == 0){
                primer = 0;
                break;
            }
        }
        printf(primer?"Yes":"No");
    
        return 0;
    }

注意:(1)先设定最小的值,然后进行if判断;

for(i = 0;i < n;++i)
        scanf("%d",&num);
        if(min > num)
        {
            min = num;

        }

    };

(完整代码见0070501_min.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int i;//循环变量
    int n;//循环的次数,n个数字
    int num;//输入的值
    int min;//最小的数
    scanf("%d%d",&n,&num);
    min = num;
    for(i = 0;i < n;++i)
        scanf("%d",&num);
        if(min > num)
        {
            min = num;

        }

    };
    printf("%d",min);
    return 0;

}

注意:采用qsort()函数;

int cmp(const void* a, const void* b){
    int l = *(int*)a;
    int r = *(int*)b;
    if(l==r) return 0;
    return (l>r) ?1:-1;
    } 

(完整代码见0070502_min.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
  int a[10000];
int main() {
  
    int i;//循环变量
    int n;
    int min = a[0];//最小的数
    scanf("%d",&n);
    for(i = 0;i < n;++i){
        scanf("%d",&a[i]);
    }
    int cmp(const void* a, const void* b){
    int l = *(int*)a;
    int r = *(int*)b;
    if(l==r) return 0;
    return (l>r) ?1:-1;
    } 

    qsort(a,n,sizeof(int),cmp);  
    min = a[0];//①对象,②大小③单位④排序函数
    printf("%d",min);
    return 0;

}

注意:(1)先设定最值,然后进行if判断;

max=min=a[0];
	for(int i = 1; i < n; i++)
    {
        scanf("%d",&(a[i]));
        if(a[i]>max) max=a[i];
        if(a[i]<min) min=a[i];
    }

(完整代码见0070601_min.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[100000];
int main() {
	int n , max, min;
	scanf("%d %d",&n, &(a[0]));
	max=min=a[0];
	for(int i = 1; i < n; i++)
    {
        scanf("%d",&(a[i]));
        if(a[i]>max) max=a[i];
        if(a[i]<min) min=a[i];
    }
	printf("%d %d\n",min, max);
	return 0;
}
  1. 注意:采用qsort()函数;
int cmp(const void* a, const void* b){
    int l = *(int*)a;
    int r = *(int*)b;
    if(l==r) return 0;
    return (l>r) ?1:-1;
    } 

(完整代码见0070602_min.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
  int a[10000];
int main() {
  
    int i;//循环变量
    int n;
    int max=min = a[0];//最小的数
    scanf("%d",&n);
    for(i = 0;i < n;++i){
        scanf("%d",&a[i]);
    }
    int cmp(const void* a, const void* b){
    int l = *(int*)a;
    int r = *(int*)b;
    if(l==r) return 0;
    return (l>r) ?1:-1;
    } 

    qsort(a,n,sizeof(int),cmp);  
    min = a[0];//①对象,②大小③单位④排序函数
    max = a[n-1]
    printf("%d%d",min,max);
    return 0;

}

(完整代码见00707_sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int arr[100000];
int sum[100000];
int main()
{
  int n;
  scanf("%d",&n);
  sum[0] = 0;
  for(int i = 0; i<n;++i){
      scanf("%d",&arr[i]);
      if(i==0){sum[0]= arr[0];}
      else{sum[i] = sum[i-1]+arr[i];}
  }
      printf("%d\n", n);
  for(int i = 0; i < n; ++i){
    printf("%d\n", sum[i]);
  }
  return 0;
}

1.输入输出列举出来,找到规律:2059 斐波那契数

2.出错的部分进行修改;
(完整代码见00708_fabnaic.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int a[10000];



int main() {
    int n;
    scanf("%d",&n);
    a[2]=1; 
    a[3]=2;
    for(int i = 4; i <= n;++i){
       a[i]=a[i-1]+a[i-2];
    }
    printf("%d\n",a[n]);
    return 0;
}

(完整代码见00709_inorder.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int a, b;
	scanf("%d%d",&a,&b);
	for(int i = b; i >= a;i--)
	{
	    printf("%d\n",i);
	    
	}
	return 0;
}

(完整代码见00710_sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n,x,sum = 0; ;
	scanf("%d",&n);
	for(int i = 1; i <= n; i++ )
	{
	    scanf("%d",&x);
	    sum += x;
	}
	
	printf("%d\n",sum);


	return 0;
}

注意:(1)保留小数的结果,强制类型转化;
printf("%.2lf\n",sum);

(2)保留两位小数

  sum += (float)a / b;

(完整代码见00711_shulie.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>


int main() {
    int N;
    scanf("%d",&N);
    int a = 4, b =7 ,t;
    double sum = 4.0 / 7.0;
    for(int i = 1; i < N; i++)
    {
       t = a;
       a = b;
       b += t;
       sum += (float)a / b;


    }
    printf("%d/%d\n",a,b);
    printf("%.2lf\n",sum);
	return 0;
}

(完整代码见00712——jiecheng.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n, s = 1;
	scanf("%d",&n);
	for(int i = 1;i <= n; i++)
	{
	    s*= i;
	}
	printf("%d\n",s);


	return 0;
}

注意:(1)考虑多数,作为条件;

注意:(2)break:结束循环;continue:结束本次循环;(i)

 if(x >= 0)  sum += x;
	   else  break;

(完整代码见00713_sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n, x, sum = 0;
	scanf("%d",&n);
	for(int i = 1; i <= n ; i++)
	{
	   scanf("%d",&x);
	   if(x >= 0)  sum += x;
	   else  break;
	}
    printf("%d",sum);
	return 0;
}

小数的精度表示:前后两个数的误差小于多少;

for(int i = 1;i <= N||(fabs(1.0/i-1.0/(i+1)))< 1e-4; i++)
    {
        sum += 1.0/i;

    }

(完整代码见00714_sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main()
{
    int N;
    scanf("%d",&N);
    double sum = 0;
    for(int i = 1;i <= N||(fabs(1.0/i-1.0/(i+1)))< 1e-4; i++)
    {
        sum += 1.0/i;

    }
    printf("%lf\n",sum);
    //printf("%lf\n",1.0/2);
	return 0;
}

(完整代码见00704——prime.c)

 #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main() {
        int n;
        scanf("%d",&n);
        int primer = 1;
        for(int i=2;i<n;++i){
            if(n%i == 0){
                primer = 0;
                break;
            }
        }
        printf(primer?"Yes":"No");
    
        return 0;
    }

(完整代码见00715_beishu.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int N, num = 0;
	scanf("%d",&N);
	for(int i = 1; i <= N; i++)
	{
	    if(i%2==0 || i%3==0 ||i%5==0)
	    {
	        num += 1;
	    }
	}
	
    printf("%d\n",num);
	return 0;
}

(完整代码见00716——inorder.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main()
{
    int sum = 0;
    int m;
    scanf("%d",&m);
    while(m){
        sum = m%10+sum*10;
        m/=10;
       
    }
    printf("%d",sum);
    return 0;
}

三元运算符的巧妙应用;

 for(int i=1;i<=n;++i){
        res+= 1.0/(i%2?i:-i);
    }

(完整代码见00717_sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int n;
    scanf("%d",&n);
    float res = 0;
    for(int i=1;i<=n;++i){
        res+= 1.0/(i%2?i:-i);
    }
    printf("%f",res);

    return 0;
}

(完整代码见00718——sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d",&n);
	int x = 1;
	double sum =0.0;
	for(int i = 1; i <= n; i++)
    {
        x*=i;
        sum += 1.0/x;
    }
    printf("%lf\n",sum);
	return 0;
}

用含有9来进行判定;

 if(i%10==9) ++res;
            if(i/10==9) ++res;
        }

(完整代码见00719_count.c)

 #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main() {
        int n;
        scanf("%d",&n);
        int res = 0;
        for(int i=1;i<=n;++i){
            if(i%10==9) ++res;
            if(i/10==9) ++res;
        }
        printf("%d",res);
    
        return 0;
    }
  1. 合数控制n的自减;
 for(int i=2;i<n;++i){
           if(n%i==0){
               prime = 0;
               n--;
               break;
           }
       } 

2.质数break;

if(prime){
           break;
       }
    }

(完整代码见00720——prime.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int n;
    scanf("%d",&n);
    n--;
    while(1){
       int prime = 1;
       for(int i=2;i<n;++i){
           if(n%i==0){
               prime = 0;
               n--;
               break;
           }
       } 
       if(prime){
           break;
       }
    }
    printf("%d",n);

    return 0;
}

回文数即正序逆序的数字相同;
(完整代码见00721——huiwen.c)

  #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main() {
        int n;
        scanf("%d",&n);
        int temp = 0;
        int m = n;
        while(0 != m){
            temp = temp*10 + m%10;
            m /= 10;
        }
        printf(n==temp?"yes":"no");
    
        return 0;
    }

(完整代码见00722——sum.c)

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main()
{
	int n,x,sum=0;
	scanf("%d",&n);
	for(int i =0;i<n;++i)
	{
		scanf("%d",&x);
		if(x<0) x=0;
		if(x>0)
		  sum+=x;
	}
	printf("%d\n",sum);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值