C语言最大子数组问题题求详细解答

C语言数组问题,求大神解答_百度知道
C语言数组问题,求大神解答
我有更好的答案
#include&&stdio.h&void&main(&){int&i,j,m,n,k,a[1000]={0};scanf(&%d&,&n);k=n;for(i=0;i&n;i++)scanf(&%d&,&a[i]);scanf(&%d&,&m);for(i=0;i&n;i++){if(a[i]==m){for(j=i+1;j&n;j++)a[j-1]=a[j];k--;}}for(i=0;i&k;i++)printf(&%d&&,a[i]);}
采纳率:78%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。论文发表、论文指导
周一至周五
9:00&22:00
C语言数组应用示例
  摘要:本文着重研究C语言数组应用问题。 中国论文网 /2/view-421751.htm  关键词:C语言 数组应用 程序      C语言是国内外广泛使用的结构化程序设计语言,它功能丰富、表达能力强、使用方便灵活、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多优点。因此,C语言既可以用于开发系统软件,也可以用来开发应用软件,应用面非常广,许多大型的软件都是采用C语言开发的。   目前多数高等院校不仅计算机专业开设C语言这门课,而且,非计算机专业也有很多开设了这门课。同时亦有很多学生选择了C语言作为参加全国计算机等级考试(二级)的考试科目。   当然,近年来,许多其他大型化的软件百花齐放,C语言的地位也受到了很大冲击,但它在高等职业和中等职业的教学中仍然扮演着非常重要的角色。   在C语言的许多实际应用中,需要存储与处理大量的数据,例如,在数值计算中、向量和矩阵的运算,它们不但有多个数据,而且各数据之间有一定的次序。再如,在数据处理中,一张表格也有多个数据和行列之间的顺序关系。诸如此类,数据量大,数据之间有一定的次序关系的问题,如果用简单的变量来表示,由于简单变量都是各自独立的,相互之间没有什么内在的联系,不仅十分繁琐,而且很难描述它们之间的顺序关系,当数据量很大时候,使用数量有限的简单变量是无法做到的。程序处理的对象是数据,数据的关系是多样化的,为了便于存储和处理大批量的或有一定内在联系的数据,需要将多个变量组织成一定的结构形式,这就是C语言中数组及数组元素。   把数组简单理解为存储数据的一组变量,这样定义和理解数组应用是不够的,数组是一组有序的变量序列,可以用序列的逻辑关系来进行数值和信息的处理,构造新的算法,比如超大值的算法问题就可以用数组来完成,如:几十位、几百位数相加用普通的方法是不能够实现的,在这里,数组的每一个元素对应的是十进制的一位数字,数组每一位元素的取得可以由数组赋值语句取得也可以由十进制数取得,对于一组十进制数可以计算其长度然后除以它的位权再取整,将整数部分赋值给数组相对应的数组元素即可。   例一:a{i}+x数组a{i}与十进制数x相加   这里数组a[i]中每个数组元素代表一个十进制数字,a[0]代表个位,a[1]代表十位,a[i]就代表了一组十进制数。   for(i=0;i<=x;i++)做 X次循环   {a[0]++;X次循环每次a数组加1   if (a[0]=10)当个位满10时   {a[0]=0; 个位置0   a[1]++; 进位   for(k=1;k<=i-2;k++) 将数组个位以上各位处理进位   {if(a[k]=10)   {a[k]=0;   a[k+1]++;   }}}}   这是比较简单的情形,还可以进一步考虑两个数组的加法,c[k]=a[i]+b[j],那样的算法要复杂些,先将数组对应位置的数据相加,然后处理结果中进位问题。   例二:10位数组a[10]*x数组a{i}与十进制数x相乘   i=2;   while(i<=x) x次循环,每次循环a[10]自加一次   {for(l=0;l<=9;l++)a[10]自身复制给b[10]   b[l]=a[l];   for(k=1;k<=i;k++)   {for(j=0;j<=9;j++) 对a[10]数组每位进行进位处理   {a[j]=a[j]+b[j];   if (a[j]>=10)   {a[j]=a[j]-10;   a[j+1]++;   }}}}   减法的算法要复杂的多,数组形式的数与一个十进制数相减,减数每次循环自减1,至0为止,被减数每次自减1,不够减的时候进行借位处理,即:a[i+1]--,还得考虑重复借位,如果减数是数组形式那减数每次做减1操作时候要考虑借位及连续借位的为题,比较复杂。   除法相对最为复杂,可将被减数减去减数(参照减法操作),累计次数,累计值即为商,如要考虑小数则更为复杂。   例三:求100!   100!的运算结果达到一百多位,这样超大值的计算,普通的方法是无法完成的,利用数组就可以比较方便地来实现100!的计算,将数组中的每一个元素作为100!计算中的一位数字,a[0]为个位,a[1]为十位,将乘法用加法来代替,例如a*3可以当做a自加三次,对这种数组形式的运算来说则要在每加一次以后进行进位处理,即数组中每个元素如果有进位则要进行进位处理。   设置两个数组a、b,包含170个数组元素,即a[0]―a[169]、b[0]―b[169],其中b数组为中间数据处理数组,将a数组置初值1,当i值为 2、3、4……100时候做i次的循环,每次a数组自加i次,每加一次做一次进位处理,结束时,a数组的结果就是100!。   main()   {int a[170],b[170]; 定义数组   int i,j,k,l; 设置变量   for(i=0;i<=169;i++)置数组初值   {a[i]=0;   b[i]=0;}   a[0]=1;a数组置1   i=2;   while(i<=100) i值在2----100时 进行循环   {for(l=0;l<=169;l++)   b[l]=a[l]; a数组中间结果存b数组   for(k=1;k<=i;k++) a数组自加操作   {for(j=0;j<=168;j++)   {a[j]=a[j]+b[j];   if (a[j]>=10)进位处理   {a[j]=a[j]-10;   a[j+1]++;   }}}   i++;}   for(j=169;j>=0;j--)显示结果   printf("%d",a[j]);}   当前在高职高专计算机教学中,c语言教学更多是用来培养学生建立程序设计的理念,即:根据问题建立数据模型、通过编程解决数据模型,而在本例中,100!运算数据量大,普通变量难以承担这样的计算,通过对数组应用的学习,使学生了解数组的概念、特性,就可以通过数组建立超大数据模型来解决解决类似问题,数组每一个元素就是数据中的一位数字,这就解决了位数不够的问题。同时,还要解决运算方式的问题,数组每一个元素是代表一位数字,所以当然不能用常规的加、减、乘、除、乘方等现成的算法,而是要通过编程建立新的运算方法,通过调用这些程序实现数组形式的数据运算。
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。c语言数组问题,求大神指导小弟
[问题点数:40分,结帖人ma]
本版专家分:0
CSDN今日推荐
本版专家分:0
本版专家分:424
2013年 总版技术专家分年内排行榜第九
2013年4月 总版技术专家分月排行榜第一2013年3月 总版技术专家分月排行榜第一
2013年4月 .NET技术大版内专家分月排行榜第一2013年3月 .NET技术大版内专家分月排行榜第一
2013年2月 .NET技术大版内专家分月排行榜第三
本版专家分:424
2013年 总版技术专家分年内排行榜第九
2013年4月 总版技术专家分月排行榜第一2013年3月 总版技术专家分月排行榜第一
2013年4月 .NET技术大版内专家分月排行榜第一2013年3月 .NET技术大版内专家分月排行榜第一
2013年2月 .NET技术大版内专家分月排行榜第三
本版专家分:10
匿名用户不能发表回复!|
CSDN今日推荐豆丁微信公众号
君,已阅读到文档的结尾了呢~~
大学c语言课程习题精选(必考)
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
c语言数组习题
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口C语言的数组问题
浏览 537回答 4
qq_懵懂的家伙_
老哥,你试过多次了吗。有可能是因为,虽然你arr【】没什么作用,但你arr[4],是越界了,那么巧了,刚好你arr[4]就是你x的存储空间,于是就可以出现输出4的情况。我看过有道题是这样死循环的main()
int arr[10],i;
for(i=0;i&=10;i++)
}可以看到i=10,越界,;刚好定义是int arr[10],i;
i被分配到数组后一个空间。越界时候操作了arr[10]=0,此时arr[10]实际也是i的空间,导致i又变成0,判断又小于10,死循环。不过据说现在有些编译器都会在数组后面的空间空一格,隔开变量。不过大多编译器都能提示编译错误。
turboburst
虽然C我不是很熟练,但是从代码来看,你的Fun方法中根本就没对x做任何的处理,那两个对数组的操作根本就不知道是干啥的完全没用,所以,是不太可能对x值有任何影响的。你再试一次,如果仍然是打印出4,你要看看是否有语法的问题。
最后一个花括号请忽略
传入的值是1,,,却打印4,,这算咋回事
void Fun(int x)
int arr[2] = {0};
arr[4] = 4;
printf(&%d\n&,x)
int main(int argc, char* argv[])
int x = 1;
随时随地看视频

我要回帖

更多关于 数组练习题 的文章

 

随机推荐