回 帖 发 新 帖 刷新版面

主题:C语言初学者请教!!!

[code=c]
#include<stdio.h>
main()
{char *s="\ta\018bc";
for(;*s!='\0';s++) 
printf("*");
printf("\n");}
我已经上机试过,输出6个*,请解释一下为何是这个结果???[code=c]
请填写代码
[/code]
[/code]

回复列表 (共3个回复)

沙发

有什么鸟问题嘛?下次说清楚点,你觉得是几个,以及怎么切分。

"\ta\018bc" 不包括尾部的'\0'的话就是6个字符呀,分别是
'\t', 'a', '\01', '8', 'b', 'c'

反斜杠后面接数字的话,用8进制表示,最多三位
也就是 "\08" 包含 '\0' 和 '8'
也就是 "\018" 包含 '\01' 和 '8'
也就是 "\0128" 包含 '\012' 和 '8'
也就是 "\01238" 包含 '\012' 和 '3' 和 '8'

板凳


高手,我是初学者。能不能劳驾指点一下下面的问题:
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 楼


第一题  静态数组初始化为0, j = 3,你每次循环都是相加的值都是0, 所以结果为0;
第二题  for(i=0;i,n;i++) printf("%3d",a[i]);
循环语句有错误

我来回复

您尚未登录,请登录后再回复。点此登录或注册