小程序中的小问题
来源:互联网 发布:动态恐怖漫画软件 编辑:程序博客网 时间:2024/05/29 18:37
1.将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[5] = { 0 };
int b[5] = { 0 };
int i = 0;
int temp = 0;
printf("请输入a数组的五个值\n");
for (i = 0; i < sizeof(a)/sizeof(a[0]); i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i <sizeof(a) /sizeof(a[0]); i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("请输入b数组的五个值\n");
for (i = 0; i < sizeof(b) / sizeof(b[0]); i++)
{
scanf("%d", &b[i]);
}
for (i = 0; i < sizeof(b) / sizeof(b[0]); i++)
{
printf("%d ", b[i]);
}
printf("\n");
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
temp = a[i];
a[i] = b[i];
b[i] = temp;
}
printf("a数组为:\n");
for (i = 0; i <sizeof(a) /sizeof(a[0]); i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("b数组为:\n");
for (i = 0; i < sizeof(b) / sizeof(b[0]); i++)
{
printf("%d ", b[i]);
}
system("pause");
}
这个程序是用来交换两个数组中的值的,这里我并不想说是如何交换两个数组中的值,这个程序并不难,我是想说一下在编写程序的时候应该要注意一些小细节,小问题。
首先,第一个 int a[5] = { 0 };int b[5] = { 0 };int i = 0;int temp = 0;
对你程序开始的时候所定义的一些变量要进行初始化,不初始化虽然我没发现什么问题,但是据我所了解,有的时候程序会给一个默认值,就拿int来说,在定义int的时候,如果是局部变量,那么这个int值的默认值会是一个随机值,如果你的int是一个全局变量,那你入股偶在定义的时候不给他初始值那他的默认值就是0;所以在定义的时候为了避免出现问题还是给他的一个初始值。数组在定义的时候也要给他一个初始值,在花括号里边给他一个值,没给的就是默认为0.如果你所定义的是一个指针那就是需要 int *p=NULL;在编写程序的时候要养成,所有定义都要给他初始值的良好习惯。
for (i = 0; i < sizeof(a)/sizeof(a[0]); i++) 再看这个语句,正常的在for循环中会写i<5;但是这里为什么写这个语句呢。这里就是为了以后写项目所着想了,如果你在编写大程序大项目的时候,一旦还是以前那样去写程序,当你的数组的元素数目发生变化的时候,那么你修改起来就十分的困难,所以可以写成sizeof(a)/sizeof(a[0]),这样无论你的数组存的是int类型还是char类型都可以很好的计算你的元素个数,sizeof求的是你所占的内存。
2. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
float sum = 1.0;
int i = 0;
float k = 2.0;
for (i = 2.0; i <=100; i++)
{
if (i % 2 == 0)
{
sum = sum - (1 / k);
k++;
}
else
{
sum = sum + (1 / k);
k++;
}
}
printf("总和为%f", sum);
}
这个项目中你的sum求出来是一个小数,如果你将sum定义成int类型的那你输出来的就是0;
if (i % 2 == 0)
{
sum = sum - (1 / i);
k++;
}
这是我最初写的程序,大部分人的思路肯定也是这样,但是求出来是错误的,因为1是整型数据,i是整形数据,那1/i得出来的也一定是整型数据,i要比1要大所以求出来的都是小数,所以最终数据如果还是整形的话那你求出来的就是0,数据没有小数点位。我是通过重新定义了一个变量k来替代i。其实这个程序解决问题的方法有两种,1是像我刚刚做的那样将i变成一个float类型,2就是将1变成float数据,只要其中一个数据是float类型,那么数据就会被强制类型转换,变成精度高的那个类型。所以可以定义一个数字float a=1.0,将之后运算中的1全都用a来代替就可。
- 小程序中的小问题
- 小程序开发中的问题
- java 小程序中的toString问题
- 实时时钟程序中的小问题
- 程序中的小方法
- 小程序中的单位
- 小程序中的block
- 小程序问题
- 小程序会话问题
- 小程序模态框问题
- java中的小问题
- cup中的小问题
- vc中的小问题
- 链接中的小问题
- JS中的小问题
- 编程中的小问题
- 项目中的小问题
- 线程中的小问题
- 去掉控制台程序的黑框框
- Swift4.0实现简单通讯录功能,FMDB框架实现联系人的增删改查
- 分析C语言声明
- Poj 3279 Fliptile(反转/开关问题)
- java线程安全篇之synchronized 多个线程多个锁(二)
- 小程序中的小问题
- hdu 1534 Schedule Problem
- Sending Packets LightOJ
- 171110 逆向-HCTF(Re1-Evr_Q)
- Android内存泄漏检测工具大全
- django学习链接
- Linux socket 编程
- 第一篇博客
- zotero