问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言结构体变量的问题

发布网友 发布时间:2023-03-23 10:48

我来回答

5个回答

热心网友 时间:2023-10-14 07:11

老大,I服了U,错误一大堆,继续努力哈。

#include <stdio.h>
#include "string.h"//
int main()
{
 struct Student
 {
  char name[20];
  char sex[10];
  char addr[20];
 };

 Student ab,ac;//
 strcpy(ab.name,"ZhangSan");
 strcpy(ab.sex,"man");
 strcpy(ab.addr,"123 beijing road");
 strcpy(ac.name,"LiSi");
 strcpy(ac.sex,"woman");
 strcpy(ac.addr,"124 beijing road");
 
 char a[20];
 printf("请输入名字\n");
 scanf("%s",a);//去掉地址符

int iRes=0;
if(strcmp(a,ab.name)==0)iRes=1;
else if(strcmp(a,ac.name)==0)iRes=2;
else iRes=0;

 switch(iRes)
 {
 case 1: printf("name:%s\nsex:%s\naddres:%s\n",ab.name,ab.sex,ab.addr);break;//加引号
 case 2: printf("name:%s\nsex:%s\naddres:%s\n",ac.name,ac.sex,ac.addr);break;//加引号
 default:printf("not found!");
 }
 return 0;
 
}

热心网友 时间:2023-10-14 07:11

问题不大,改好如下:
#include <stdio.h>
#include<cstring>
int main()
{
 struct Student
 {
  char name[20];
  char sex[10];
  char addr[30];
 }ab={"张三","man","123 beijing road"},
  ac={"李四","woman","124 beijing road"};
 char a[20];
 printf("请输入名字\n");
 scanf("%s",&a);

 if(strcmp(a,"张三")==0)
 printf("name:%s\nsex:%s\naddres:%s\n",ab.name,ab.sex,ab.addr);
 else
 if(strcmp(a,"李四")==0)
 printf("name:%s\nsex:%s\naddres:%s\n",ac.name,ac.sex,ac.addr);
 else
 printf("通讯录中没有此人\n");
 return 0;
}

热心网友 时间:2023-10-14 07:12

直接编译,报错:
tmp.c: In function ‘main’:
tmp.c:16: error: case label does not rece to an integer constant
tmp.c:16: error: ‘name’ undeclared (first use in this function)
tmp.c:16: error: (Each undeclared identifier is reported only once
tmp.c:16: error: for each function it appears in.)
tmp.c:16: error: expected ‘)’ before ‘:’ token
tmp.c:16: error: stray ‘\’ in program
tmp.c:16: error: stray ‘\’ in program
tmp.c:16: error: stray ‘\’ in program
tmp.c:16:51: warning: missing terminating " character
tmp.c:16: error: missing terminating " character
tmp.c:17: error: stray ‘\’ in program
tmp.c:17: error: stray ‘\’ in program
tmp.c:17: error: stray ‘\’ in program
tmp.c:17:51: warning: missing terminating " character
tmp.c:17: error: missing terminating " character
tmp.c:20: error: expected ‘;’ before ‘}’ token
tmp.c:20: error: expected declaration or statement at end of input

主要两个错误:
1. switch判断条件错误,不能用字符串做条件,必须是可数类型:整型、字符、布尔和枚举型

2. printf没有引号

为了偷懒,我直接将名字改成一个字符了

#include <stdio.h>
2 int main()
3 {
4 struct Student
5 {
6 char name[20];
7 char sex[10];
8 char addr[20];
9 }ab={"a","man","123 beijing road"},
10 ac={"b","woman","124 beijing road"};
11 char a;
12 printf("请输入名字\n");
13 scanf("%c",&a);
14 switch(a)
15 {
16 case 'a':
17 printf("name:%s\nsex:%s\naddres:%s\n",ab.name,ab.sex,ab.addr);
18 break;
19 case 'b':
20 printf("name:%s\nsex:%s\naddres:%s\n",ac.name,ac.sex,ac.addr);
21 break;
22 }
23 return 0;
24 }

执行结果:
请输入名字
b
name:b
sex:woman
addres:124 beijing road追问你的答案我想得出来,但现在的关键是如何输入中文名时程序能够识别,switch语句括号内表达式类型本来就可以是字符型,你把名字用字母代替当然可以

追答那就只能用字符串比较函数,strcmp,然后判断比较结果,头文件在string.h中,没有其他办法

热心网友 时间:2023-10-14 07:12

struct Student
{
char name[20];
char sex[10];
char addr[20];
}ab={"张三","man","123 beijing road"},
ac={"李四","woman","124 beijing road"};

char a[10];
printf("请输入名字\n");
scanf("%s",&a);
int aa = strcmp("张三",a);
switch(aa)
{
case(0):printf("name:%s\nsex:%s\naddres:%s\n",ab.name,ab.sex,ab.addr);break;
case (1):printf("name:%s\nsex:%s\naddres:%s\n",ac.name,ac.sex,ac.addr);break;
}

热心网友 时间:2023-10-14 07:13

switch-case 不能用字符串
改成
switch(a){
case '1': ...
case '2': ...
}
就可以了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪个牌子复印机好 复印店用什么型号的复印机好 开复印店需要什么设备 家用打印复印机哪个好 如何分辨鞋底是不是空心格子底? Ubuntu10.04下安装Oracle11g 超市监控多少钱 超市防盗器要多少钱 超市防盗系统多少钱 智能存放柜管理系统 48小时核酸检测结果在哪里查询-48小时核酸检测怎么看结果 CAD中,标高、打断这样的常用图形怎么设置为图块,可以直接调用? Word文档中的光标,怎么才能不超过下划线呀,如图… seo有什么学习课程? 鲜花观察日记(2) 网络流行语黑体加粗 为什么网站一般用宋体 微软雅黑 黑体 下面这些句子中黑体字次都是流行的网络语言,请试着写出它们的意思吧: 1、这件事,它们真的很给力啊! 噬芈罗刹是什么 无线网连不上,打开网络和共享中心中的网络位置显示公用网络,但是为黑体字,不能修改,该怎么办 手掌的皮肤长了一个白色突起的小圆点,在拇指的根部,很久了,不痛不痒,不知道是什么情况? 请问各位我这是什么啊 长在大腿外侧 看着已经开花了 如何将实物变成剪纸的形式 怎么着把一个图片变成剪纸样 中草药:蝼蛄的功效与作用 鬼说文言文 和陶桃花源并引翻译及原文 把各方面的情况总括起来说,这是个什么四字成语? 描写小溪流水的词语有哪些? 溪流用四字词语怎样形容 黑粜的意思是什么 玲珑的两种意思 《你微笑时很美》开播在即,曾被指融梗抄袭,程潇、许凯也被牵连 圈内对许凯的评价 于正警告造谣者说许凯5岁参加校园暴力,用词激烈,到底用了怎么样的言辞? 寓意极好的男孩子名字大全 想在芜湖交友,谁可以描述下芜湖女孩的性格特点,相处有什么要注意的么?谢啦 祝贺的词语有什么 hp 1216nfh 传真怎么用 请问,如何给W文档设置密码? 怎样在写字文档( W )里设置密码? 2013w文档密码怎么设置 暧_的结构是什么 两字是什么结构? 用什么方法可以理解词语的意思 卷第五十五(14) 【汉民】的意思是什么?【汉民】是什么意思? 陆机-演连珠五十首 电脑开机只显示桌面没有任何图标,任务栏也不显示,但是鼠标能点右键,任务管理器也显示不出来,之后要过? 果料是什么黑话 想问黑马指的是什么意思