C无法存储到数组中 printf(“\n\t有许多整数:”); scanf(“%d”和&num); iPtr=(int*)malloc(num*sizeof(int)); 对于(i=0;i这是一个赋值运算符。i、 e您正在将y的值赋给x。这将始终将y分配给x,并执行其中的语句
我正在编写一个程序来存储整数中出现的数字,但当我运行该程序时,我发现数组不工作 所以我想问为什么不允许我存储整数中的数字? 如何修复它 还有一个问题,if(x=y)和if(x=y)之间有什么不同C无法存储到数组中 printf(“\n\t有许多整数:”); scanf(“%d”和&num); iPtr=(int*)malloc(num*sizeof(int)); 对于(i=0;i这是一个赋值运算符。i、 e您正在将y的值赋给x。这将始终将y分配给x,并执行其中的语句,c,arrays,C,Arrays,我正在编写一个程序来存储整数中出现的数字,但当我运行该程序时,我发现数组不工作 所以我想问为什么不允许我存储整数中的数字? 如何修复它 还有一个问题,if(x=y)和if(x=y)之间有什么不同 printf("\n\tHow many integers: "); scanf("%d", &num); iPtr = (int*) malloc(num * sizeof(int)); for(i = 0; i < num; i++) { p
printf("\n\tHow many integers: ");
scanf("%d", &num);
iPtr = (int*) malloc(num * sizeof(int));
for(i = 0; i < num; i++) {
printf("Enter integer # %d ", i + 1);
scanf("%d", (iPtr + i));
temp = *(iPtr + i);
while(temp != 0) {
if(i == temp % 10) {
ary[i]++;
}
temp /= 10;
}
}
for(i = 0; i < 10; i++) {
if(ary[i] > 0) {
printf("digit %d : %d\n", i, ary[i]);
}
}
由于,==在%之前计算。通过用括号括住%进行修复:
if(i == temp % 10)
另外,要回答您的其他问题以及一些吹毛求疵的问题(事先道歉):
- =是赋值,==是相等性测试
- 根据您所说的,您的内部while循环可能误用了i
- 您的问题在于这一行:
printf("\n\tHow many integers: ");
scanf("%d", &num);
iPtr = (int*) malloc(num * sizeof(int));
for(i = 0; i < num; i++) {
printf("Enter integer # %d ", i + 1);
scanf("%d", (iPtr + i));
temp = *(iPtr + i);
while(temp != 0) {
if(i == temp % 10) {
ary[i]++;
}
temp /= 10;
}
}
for(i = 0; i < 10; i++) {
if(ary[i] > 0) {
printf("digit %d : %d\n", i, ary[i]);
}
}
由于,==在%之前计算。通过用括号括住%进行修复:
if(i == temp % 10)
另外,要回答您的其他问题以及一些吹毛求疵的问题(事先道歉):
- =是赋值,==是相等性测试
- 根据您所说的,您的内部while循环可能误用了i
如果(x==y)->这是一个比较运算符。这里比较的是x的值是否等于y。如果为true,它将在{}内执行语句,否则不会执行。以下循环需要重新考虑
if(i == (temp % 10))
我不知道你在这里尝试什么
首先考虑if(i==temp%10)
你在这里做的事情太多了。这里我将与10模温度进行比较,如果它们相等,则继续将它们存储到数组中
假设您刚刚开始执行这个循环。所以i=0。假设您输入的第一个数字是1023。所以
while(temp != 0) {
if(i == temp % 10) {
ary[i]++;
}
temp /= 10;
}
现在1023%10会给你3
因此,如果(0==3),if循环将变成if
//这是一个等式检查。0是否等于3
显然,这将是错误的,因此内部数组循环永远不会执行 以下循环需要重新考虑
if(i == (temp % 10))
我不知道你在这里尝试什么
首先考虑if(i==temp%10)
你在这里做的事情太多了。这里我将与10模温度进行比较,如果它们相等,则继续将它们存储到数组中
假设您刚刚开始执行这个循环。所以i=0。假设您输入的第一个数字是1023。所以
while(temp != 0) {
if(i == temp % 10) {
ary[i]++;
}
temp /= 10;
}
现在1023%10会给你3
因此,如果(0==3),if循环将变成if
//这是一个等式检查。0是否等于3
显然,这将是错误的,因此内部数组循环永远不会执行 好的,您几乎已经做对了,但我认为最大的问题是您的数组中有垃圾(声明时) 到
for(int zz=0;zz<10;zz++)
{
如果((zz)=温度%10)
{
ary[zz]++;
}
}
现在程序计算所有数字。
输出:
这都是假设我理解你的程序是正确的。通常我不喜欢直截了当的发帖代码,但我真的不知道怎样才能让别人明白这一点。疲倦的自动取款机/ 好的,您几乎已经做对了,但我认为最大的问题是您的数组中有垃圾(声明时) 到
for(int zz=0;zz<10;zz++)
{
如果((zz)=温度%10)
{
ary[zz]++;
}
}
现在程序计算所有数字。
输出:
这都是假设我理解你的程序是正确的。通常我不喜欢直截了当的发帖代码,但我真的不知道怎样才能让别人明白这一点。疲倦的自动取款机/ 这不是C#,这是C。请只问一个问题,并澄清什么是“不起作用”。你期待什么?你观察到了什么?这不是C#,而是C。请只问一个问题,并澄清什么“不起作用”。你期待什么?您观察到了什么?我尝试了if(I==(temp%10)),但它仍然不允许我存储,最后的循环将打印所有有值的ary元素,但没有打印任何内容除非我读错了,否则运算符优先级链接将模数[%]列在[==]上方。我刚刚测试了这个特殊的比较,结果和预期的一样。你的建议似乎不正确。@Alex你是对的;我想真正的错误可能是我用错了。@CongXu这里指定的优先级不正确。内部温度=4;如果(1==温度%3)printf(“真”);如果(1==(温度%3))printf(“真”);都将返回true。我尝试了if(I==(temp%10)),但它仍然不允许我存储,最后的循环将打印所有有值的ary元素,但没有打印任何内容除非我读错了,否则您的操作