C语言结构体数组赋值问题

将每个结构体数组进行赋值并输出#include"stdio.h"#defineN3structR{chara[1];charb[1];}A[N],B[N];voidmai... 将每个结构体数组进行赋值并输出

#include "stdio.h"
#define N 3
struct R{
char a[1];
char b[1];
}A[N],B[N];
void main(){
int i;
for(i=0;i<N;i++){
printf("A%d\t",i+1);
scanf("%s %s",&(A[i].a),&(A[i].b));
}
for(i=0;i<N;i++){
printf("B%d\t",i+1);
scanf("%s %s",&(B[i].a),&(B[i].b));
}
for(i=0;i<N;i++){
printf("%s,%s\t",(A[i].a),(A[i].b));
}
for(i=0;i<N;i++){
printf("%s,%s\t",(B[i].a),(B[i].b));
}
}

输入:1 a
2 a
3 a
1 s
2 s
3 s
输出:
1a2a3a,a2a3a 2a3a,a2a 3a,a 1s2s3s,s2s3s 2s3s,s3s 3s,s
求各位大师指点 谢谢
目的输出的是1,a 2,a 3,a 1,s 2,s 3,s
展开
 我来答
百度网友83cdc1c
2015-05-14 · TA获得超过5790个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:834万
展开全部

代码里几个问题:

  1. 结构体R里,成员变量a和b数组长度都是1,不如直接定义成char a和char b;

  2. 把所有scanf和printf里的%s都换成%c;

  3. 前面两个for循环,循环体里,每次读取完字符,加一条语句getchar(),把输入缓冲区的内容清空。

修改代码如下:

#include "stdio.h"
#define N 3
struct R{
 char a;
 char b;
}A[N],B[N];
void main(){
 int i;
 for(i=0;i<N;i++){
  printf("A%d\t",i+1);
  scanf("%c %c",&(A[i].a),&(A[i].b));
  getchar();
 }
 for(i=0;i<N;i++){
  printf("B%d\t",i+1);
  scanf("%c %c",&(B[i].a),&(B[i].b));
  getchar();
 }
 for(i=0;i<N;i++){
  printf("%c,%c\t",(A[i].a),(A[i].b));
 }
 for(i=0;i<N;i++){
  printf("%c,%c\t",(B[i].a),(B[i].b));
  }
}
羿天哈晓桐
2019-12-22 · TA获得超过3609个赞
知道大有可为答主
回答量:2975
采纳率:27%
帮助的人:400万
展开全部
其实你的程序是正确的。只不过,TC有关于float(浮点数)的BUG而已。
scanf:floating
point
formats
not
linked
解决这个问题有一个方法,先#include
<math.h>
然后在main的第一句,调用
sqrt(0);
//求0的平方根,但舍弃结果
//这句的作用,只是为了让TC打开浮点数支持
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式