实验二 作业

 Part1

ex2_1.c

#include <stdio.h>
int main() {
    int x=1234;
    float f=123.456;
    double m=123.456;
    char ch='a';
    char 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;
}

运行结果

其实在课堂上做的时候,这个结果对我来说不太直观(我比较菜所以看不出来空了几格)为了我能比较直观地看出区别,我在每个小语句里都加了换行......

噢......终于清楚一些了

ex2_2.c 找错误

原错误代码

#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("%f,%lf",&x,&y);
    printf("%f,%lf\n",x,y);
    return 0;
} 

这个找错误,我找了好久。最先找到的是scanf函数那个语句里应该有&地址形式,后面%lf这个错误我就找了很久,因为我一直弄不清楚双精度 单精度 float double到底有什么区别,其实现在也不太懂,是看到书后面那一页的提示才知道错在哪。x,y定义是double双精度变量,所以scanf函数中要用%lf。

 正确代码

#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;
} 

运行结果

 Part2

putchar.c

#include <stdio.h>
int main() {
    char ch;
    ch = 'A';
    putchar(ch);  
    putchar(ch+32); 
    putchar('\x41'); 
    putchar('\n'); 
    return 0;
}

运行结果:

 

getchar.c

#include <stdio.h>
int main() {
    char ch;
    ch = getchar(); 
    putchar(ch);    
    printf("%c\n",ch);
    return 0;
}

运行结果:

做这个的时候一开始复制老师的代码,但运行不了,后来加了\n就可以运行了??好奇怪啊......

Part3 if语句练习

单分支if语句

if1.c

#include <stdio.h>
int main() {
    int a,b;
    int t;  
    printf("输入两个整数给a和b:\n");
    scanf("%d%d",&a,&b);
    if(a>b) {
        t = a; 
        a = b;
        b = t; 
    }
    printf("a=%d, b=%d\n",a,b);
    return 0;
} 

运行结果

 两分支if语句

if2.c

#include<stdio.h>
int main()
{
    int n;
    printf("输入一个整数给n:\n");
    scanf("%d", &n);
    if(n%2==1)
    {
        printf("n是奇数.\n");
    }
    else
    {
        printf("n是偶数.\n");
    }
    return 0;
 } 

运行结果:

多分支if语句

if3.c

#include<stdio.h>
int main()
{
    int level;
    printf("输入现在状态等级(1-5):");
    scanf("%d",&level);
    if(level==1)
    {
        printf("high翻了:)\n");
     }
    else if(level==2)
     {
         printf("low爆了:( \n");
      } 
    else
    {
        printf("一言难尽,无法概括。。。\n");
    }
    return 0;
}

运行结果:

Part4 switch语句练习

#include<stdio.h>
int main ()
{
    int level;
    printf("输入现在的等级状态(1-5):"); 
    scanf("%d",&level) ;
    switch(level)
    {
        case 1:printf("high翻了:)\n");break;
        case 2:printf("low爆了:(\n");break;
        default:printf("一言难尽,无法概括。。。\n");
    }
    return 0;
}

运行结果和if3.c一样

当把case1和case2后面的break去掉时,结果变成了这样

Part5 编程练习

#include<stdio.h>
int main()
{
    int answer;
    printf("请输入你的答案(A、B、C、or D):");
    scanf("%c",&answer);
    if(answer=='A')
    {
        printf("bingo,you are right\n");
    }
    else
    {
        printf("try again\n");
    }
    return 0;
    
}

运行结果

小结:我一开始想偷个懒,直接照着老师给的文件把代码抄在自己的程序里,但后来发现有错误,比如if语句那里没有花括号,或者有些变量没有定义,后来再也不抄了哈哈哈哈....我看着老师的代码作为我的思路,一点一点写,并且避免犯以前的错误,比如上一个程序我没有定义变量导致出错,下一个程序我就把变量定义好。写if语句时,我觉得每一个if语句都要打括号很麻烦,但不打又会出错,只能老老实实打了,不过通过这次练习我真的学到了很多。写最后的编程训练时,我一开始还很顺,到后来就卡住了,if(answer=='a')这句,我一开始没有把单引号打上去,就一直报错,后来参考了别人的程序才发现是这个问题,感觉自己有点蠢哈哈哈哈哈哈......

posted @ 2019-04-01 16:28  镜灵  阅读(192)  评论(3编辑  收藏  举报