请楼主复习一下教材中“数组”这一章节,一维数组在定义时,长度是不省略的,即定义数组时,方括号中是一个‘常量表达式’(注意:是常量),不能通过动态的方式赋予数组长度。
所以本程序中,楼主的本意是想通过strlen()函数来测得a数组的长度,但这是做不到的。
祝你提高!
B,串复制
先讲d++=s++,作用相当于d=s;s++;d++;这3句
然后=号的返回值是赋值的结果,因为字符串结束符是'\0',也就是0,字符结束以前返回值一直不为0就一直循环,当碰到0循环就停止了,这时候一个字符串也复制完 了
#include <stdioh> //包含头文件stdioh
void dec2hex(int n, char str[]) 函数dec2hex,没有返回值,带一个整型参数和一个字符串数组参数
{
int m,i,j; 定义三个整型变量m,i,j
char t; 定义字符变量t
m=0;初始m为0
do { //do{}while(n>0)循环体,当n等于小于0时结束
k = n % 16; n对16取余,并把值赋予k
if(k>9) if语句,当k大于9时执行
str[m]='0'+k; 把字符'0'+k赋值给数组str的第m+1(数组下标从0开始)个值
else 如果k小于等于9时执行
str[m]='A'+k-10;把字符'A'+k-10给数组str的第m+1个值
m++; m自加1
n = n / 16; n除与16(取整,小数点不要),并把值赋给n
} while (n>0); n大于0时继续执行dowhile()
str[m] = '\0'; 把字符'\0'(字符串的结束字符)赋给str[m]
for (i=0,j=m-1;i<j;i++,j--) for循环,i 初始值为0,j 初始值为m-1,当 i 小于 j 时,执行for循环,每次循环结束后 i 加 1,j 减 1
{
str[i]=t; 把 t 值赋给数组str[i],这里好像错了,我觉得是 t = str[i];
str[i]=str[j]; 把值str[j]赋给str[i]
str[j]=t; 把 t 值赋给str[j]
} for循环的作用是把数组str的值倒过来,如:原来的值为 0 1 2 3,倒过来后为3 2 1 0
}
main() 主函数main
{
char str[80]; 定义一个长度为80个字符的数组str
int n; 定义一个整型变量n
scanf("%d",&n); 从终端输入一个整数,并存入n中
str=dec2hex(n); 调用函数dec2hex,并把返回值赋给str,我觉得这也出错了,应该为
dec2hex(n, str);
puts(str); 把数组str的字符串输出到终端
}
这种问题是双线圈造成的 ,如果你在程序的其他地方也输出了Y0A4 ,
当PLC扫描输入信号的时候,假设你一个条件是让Y0A4置ON的
而另一个条件却是让Y0A4置OFF的 那么PLC输出就会出错,
这是常见的编程错误,不严谨造成的。
以上就是关于c程序设计全部的内容,包括:c程序设计、C程序题,说明理由、解释C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)