求解C语言一道改错题

程序的功能是使用结构体存储3个同学的姓名、学号,并输出到屏幕。
代码:
#include<stdio.h>

/*********Found************/
#define N=3

struct communication
{
char name[20];
long int No;
} commun[N];

void set_record(struct communication *p);
void print_record(struct communication *p);

int main(void)
{
int i;

for(i=0; i<N; i++)
{
set_record(commun + i);
print_record(commun + i);
}

return 0;
}

void set_record(struct communication *p)
{
printf("Set a record\n");
/*********Found************/
scanf("%s %ld", name, &No);
}

void print_record (struct communication *p)
{
printf("Print a record\n");
printf("Name: %s\n", p->name);
printf("No: %ld\n\n", p->No);
}
错误在/*********Found************/下面一行里面找

#define N=3
改为#define N 3
/*********Found************/

scanf("%s %ld", name, &No);
改变为
scanf("%s %ld", p->name, &(p->No));
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言求改错
一、denominator=denominator+3 (- -||| 这也太粗心了吧)二、错在判断while()上,当item为负数,如-1\/4时就退出循环了。可以考虑加个if判断 while(1.0*item>=eps){ item=flag*1.0\/denominator;flag=-flag;s=s+item;denominator=denominator+3;if(item<0) \/\/加这两句,相当于把负数变...

请C高手进来,c语言改错考试题,谢谢^_^
1.第一个问题是考察int *const与int const*的区别。int *const ptr表示指向一个整形的静态指针,也就是说ptr指向的值(*ptr)可以变,但ptr不可以变。因此ptr=&y;是不正确的。而int const *(即const int *)表示指向静态整形的指针,也就是说ptr指向的值(*ptr)不可以变,但ptr可以变。答案...

c语言改错题
include<conio.h>#include<stdio.h>\/\/int found(int a[10][30],int n) \/\/错误,弹出错误 [Error] type of formal parameter 1 is incomplete int found(int a[10][30],int n) \/\/改错 { int i, j, s, k, x;\/\/for(i=0, k=1; k<=n; k++) \/\/修改 i=0; \/\/此处修改,...

C语言关于函数(无参数限制)求参数最大值的改错题目。
首先是va_start都是与va_end配对使用的。另外逻辑上有点小问题。以下是我改的,测试通过 include <stdio.h> include <stdlib.h> include <stdarg.h> int max_list(int n, ...) { va_list var_arg;int max, k = 0;va_start(var_arg, n);max = va_arg(var_arg,int);for (; k ...

C语言改错题,小白求解
看了下代码,问题应该都是变量命名,如图:1、sun应该是sum,sun是没有定义过的变量 2、P==n这个中的P也是没有被声明过的,应该是小写p 其他逻辑看了下好像没有什么感觉异常的

一道C语言改错题?
3个错误:数组是升序排列,i,j作为一个区间逐步缩小来查找,每次区间范围缩小一半,当xa[k]时,即x在a[k]右边范围则将下限i=k+1,当a[k]==x时,直接跳出;找到a[k]后删除,使a[k]后面的数向前移动,a[9]置0;3.输出新的数组,前面也加个输出原始数据对比下。include "stdafx.h"include...

初学者C语言程序改错题
首先我指出你书写的一个错误。switch(c-'2')下面那行的(应该改成{ 因为{是与default:putchar(c+2);下面出现的}进行配对的。依次输入2473得到输出668977,只需修改一处地方。在case 2:putchar(c+4);后面加上 break;分析如下:使用getchar输入,每次只能识别一个字符,而又使用了while循环,输入2473...

C语言改错题怎么做?
显然p不为空,故进入else,删除p所指结点需要两步,第一步是:q->next=p->next,即将q的下一个结点指向p的下一个结点(q的下一个结点原本是p,这样操作相当于在链表中删除了p所指结点)。第二歩是:free(p),即释放p所指结点。故答案为:将q=p->next改为q->next=p->next。望采纳!

急!在线等!! 一道c语言程序 改错 题
你所以进行的计算是整数值比较小、小数值比较大的计算,如果用double的话,相当于用一大脸盆去装一个绿豆,效果反而不好,所以全部改为float。float fun(float eps){ int i;float p,m,n;float s=1;n=1;for (i=1,p=1,m=1;n>eps;i++) { p*=i;m*=(2*i+1); \/*如果不加括号,...

c语言程序求改错 【问题描述】 输入三位数字N,求两位数AB(其中个位数字...
这个程序a无法循环到2以上,只能是1 --- 你的大括号乱用,for (a=1...)的循环体内有句 return 0; 怎么可能到达a==2嘛!且怎样加入条件a!=b,我尝试加在b<=9的后面 --- 因为条件有a<b,所以,这句for(b=1;b<=9;b++) 直接改成 for(b=a+1;b<=9;b++)不就是了,同时for(...

相似回答