即使在c中声明变量后仍返回垃圾值的程序
如何更正此问题 我不是故意使用结构的 这是一个输入学生姓名、科目和分数的程序。 在最后一个块中,数组(subject+f)的第一个下标返回垃圾值,而其余下标返回所需的结果。 我还发布了输出图像作为链接即使在c中声明变量后仍返回垃圾值的程序,c,multidimensional-array,C,Multidimensional Array,如何更正此问题 我不是故意使用结构的 这是一个输入学生姓名、科目和分数的程序。 在最后一个块中,数组(subject+f)的第一个下标返回垃圾值,而其余下标返回所需的结果。 我还发布了输出图像作为链接 #包括 #包括 int main() { 整数大小,i,k,sub,a=0,参考; int-temp,已排序; 煤焦温度[10]; char temp_sb[10]; printf(“输入类的大小\n”); scanf(“%d”,大小(&S); printf(“有多少主题?\n”); scanf(
#包括
#包括
int main()
{
整数大小,i,k,sub,a=0,参考;
int-temp,已排序;
煤焦温度[10];
char temp_sb[10];
printf(“输入类的大小\n”);
scanf(“%d”,大小(&S);
printf(“有多少主题?\n”);
scanf(“%d”、&sub);
参考=sub;
字符名称[大小][20];
字符主题[size*sub][20];
整数标记[子*大小];
整数总计、小计、合计;
对于(k=0;k而言,除了名称和主题的长度问题外,这是一个主要问题:
(subject+k)
您可能误解了主语[k]
和*(主语+k)
等同物
变量subject
是一个数组数组。这意味着subject[i]
是一个数组(字符char
,可以用作以零结尾的字符串)
表达式(subject+k)
是指向subject[k]
中数组的指针。它等于&subject[k]
,其类型为char(*)[10]
。如果不取消引用,它就不能用作以零结尾的字符串。因此,也可以使用*(subject+k)
或者简单易懂的主题[k]
我想你也需要改变
int marks[sub];
到
每个学生每门学科一个分数,对吗?我建议您使用调试器并逐步完成程序。您的索引肯定有问题。是否有学生或学科名称超过九个字符?为什么不使用学科[f]?我认为主题是一个字符**,你想要一个字符*。二维数组是指向一个指针的指针。虽然你想要在字符*中写入。它现在可以工作了,但是(j=a;jc您能用当前完整的代码更新问题吗?我更新了它。只要输入的大小不超过2,它就可以正常工作。在提示标记之前添加此调试语句,我想您会看到正在发生的事情printf(“%d..%d\n”,j,reference)
谢谢。问题出在reference=reference+j;
上。所以我把它改成了reference=sub+j
我理解,但它似乎对结果没有任何影响。尽管我已经纠正了它。
int marks[sub];
int marks[size * sub];