05 程序题

1

#include<stdio.h>
 
int main(){
    char str1[]={"abc"};
    // 3
    printf("%d",strlen(str1));
    
    char str2[]={'a','b','c'};
    // 长度不能确定
    printf("%d",strlen(str2));
    
    char str3[10]={'a','b','c'};
    // 3
    printf("%d",strlen(str3));
    
    // 字符串常量
    char *str4 = "abc";
    // 3 长度不包含 '\0' 本身
    printf("%d",strlen(str4));
}

2 比较字符串 s 和 字符串 t 的大小,若 s 大于 t,则返回一个正值;若 s 等于 t,则返回 0;否则返回一个负值。

#include<stdio.h>

/**
 * s>t,返回正值;s=t,返回0;否则返回负值
 */
comp(char *s, char *t)
{
    for(;*s==*t;s++,t++)
        // *s==*t才执行到这,若*s=='\0',表示*t=='\0'
        if(*s=='\0')
            return 0;
    // *s != *t 到这步
    return (*s-*t);
}
 
int main()
{
    char *s="ab";
    char *t="abc";
    int a = comp(s, t);
    printf("%d",a);
}

3  复制文件内容到另一个文件

#include<stdio.h>
 
int main()
{
    FILE *fp1,*fp2;
    fp1=fopen("/Users/vincent/Desktop/file1.txt","r");
    fp2=fopen("/Users/vincent/Desktop/file2.txt","w");
    
    while(!feof(fp1))
        // 输出到屏幕
        putchar(fgetc(fp1));
    // 使文件位置标记指向文件开头
    rewind(fp1);
    while(!feof(fp1))
        // 把字符写到fp2指向的文件中
        fputc(fgetc(fp1),fp2);
    fclose(fp1);
    fclose(fp2);
}

#include<stdio.h>

func(int a)
{
    static int x=10;
    int y=1;
    // 13
    x+=a;
    // 4
    a++;
    //2
    y++;
    // 19
    return (x+y+a);
}
 
int main()
{
    int k=3;
    while (k<8)
        printf("%d\t", func(k++));
    printf("\n");
}

执行结果:

#include<stdio.h>

typedef struct
{
    // 8*2=16
    long x[2];
    // 4*4=16
    int y[4];
    // 8
    char z[8];
}MYTYPE;
 
int main()
{
    MYTYPE a;
    // 输出 40
    printf("%d\n",sizeof(a));
}

6

#include<stdio.h>
#define ADD(a)(a)+(a)
 
int main()
{
    int x=4,y=6,z=7;
    //(4+6)+(4+6)*7=80
    int w=ADD(x+y)*z;
    // 输出 80
    printf("%d\n",w);
    
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值