用C语言解决问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言解决问题?相关的知识,希望对你有一定的参考价值。

如何解决函数多次调用?
#include <stdio.h>
void add(int* num1, int* num2,int lenth)

int i=0;
for (i = 0; i < lenth; i++)

num2[i] = num1[i] + 1;


int main()

int num1[20] = 1, 2, 3, 4, 5, 5, 6, 1, 4, 5, 5, 7, 1, 5, 3, 8, 3, 5, 9, 1 ;
int lenth = 20,i;
int num2[20], num3[20], num4[20], num5[20],........, num1000[20] ;
add(num1, num2, lenth);
add(num2, num3, lenth);
add(num3, num4, lenth);
add(num4, num5, lenth);
.;
.;
.;
以此类推
add(num999, num1000, lenth);
for (i = 0; i < 20; i++)

printf("%-3d=%-3d=%-3d=.....%-3d\n", num2[i],num3[i],num4[i],....,num1000[i]);

参考技术A 你可以用一个二维数组代替一维数组:
int num[1000][20],i,j, lenth=20;
int num1[20] = 1, 2, 3, 4, 5, 5, 6, 1, 4, 5, 5, 7, 1, 5, 3, 8, 3, 5, 9, 1 ;
初值 for (i=0;i<lenth;i++) num[0][i]=num1[i];
双重循环语句计算:
for (j=1;j<=1000;j++) for (i=0;i<lenth;i++) num[j][i]=num[j-1][i] + 1;
输出也类似,双重循环。
-----
节省内存方法:
只声明 int num1[20],num2[20]; 初始化 num1[i] 数组
做循环 500 次:
1推算2 : add(num1,num2,lenth);

输出 num1[i] 数组
2推算1: add(num2,num1,lenth);
输出 num2[i] 数组

完毕。追问

生成项目没有问题,但是运行出错

追答

输出语句写错了。你是单循环,给了j, 没给 i 下标值。

参考技术B 你这样定义根本没法循环调用,而且你也不可能在代码里定义1000个变量在代码里初始化吧
要好好看看数据结构,利用数据结构解决问题
例如定义int num[N][20]数组,
for(int i=0; i< 1000; i++)
add(num[i], num[i+1],length);
参考技术C 这是数学模型课里面的例子,一般用lingo或matlab调用规划函数实现。
用c语言一般在符合条件下,用穷举的方式来实现,肯定可以做,比较麻烦些。
参考技术D #include #include int main(void) int i; float x,y,a,b,r,min=1000; for(i=1;ir) min=r; a=x; b=y; printf("x=%f,y=%f,r=%f",a,b,min); return 0; 手机上编写的,没有编译,你试运行一下,不行再和我说追问

好的,谢谢你了

第5个回答  2021-11-07 先很明确的告诉你,如果说一个人特别是情侣在另外一个人面前经常没有理由大吼大叫,还无理取闹的话,那么另外一个人承担久了是很累,这是很累的情况,你站在对方的角度,稍微的考虑一下,这都是,会很累的!

C语言里面float数据用printf(“%d”)输出的问题

#include<stdio.h>main() float a[3]=3*0; int i; for(i=0;i<3;i++) scanf("%f",a); for(i=0;i<3;i++) printf("%d\n",a[i]);

为什么输出是0?

C语言里面float数据用printf(“%d”)输出是0,是float数据使用错误造成的,解决方法如下:

1、首先在电脑中打开C-Free 5编译器(界面) -> 文件 -> 新建(Ctrl+N)。

2、然后输入下图所示代码。

3、编译成功后的截图。如果编译失败,请检查语法或者编译器是否有问题。

4、程序运行截图(开始和结束)。使用了<\\b>之后没有system("cls");那么闪烁。system("cls");会清空屏幕上所有的信息。

5、最后输出结束,如下图所示就完成了。

参考技术A C Primer Plus 第五版(中文版)P54:

注意,使用%d显示float值不会把该float值转换为近似的int值,而是显示垃圾值。与之类似,使用%f显示int值也不会把该int值转换为浮点值。而且,参数的数目不足和类型不匹配所造成的结果也将随平台的不同而不同。
。。。。。。

另外,float在计算中会自动转换成double类型。如果是64位的话,你这些输入的值用二进制,后32位数字几乎都是0,%d只处理int类型,一般是32位,因此这个以%d输出的数值当然是0了。如果你用%lld来输出的结果就不一样了。不同编译环境的结果可能不一样,因为int、double等等数据类型的大小可能不尽相同
参考技术B 为什么我做题目的时候,使用float a[3]=3*0初始化数组是错误的。
但是使用scanf("%d",&a[i]);和使用printf("%d\n",a[0])却没错?我好迷啊
参考技术C 首先你接收数据有误,你只接收第一个元素。
for(i=0;i<3;i++) scanf("%f",a);
修改为:
for(i=0;i<3;i++)
scanf("%f",&a[i]);

其次,输出要强制类型转换
for(i=0;i<3;i++)

printf("%d\n",a[i]);
修改为:
for(i=0;i<3;i++)

printf("%d\n",int(a[i]));

修改后:
#include<stdio.h>

void main()



float a[3]=3*0;

int i;

for(i=0;i<3;i++)
scanf("%f",&a[i]);

for(i=0;i<3;i++)
printf("%d\n",int(a[i]));

追问

我知道啊。。。但是为什么有的时候用%d输出会出现错误。但是这个出现的是0?

追答

你接收数据有误,
for(i=0;i<3;i++) scanf("%f",a);//你这里用的是a,它表示首地址,所以你每次都是用第一个元素去接收数据,第二个和第三个元素根本就没有接收到数据,所以是初始值0。

追问

我也知道啊。。为什么第一个也是0呢。。

参考技术D printf("%f\n",a[i]);追问

为什么用%d输出是零?

以上是关于用C语言解决问题?的主要内容,如果未能解决你的问题,请参考以下文章

用c语言解决集合中关于子集的问题

c语言问题 帮帮忙吧,用c语言编程,解决以下问题: 3对情侣参加婚礼,3个新郎分别为A,B,C,

怎样用c语言来解决排序问题

C语言 用递归算法来解决猴子吃桃问题。:一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一

用 结构体地址 调用 结构体中元素 非常慢的问题,怎么解决?但就C语言,不说引用

C语言递归算法解决李白打酒问题