实验1c语言开发环境使用和数据类型,运算符和表达式

1.试验任务1

(1)在垂直方向上打印两个字符小人的源代码,以及运行结果截图

 

\\在垂直方向上打印两个字符小人

#include<stdio.h>
int main()
{
    printf(" o\n");
    printf("<H>\n");
    printf("I I\n");

    printf("\n\n");

    printf(" o\n");
    printf("<H>\n");
    printf("I I\n");


    return 0;
}

 

 

 

 

(2)在水平方向上打印两个字符小人的程序源代码,以及运行结果截图

//在水平方向上打印出两个字符小人


#include<stdio.h>
int main()
{
    printf(" o        o\n");
    printf("<H>      <H>\n");
    printf("I I      I I\n");

    return 0;
}

2.试验任务2


(1)

 

//在c开发环境下,编写,编译,运行一个简单的算术运算程序

#include<stdio.h>
#include<math.h>

int main()
{
    double x,ans;

    scanf("%lf",&x);  //注意:对于使用scanf()函数从键盘输入一个值给定义好的变量而言,格式控制符必须用"%lf"而不能用"%f",但是用printf()输出该变量时格式控制符可以用"%f";
    ans = pow(x,365);
    printf("%.2f的365次方:%.2f\n",x,ans);

    return 0;
}

 

(2)

#include<stdio.h>
#include<math.h>

int main()
{
    double x,ans;
    while(scanf("%lf",&x) != EOF) 


    //EOF表示文件结束符,在while循环中以它作为文件结束标志
    //对于scanf("%lf",&x) != EOF 式子的理解,若x被成功读入那么该表达式的结果为1,若x没有被读入那么该表达式的值为0,如果遇到错误或者文件结尾或者ctrl + z那么该表达式的值为EOF
    //"ctrl + z"用于结束while循环,line7这样的写法常常用于多组数据的输入


    {
        ans = pow(x,365);
        printf("%.2f的365次方:%.2f\n",x,ans);
        printf("%n");
    }
    return 0;

}

(3)编写程序实现华氏温度和摄氏温度的转换

 

//摄氏温度和华氏温度的转换
#include<stdio.h>
int main()
{
    double F,C;
    while(scanf("%lf",&C) != EOF)
    {
        F = 9 * C / 5 + 32;
        printf("摄氏温度c=%.2f时,华氏度f=%.2f\n",C,F);
    }
    return 0;
}

 

运行结果截图

 

 

3.试验任务3

(1)编写c程序利用等比数列求和公式求等比数列的前n项和

 

//用等比数列求和公式计算以下等比数列求和
#include<stdio.h>
#include<math.h>

int main()
{
    unsigned a1 = 1,q = 2,n,sum;//将变量定义为int类型运行得不到正确结果,这是因为在计算机中int类型占4个字节,而运行结果超出了int类型可以表示的数据范围,把变量定义为unsigned,和double类型就可以运行得到正确结果
    //double sum;

    scanf("%d",&n);

    sum = a1 * (1 - pow(q,n)) / (1 - q);

    printf("n=%u,sum=%u",n,sum);

    return 0;
}

 

 

此程序将变量定义为int类型输入32时运行得不到正确结果,这是因为在计算机中int类型占4个字节,而运行结果超出了int类型可以表示的数据范围,把变量定义为unsigned,和double类型就可以运行得到正确结果,当输入64时即使把变量定义为double和unsigned也得不到正确结果,原因和将变量定义为int类型类似

 

4.试验任务4

(1)改正程序中的语法错误学会正确的从键盘输入数据给scanf()函数

//改正程序中的语法错误

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

运行结果截图

注意事项:对于从键盘输入字符型的数据scanf()函数会把回车,空格等字符当作有效字符处理,所以从键盘输入字符型数据给scanf()函数时需要特别注意字符之间不能有空格或者其它符号必须连续输入

5.试验任务5

(1)学会正确的从键盘输入数据给scanf()函数,尤其注意字符型数据和整形数据的混合输入

#include <stdio.h> 
int main() 
{ 
    int age1, age2; 
    char gender1, gender2; 


    scanf("%d%c%d%c", &age1, &gender1, &age2, &gender2); 

    printf("age1 = %d, gender1 = %c\n", age1, gender1); 
    printf("age2 = %d, gender2 = %c\n", age2, gender2); 

    
    return 0; 
}

运行结果截图

6.试验任务6

补全代码

 

//补全程序

#include <stdio.h> 
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' || ans1 == 'Y') && (ans2 == 'y' || ans2 == 'Y')) // 待补足,判断用户回答ans1和ans2都是小写y或大写Y 
        printf("\n罗马不是一天建成的, 继续保持哦:)\n"); 
    else
        printf("\n罗马不是一天毁灭的, 我们来建设吧\n");

    return 0;
}

 注意:对于从键盘输入字符型的数据scanf()函数和getchar()函数都会把回车,空格等字符当作有效字符处理,所以一般程序中会多加一个getchar()函数用于把回车吸收掉使得程序运行结果是我们所期望的

7.试验任务7

(1)编译运行测试程序,实现人机互动

// 测试你是哪一类学习者 

#include <stdio.h> 
int main() 
{ 
    int answer; 
    char words[5000];

    printf("网课学习让一些人欢喜一些人忧.\n"); 
    printf("1. 作为喜欢自学且自律的人,觉得这样很好. 有网络,自主学习,很ok.\n"); 
    printf("2. 不喜,不喜,很不喜. 眼睛快瞎了. 脑壳有点卡...\n"); 
    printf("3. 中间派. 不知道. 说不清.\n"); 
    printf("4. 其它...\n"); 
    printf("你的选择: ");

    scanf("%d", &answer);

    if(answer == 4) 
    { 
        printf("请补充说明你的想法: \n"); 
        getchar(); // 这行代码为什么放在这里,如果去掉了,会怎么样? 
        gets(words); // 从键盘输入你的想法,输完后,敲回车键 
    }
    printf("\n"); 
    printf("当遇到问题时, 你会选择:\n"); 
    printf("1. 遇到问题, 就解决问题。不懂的,搜索式学习,逐个攻破.\n"); 
    printf("2. 遇到问题, 不高兴。然后,...,没有了.\n"); 
    printf("3. 其它...\n"); 
    printf("你的选择: "); 
    scanf("%d", &answer); 
    if(answer == 1) 
        printf(":)\n"); 
    else if(answer == 2) 
        printf("这样不能解决问题啊...我们选择1好不好:)\n"); 
    else if(answer == 3) 
    { 
        printf("请补充说明你的想法: \n"); 
        getchar(); // 这行代码为什么放在这里,如果去掉了,会怎么样? 
        gets(words); // 从键盘输入你的想法,输完后,敲回车键 
    }
    
    return 0;
}

运行结果截图

 

posted @ 2022-10-12 20:18  mli_littlewith  阅读(45)  评论(0)    收藏  举报