【考试】C语言考试

第一题:输出结果。
    https://paste.ubuntu.com/p/t5MqCRSg6y/

#include<stdio.h>
int main()
{
    char ch1=189;
    unsigned char ch2=189;
    printf("ch1=%d\t ch2=%d\n",ch1,ch2);
    //答案:
    //ch1=-67	 ch2=189
    //分析:-67 是以补码形式输出,如果是无符号位,输出就是189。
    return 0;
}


第二题:
    方法一:

    https://paste.ubuntu.com/p/z6zgPWJNZ9/

#include<stdio.h>
int main()
{
	int year,month,day;
	scanf("%d%d%d",&year,&month,&day);
	int ans=day;
        switch(month){
                case 1:     break;
                case 2:     ans+=31;break;
                case 3:     ans+=59;break;
                case 4:     ans+=90;break;
		case 5:     ans+=120;break;
		case 6:     ans+=151;break;
		case 7:     ans+=181;break;
		case 8:     ans+=212;break;
		case 9:     ans+=243;break;
		case 10:    ans+=273;break;
		case 11:    ans+=304;break;
	 	case 12:    ans+=334;break;
        }
        if(month>=3&&year%4==0&&(year%400==0||year%100!=0)){
                ans++;		
        }
        printf("%d\n",ans);
        return 0;
}

    方法二:

     https://paste.ubuntu.com/p/CmhDrMzqNr/

#include<stdio.h>
int a[13]={0,0,31,28,31,30,31,30,31,31,30,31,30};
int main()
{
	int year,month,day;
	scanf("%d%d%d",&year,&month,&day);
	int ans=day;
	for(int i=1;i<=12;i++){
            a[i]=a[i-1]+a[i];
	}
	/*for(int i=1;i<=12;i++){
            printf("%d\n",a[i]);
	}*/
        switch(month){
                case 1:     break;
                case 2:     ans+=a[month];break;
                case 3:     ans+=a[month];break;
                case 4:     ans+=a[month];break;
		case 5:     ans+=a[month];break;
		case 6:     ans+=a[month];break;
		case 7:     ans+=a[month];break;
		case 8:     ans+=a[month];break;
		case 9:     ans+=a[month];break;
		case 10:    ans+=a[month];break;
		case 11:    ans+=a[month];break;
		case 12:    ans+=a[month];break;
       }
       if(month>=3&&year%4==0&&(year%400==0||year%100!=0)){
               ans++;
       }
       printf("%d\n",ans);
       return 0;
}

 

#include<stdio.h>
int main()
{
	int year,month,day;
	scanf("%d%d%d",&year,&month,&day);
	int ans=day;
        switch(month){
                case 12:     ans+=30;
                case 11:     ans+=31;
                case 10:     ans+=30;
                case 9:      ans+=31;
		case 8:      ans+=31;
		case 7:      ans+=30;
		case 6:      ans+=31;
		case 5:      ans+=30;
		case 4:      ans+=31;
		case 3:      ans+=28;
		case 2:      ans+=31;
		case 1:      break;
        }
        if(month>=3&&year%4==0&&(year%400==0||year%100!=0)){
                ans++;
        }
        printf("%d\n",ans);
        return 0;
}

 

第三题:

#include<stdio.h>
int main()
{
    int a,t,i,n,ans=0;
    scanf("%d%d",&a,&n);
    t=a;
    for(i=1;i<=n;i++){
        ans+=a;
        a=a*10+t;
    }
    printf("%d\n",ans);
}

 第四题:

各位同学非常抱歉,这个题是我看错题目,说错了,请大家看一下代码理解一下吧。

希望同学们能原谅我。

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int ans[10]={0};
    for(int i=1;i<=n;i++){
        int temp=i;
        while(temp){
            ans[temp%10]++;
            temp/=10;
        }
    }
    for(int i=1;i<=10;i++){
        printf("%d : %d\n",i%10,ans[i%10]);
    }
    return 0;
}

 


第五题: 

#include<stdio.h>
#define N 205
int main()
{
    int cnt=0;
    int ans[N];             //数组开大一点。
    for(int i=0;i<=9;i++){  //回文数 长度为 : 1
        ans[cnt++]=i;
    }
    for(int i=1;i<=9;i++){  //回文数 长度为 : 2
        int temp=0;
        temp=i*10+i;
        ans[cnt++]=temp;
    }
    for(int i=10;i<=99;i++){ //回文数 长度为 : 3
        int temp,t=i/10;
        temp=i*10+t;
        ans[cnt++]=temp;
    }
    for(int i=10;i<=99;i++){ //回文数 长度为 : 4
        int Front=i,Back=(i%10)*10+i/10,temp;
        temp=Front*100+Back;
        ans[cnt++]=temp;
    }
    //printf("%d\n",cnt); 共有199个回文数在10000内
    for(int i=0;i<cnt;i++){
        printf("%d\n",ans[i]);
    }
    return 0;
}

 

第六题:

方法1:

#include<stdio.h>
int dfs(int x){
    if(x==1||x==2){
        return x;
    }
    return dfs(x-1)+dfs(x-2);
}
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    int ans=dfs(b-a);
    printf("%d\n",ans);
    return 0;
}

方法2:

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    int f1=1,f2=2,f3;
    if(b-a==1){
        printf("1\n");
    }else if(b-a==2){
        printf("2\n");
    }else{
        for(int i=3;i<=b-a;i++){
            f3=f1+f2;
            f1=f2;
            f2=f3;
        }
        printf("%d\n",f3);
    }
    return 0;
}

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值