主题:C语言初学者请教!!!
tulingjiang
[专家分:20] 发布于 2012-03-10 15:25:00
[code=c]
#include<stdio.h>
main()
{char *s="\ta\018bc";
for(;*s!='\0';s++)
printf("*");
printf("\n");}
我已经上机试过,输出6个*,请解释一下为何是这个结果???[code=c]
请填写代码
[/code]
[/code]
回复列表 (共3个回复)
沙发
bruceteen [专家分:42660] 发布于 2012-03-10 16:31:00
有什么鸟问题嘛?下次说清楚点,你觉得是几个,以及怎么切分。
"\ta\018bc" 不包括尾部的'\0'的话就是6个字符呀,分别是
'\t', 'a', '\01', '8', 'b', 'c'
反斜杠后面接数字的话,用8进制表示,最多三位
也就是 "\08" 包含 '\0' 和 '8'
也就是 "\018" 包含 '\01' 和 '8'
也就是 "\0128" 包含 '\012' 和 '8'
也就是 "\01238" 包含 '\012' 和 '3' 和 '8'
板凳
tulingjiang [专家分:20] 发布于 2012-03-10 21:59:00
高手,我是初学者。能不能劳驾指点一下下面的问题:
1.
#include<stdio.h>
void main()
{int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d\n",x);
}
为什么结果是 0 呢?
2.
#include<stdio.h>
# define N 80
int fun(int a[],int n)
{int i,j=1;
for(i=1;i<n;i++)
if(a[j-1]!=a[i])
a[j++]=a[i];
return j;
}
main()
{int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf("The original data:\n");
for(i=0;i,n;i++) printf("%3d",a[i]);
n=fun(a,n);
printf("\nThe data after deleted :\n");
for(i=0;i<n;i++) printf("%3d",a[i]);printf("\n\n");
}
此程序,编译连接时都没问题,结果运行时有问题,程序的功能是除去数组中重复的数字,相同数字只保留一个。
3 楼
kdzhangbin123 [专家分:50] 发布于 2012-03-19 20:15:00
第一题 静态数组初始化为0, j = 3,你每次循环都是相加的值都是0, 所以结果为0;
第二题 for(i=0;i,n;i++) printf("%3d",a[i]);
循环语句有错误
我来回复