‘壹’ c语言怎么判断数组定义是否正确
定义一个数组,就是看它是哪个类型的数组,比如int a[10],char a[10],float a[10]。
再一个就是初始化的问题,如上int a[10],申请了十个内存空间,你不能越界。对于char a[10],要注意“\0”,这里字符串与字符数组要了解。
就这两点基本的了,剩下的就是运算了
‘贰’ C语言数组变量判断
大概看了下需求,楼主stA[6]中保存了等待显示的字符,stB[6]用来保存要显示的数字,table[]中存储了对应数字的转换方式,分为0-9共10个数字.
楼主的问题是如何将stA[6]转换成Int类型数字,然后将table[]中的数值赋值给stB[],最后进行显示.
那么先来讲下如何转换成int,stA[]中定义的成员是int类型,所以这些元素对应的数值其实是ASCII表中的数值,那么查看ASCII表可以知道,'0'对应的数值是48,比如'1' - 48 就等于1,所以这个时候再到table中去取值,就能得到你需要的东西了,用一个循环就能解决,如下:
for (i = 0; i < 6; ++i){
stB[i] = table[stA[i] - 48];
}
‘叁’ c语言判断输入的数组是升序还是降序
判断数组是升序还是降序的前提是数组有序,只需要判断数组第一个元素和第二个元素的大小即可,若第一个元素大于第二个元素,则是降序;否则是升序
‘肆’ c语言用递归判断一个数组是递增还是递减
如果中间有相等 3,2,1,1,1,1, 0 ,这不算降序,算无序了!!!
我重新优化了一下,虽改了一点点,但效率提高了很多;
#include "stdio.h"
int order(int dat[ ],int n)
//升序就输出return 1,降序输出-1,乱序输出0
{
int t=dat[1]-dat[0];
int r=t>0?1:(t<0?-1:0);
if (r==0||n<=2) // r==0 时,不管N多少,都不再递归下去,这大大优化了
return(r);
int r1=order(dat+1,n-1);
return (r1==r?r:0);
} // 这递归算法仅六行,够短的了 !!!!
main()
{
int dat[ ]={1,4,2,6};
printf("%d",order(dat,4));
}
我用C++BUILDER6试过了,我的递归是正确的
‘伍’ C语言如何写才能判断两个数组相等
#include<stdio.h>
intmain()
{
inti=0;
intj=0;
intarr1[]={1,2,3,4,5};
intarr2[]={1,2,7,4,9};
for(i=0;i<sizeof(arr1)/sizeof(arr1[0]);i++)
{
for(j=0;j<sizeof(arr2)/sizeof(arr2[0]);j++)
{
if(arr1[i]==arr2[j])
{
printf("存在相同元素");
break;
}
}
break;
}
return0;
}
(5)c语言数组判断晋级扩展阅读
C++比较两个数组是否相等
constintSIZE=5;
intarrayA[SIZE]={5,10,15,20,25};
intarrayB[SIZE]={5,10,15,20,25};
boolarraysEqual=true;//标志变量
intcount=0;//循环控制变量
//确定元素是否包含相同的数据
while(arraysEqual&&count<SIZE)
{
if(arrayA[count]!=arrayB[count])
arraysEqual=false;
count++;
}
//显示合适的消息
if(arraysEqual)
cout<<"Thearraysareequal. ";
else
cout<<"Thearraysarenotequal. ";