11 程序题

1

#include<stdio.h>

int main(){
    char ch='A';
    printf("ch(1)=%d,ch(2)=%c \n", ch,ch+1);
}

执行结果:

2

#include<stdio.h>

int main(){
    int k=1,t=3;
    do{
        // t=4,k=2; t=7,k=4; t=11,k=5; t=17,k=7
        t+=k++;
        if(t%7==0)
            continue;
        else
            // k=3,k=6,k=8
            ++k;
    }while(t<15);
    printf("k is %d \n", k);
}

执行结果:

3

#include<stdio.h>

int main(){
    int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},a[5]={0},i;
    for(i=0; i<12; i++)
        //a[1]=4,a[2]=3,a[3]=3,a[4]=2
        a[s[i]]++;
    for(i=1;i<5;i++)
        printf("%d",a[i]);
    printf("\n");
}

执行结果:

4

#include<stdio.h>

int main(){
    char str1[15]="good";
    char str2[10]="morning";
    // str2 追加到 str1
    strcat(str1,str2);
    puts(str1);
    printf("length of str1 is %d \n",strlen(str1));
}

执行结果:

5

#include<stdio.h>

int main(){
    char *s="13579";
    s++;
    // printf("%s%s%s\n",*s,*(s+1),*s+1); 错误
    printf("%c%c%c\n",*s,*(s+1),*s+1);
}

执行结果:

6

#include<stdio.h>

#define MAX(A,B) (A)>(B)?(A):(B)
#define PRINT(Y) printf("Y=%d\n",Y)

int main(){
    int a=1,b=2,c=3,d=4,temp;
    // 3<7,temp=7
    temp=MAX(a+b,c+d);
    PRINT(temp);
}

执行结果:

7

#include<stdio.h>

int fun(int x,int y)
{
    return(x+y);
}

int main(){
    int a=2,b=5,c=8;
    //a+c+b=15,a-c=-6
    printf("%d\n",fun(fun(a+c,b),a-c));
}

执行结果:

8

#include<stdio.h>

int main(){
    struct date{
        int year,month,day;
    }today;
    // 4字节 * 3=12字节
    printf("%d\n",sizeof(struct date));
}

执行结果:

9 执行下列程序后,file2.txt的内容为

#include<stdio.h>

int main(){
    FILE *in,*out;
    //3+1+4+1+2+1+4=16
    char *str1="YOU PLAN TO FAIL.";
    //2+1+3+1+4+1+2+1+4=7+4+4+4=15+4
    char *str2="IF YOU FAIL TO PLAN.";
    
    if((fopen("/Users/vincent/Desktop/file1.txt","r"))==NULL) {
        printf("file1.txt is no exist!");
        return 0;
    }
    if((fopen("/Users/vincent/Desktop/file2.txt","r"))==NULL) {
        printf("file2.txt is no exist!");
        return 0;
    }
    
    in = fopen("/Users/vincent/Desktop/file1.txt","w");
    while(*str1!='.')
        // str1写入in
        putc(*str1++,in);
    fclose(in);
    
    in = fopen("/Users/vincent/Desktop/file1.txt","r");
    out = fopen("/Users/vincent/Desktop/file2.txt","w");
    while(!feof(in)){
        // C语言读取文件会自动在后面添加\377
        printf("%c",fgetc(in));
        fputc(*str2++,out);
    }
    printf("\n");
    fclose(in);
    fclose(out);
}

执行结果:

控制台:

10

struct num{
    int a;
    int b;
    float c;
}n={1,3,5.0};

struct num *p = &n;

int main(){
    // p 不是结构体变量,不能写成 p.b,要写成(*p).v,或 p -> age
    // 3
    p->b/n.a;
    // *表示乘,3 * 4 = 12
    p->c/n.a*++p->b;
    // 1+5.0=6.0
    (*p).a+p->c;
}

11 计算 1000! 的末尾含有多少个零。

#include<stdio.h>

int main(){
    int k,i,m;
    // 2 * 5 才会出现 0,而2的个数肯定多于5,所以求出5的个数就行
    // 1*2*3*4*5*6*7*8*9*10   5和10才含有因数5,所以每次i+5
    for(k=0,i=5;i<1000;i+=5){
        m=i;
        // 25=5*5,循环2次;125=5*5*5,循环3次
        while(m%5==0){
            k++;
            //没有这行退不出循环
            m=m/5;
        }
    }
    printf("%d\n",k);
}

执行结果:

12 通过指针操作,找出并输出三个整数中的最小者。

#include<stdio.h>

int main(){
    int *a,*b,*c,num,x,y,z;
    a=&x;
    b=&y;
    c=&z;
    printf("Input a,b,c:");
    //输入要按逗号隔开
    scanf("%d,%d,%d",a,b,c);
    printf("%d,%d,%d\n",*a,*b,*c);
    num=*a;
    if(*a>*b)
        num=*b;
    if(num>*c)
        num=*c;
    printf("The minimun=%d\n",num);
}

执行结果:

13 先又用户通过键盘输入一个文件名,然后向此文件输入一串字符(假设输入以字符“#”结束),最后再将当前日期写到文件的尾部。

#include<stdio.h>

int main(){
    char ch,date[20],fname[30];
    FILE *fp;
    printf("Input the file name:");
    // 输入一个文件名
    scanf("%s",fname);
    if((fp=fopen(fname,"w"))==NULL){
        printf("Can not open file %s!\n",fname);
        exit(0);
    }
    printf("Input a string:\n");
    // 输入一串字符,以“#”结束
    while((ch=getchar())!='#')
        // 写入到文件中
        fputc(ch,fp);
    printf("Enter date:\n");
    scanf("%s",date);
    // 向文件追加日期
    fprintf(fp,"%s",date);
    fclose(fp);
}

执行结果:

14 递归求和

15 字符串循环移动

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值