实验2

一、.实验任务1

1、

//格式化输入、输出函数的简单运用

#include<stdio.h>
int main() {
    int num;

    scanf("%d",&num);
    printf("2049%04d\n",num);

    scanf("%d",&num);
    printf("2049%04d\n",num);

    scanf("%d",&num);
    printf("2049%04d\n",num);

    return 0;
}

  

   2、总结%4d的作用:控制了数据输出的宽度,%4d就是数据占四位,缺的在数据左边补位。

   3、循环语句改写

//格式化输入、输出函数的简单运用

#include<stdio.h>
int main() {
    int num,i;
     i=0;
    do{
      scanf("%d",&num);
      printf("2049%04d\n",num);
      i++;
    }while(i!=3);

    return 0;

 

二、实验任务2

 1、

//格式化输入、输出函数及各种格式控制符的使用

#include<stdio.h>
int main() {
    int x=1234;
    float f=123.456;
    double m=123.456;
    char ch='a';
    char a[]="Hello,world!";//定义一个字符型数组a,数组中存放字符串常量hello,world!
    int y=3,z=4;

    printf("%d %d\n", y,z);
    printf("y=%d,z=%d\n",y,z);
    printf("%8d,%2d\n",x,x);
    printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f);
    printf("%lf\n",m);
    printf("%3c\n", ch);
    printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);

    return 0;
}

   2、总结:%d的作用是按十进制整数输出     %f的作用是按单精度浮点数输出   %c是按字符输出    %s是按字符串输出   

                   %8.1f意思是以浮点数输出,然后保留一位小数,数据长度为8位,在数据左边补位

                   %.2f意思是以浮点数输出,并且保留两位小数

                   %lf是以双精度浮点型输出

                   %ld是按十进制长型整数输出

三、实验任务3

#include<stdio.h>
int main() {
    double x,y;
    char c1,c2,c3;
    int a1,a2,a3;
    
    scanf("%d%d%d",&a1,&a2,&a3);
    printf("%d,%d,%d\n",a1,a2,a3);
    scanf("%c%c%c",&c1,&c2,&c3);
    printf("'%c''%c''%c'\n",c1,c2,c3);
    scanf("%lf,%lf",&x,&y);
    printf("%lf,%lf\n",x,y);

    return 0;
}

四、实验任务四

int main() {
    char ans1, ans2;
    
    printf("复习了没? (输入y或Y表示复习了,输入n或N表示没复习) :  ");
    ans1 = getchar();  // 从键盘输入一个字符,赋值给ans1
    
    getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。
    
    printf("\n动手敲代码了没? (输入y或Y表示敲了,输入n或N表示木有敲) :  ");
    ans2 = getchar();
    
    if(ans1=='y'&&ans2=='y'||ans1=='Y'&&ans2=='Y'||ans1=='y'&&ans2=='Y'||ans1=='Y'&&ans2=='y')  // 待补足,判断用户回答ans1和ans2都是小写y或大写Y
        printf("\n罗马不是一天建成的:)\n");    
    else
        printf("\n罗马不是一天毁灭的。。。\n");
    return 0;
}

 

五、实验任务五

#include<stdio.h>
int main() {
        char x;
    
    x = getchar();
    
    if(x>='0'&&x<='9') // 待补足①,判断x是数字字符表达式 
        printf("%c是数字字符\n", x);
    else if( x>='A'&&x<='z') // 待补足②,判断x是大写或小写英文字母的表达式 
        printf("%c是英文字母\n", x);
    else
        printf("%c是其它字符\n", x);
    
    return 0;
}

六、实验任务六

#include<stdio.h>
#include<math.h>
int main() {
        int sum,a0,n;
        double q;
        q=2,a0=1;
        scanf("%d",&n);
        sum=a0*(1-pow(q,n+1))/(1-q);
        printf("n=%d时,sum=%d\n",n,sum);
        return 0;
}

七、实验任务七

//就只会做到打印一行字符小人了....TAT
#include<stdio.h>
int main() {
    int line;
    
    for(line=0;line<9;line++)
         printf("  0  ");
         printf("\n");
    for(line=0;line<9;line++)
         printf(" <H> ");
         printf("\n");
    for(line=0;line<9;line++)
         printf(" I I ");
         printf("\n");
     
      
    return 0;    
}

 Ps:想了一下如果是我要写打印最后的字符小人阵列,应该就是用好几个for循环一直写,然后打空格,但是感觉这个代码过于复杂了,而且需要数空格,头秃,        应该之后会有什么方法简化流程。

 

实验总结:

1、输入的时候double型必须是%lf,float型必须是%f,输出的时候就没有这么严格,都可以用

2、实验任务四中if的框内感觉我写的有点复杂了,看了一下还有一种写法比较简便(也许),是if((ans1=='y'||ans1=='Y')&&(ans2=='y'||ans2=='Y'))

3、对%10.5s %2.5s %.3s为什么输出结果是那个我还有点疑惑(太菜了)

posted @ 2021-03-30 22:57  YLionAo  阅读(82)  评论(3)    收藏  举报