C语言统计大写字母跨度,实验1-C语言开发环境使用和数据类型、运算符、表达式-实验总结与体会...

一,实验总结

本此实验共9组练习,其中前5组为练习c程序结构与书写规范,3组为补全程序,最后一组为自主编写。

Part 1

前五组中没有出现什么问题,但在学习指导P116第一题中:

#include

intmain(){int a=5,b=7,c=100;intf,e,d;

d= a/b*c;

e= a*c/b;

f= c/b*a;

printf("d=%d,e=%d,f=%d",d,e,f);return 0;

最开始 f 的运算式写成了

f=c/d*a

,运算一直是错误的,由此分析得出,出现除数为0时,都会出现除法溢出异常,程序不能正常运行。此情况下运算结果如下图,可见程序未正常运行并进行报错。

30169041175466c9c1b7e6d174001f57.png

将表达式修改回来之后,即可正常运行且结果无误。

Part 2

(1)判断奇偶: ex1.c

补全后如图

//程序功能://要求用户从键盘输入一个整数,判断其是奇数还是偶数

#include

intmain() {intx;

printf("输入一个整数: \n");

scanf("%d",&x);//在×××处填写相应表达式//使得当表达式成立时,判定x是奇数,否则是偶数

if(x%2==!0)

printf("是奇数");elseprintf("是偶数");return 0;

}

运行结果为

934625b7e20e17beec43694fe7b36f0b.png

7e6ad36d1a10be61687d903f2fbfb558.png

(2)根据不同的输入,显示不同提示信息:ex2.c

补全后如图

/*程序功能:

要求用户从键盘输入1~7之间的整数

如果输入的是1~5, 提示用户是工作日,要努力工作;

如果输入的是6或7,提示用户是休息日,放松休息;

否则,提示用户输入不在合法范围*/#include

intmain() {intdays;

printf("输入一个整数: \n");

scanf("%d",&days);//补足×××处的表达式,使得满足程序功能描述

if(days<=5&&days>0) //days在1到5之间

printf("workdays, fighting\n");else if(days==6||days==7) //days是6或7

printf("weekend, relax~\n");elseprintf("Ooops, not in 1~7\n");return 0;

}

运行结果为

42f9c24b259190a401f8fdc5d64fac2f.png

(3)根据用户输入字符,判断如果是小写字母,则转换成大写;否则保持原样: ex3.c

补全后如图

//功能://从键盘上输入单个字符//如果是小写字母,则转换成大写后输出//否则,什么也不做,原样输出

#include

intmain() {charch;

printf("输入一个字符:\n");

scanf("%c",&ch);//根据程序功能描述,补足程序

if(ch>='a'&&ch<='z') //如果ch是小写字母,补足判定ch是小写字母的表达式

ch-=32; //补足把ch中的小字母转换成大写字母的表达式语句//说明:语句就是在表达式末尾加分号;

printf("%c\n",ch);return 0;

}

运行结果为

12a1ef4276f499adabeea045d911f139.png

Part 3

由十进制转换为二进制的数学计算方法可知,采用“除二取余,逆序排列”的方法。

在尝试编写代码的过程中,我主要遇到了两个问题:(1)如何进行逆序排列;(2)当数值过大时,程序无法成功将十进制数转化为二进制数。

首先尝试了

#include

intmain()

{int z=0,k=1,i,a,b;

printf("输入一个十进制整数:\n");

scanf("%d",&a);

b=a;while(a>0)

{

i=a%2;

z=k*i+z;

k=k*10;

a=a/2;

}

printf("十进制整数%d的二进制为:%d",b,z);return 0;

}

结果在1023及以前,运算结果都是正常的;到了1024之后,结果就不是二进制数了。

0af43f6a598892d7b15ada97370681a8.png

此后参考了博主“低俗小怪”使用了【do while】的代码(如下),但无法理解其中使用黄色标记的部分(链接https://www.cnblogs.com/didiaoxiaoguai/p/6731310.html)

#include

intmain()

{inta;char s[20];int i = 0, rem;

printf("Input number:");

scanf("%d", &a);do{

rem= a % 2;

a= a / 2;

s[i]=rem;

i++;

}while (a != 0);

printf("输出二进制:");while (i > 0) printf("%d", s[--i]);//

return 0;

}

二、实验总结与体会

1.本此实验中,主要使用了Dev C++软件,同时尝试使用了Visual Studio 2010 和Visual Studio 2012。vs的功能更加健全,但Dev更便于在学习过程中进行操作。

2.无论是在编程过程或者测试过程中,都需要注意英文符号与中文符号的不同之处,不可混淆。

3.要继续加强关系运算符和逻辑运算符的学习与记忆,明确在哪里使用哪个运算符以及运算符间的优先级关系。

4. 注意进行测试,要多次不重复且跨度尽量大的进行测试,避免偶然性的出现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值