C语言求助 C语言求助

作者&投稿:夷刻 (若有异议请与网页底部的电邮联系)
程序错误还是有点多的。
1.定义结构体struct c中的名字、性别、专业都应该是字符数组,而不是单个字符,应该改为char name[8],char sex[5],char profession[8];同样的
union
{
int class;
char office;
}office;
改为
union
{
int class;
char office[20];
}office;
2.scanf函数
scanf("%s,%s,%s,%d,%d",b[a].name,b[a].sex,b[a].profession,b[a].number,b[a].age);
应该改为
scanf("%s%s%s%d%d",b[a].name,b[a].sex,b[a].profession,&b[a].number,&b[a].age);
3.字符串比较应该用strcmp函数,如strcmp(b[a].profession,"teacher"),函数返回值为0即为相等,而不能用(b[a].profession=="teacher");
4.
if (b[a].profession=="teacher")
scanf("%s",b[a].office.office);
else
scanf("%d",b[a].office.class);
}
改为:
if (b[a].profession=="teacher")
scanf("%s",b[a].d.office);
else
scanf("%d",&b[a].d.class);
}
5.
if (b[a].profession=="teacher")
改为if(!strcmp(b[a].profession,"teacher"))
6.头文件加上#include <string.h>,strcmp是这个库下的函数
7.变量不能同名,两个都叫office,我这里改为了d,你可以改成别的不重名的。
8.性别sex这里用的是单个字符,你输入时只能输入m或者f来表示性别,你要是想输入多个字符可以像名字一样改为字符数组即可。

完整程序如下:
#include<stdio.h>
#inlcude<string.h>
void main()
{
int a;
struct c
{
char name[8];
char sex[5];
char profession[8];
int number;
int age;
union
{
int class;
char office[20];
}d;
}b[4];
printf ("\nplease input name(8),sex(5),profession(8),number,age and office\n");
for(a=0;a<4;a++)
{
printf("please input the %d data:\n",a+1);
scanf("%s%s%s%d%d",b[a].name,b[a].sex,b[a].profession,&b[a].number,&b[a].age);
if (!strcmp(b[a].profession,"teacher"))
scanf("%s",b[a].d.office);
else
scanf("%d",&b[a].d.class);
}
printf("\nname\tsex\tprofession\tnumber\tage\toffice\n");
for(a=0;a<4;a++)
{
if (!strcmp(b[a].profession,"teacher"))
printf("%s\t%s\t%s\t%d\t%d\t%s\n",b[a].name,b[a].sex,b[a].profession,b[a].number,b[a].age,b[a].d.office);
else
printf("%s\t%s\t%s\t%d\t%d\t%d\n",b[a].name,b[a].sex,b[a].profession,b[a].number,b[a].age,b[a].d.class);
}
}

程序已经经过编译测试,能很好的执行。输入的时候要输入一个值回车一次再输入下一个,求给满意。

if (b[a].profession=="teacher")

这个不对吧,profession定义的是char,"teacher"是个字符串。相应的你输入时候,name、sex应该都是字符串输入的。



还在用turbo c?你已经落后30年了

C语言求助~

求助语言的十种说法有哪些
答:1、老板,您看我最近一直有一个事情困扰着我,想请您帮忙点点津。2、您好,我有一事不明需要向您请教或者我有事情需要您的帮助,能否给予帮助,十分感谢。3、尊敬的领导,又要给您添麻烦了,现在某个方面有什么职位(或者什么利益),想请您帮忙为我想争取一下,谢谢了。4、我非常感激您能够帮我解...

求助的语言方式是什么?
答:求助于人时应该注意些什么呢?1.语气要谦和 求人办事要用商量的口吻,让对方感觉到你尊重他,对方才会愿意帮助你。比如问路,就应该说:“劳驾,向您打听一下路。~‘打扰了,请问去新华书店怎么走?”另外,还要区别不同年龄、性别和职业等,冠之以不同的尊称。即使是对要好的朋友,也不能用命令的...

C语言 求助
答:方法很多,最直接的方法是,在函数中定义一个临时数组,然后2次循环,先将n往后的值存入新数组,再将n之前的值存入数组。最后把临时数组的值全部赋值给原数组。include<stdio.h> void move(int arr[],int len,int n);int main(){ int i,arr[5]={10,20,30,40,50},n;printf("请输入n的...

C语言问题求助~~~
答:体重:\n"); scanf("%s%f%f",s1.name,&s1.sg,&s1.weaght); //scanf输入基本类型变量时,要传地址,下同。运行不了就是这个原因。 scanf("%s%f%f",s2.name,&s2.sg,&s2.weaght);printf("交换前s1和s2分别为:\n"); printf("%s %f %f\n",s1.name,s1....

单片机 汇编语言 求助。
答:RESET:AJMP MAIN ;跳转到MAIN ORG 000BH ;同上,从000BH开始 AJMP ITOP ;跳转到ITOP,不要用LCALL ORG 0100H ;继续伪指令...从0100H开始 MAIN: MOV SP,#60H ;堆栈从61H开始 MOV TMOD,#01H ; 定时器0在16位方式下工作 ACALL PTOMO ;调用PTOMO HERE: AJMP HERE ...

c语言问题求助
答:详细描述如下:[+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 计算机将第1位作为符号位,0表示正数,1表示负数。原码:原码很好理解,第1位是符号位,其余位表示数值。反码:(1)正数:正数反码是其本身。(2)负数:去掉原码...

语言:闽南语求助~!
答:是你的形影 (xilieihingying)叫我逐天作眠梦 (giewaditizominmang)梦中可爱的人 (mangdiongkoaieilang)伊不是别人 (yimuxibalang)我的每一天(waeimuijigang)一分钟也不当轻松 (jihundiongmabodangkingsang)你是我爱的人 (lisiwaaieilang)将我来戏弄 (jiongwolaiseinang)九月的风在吹 (gaoweiei...

有几道英语语言学问题求助!急!
答:3. Because Seven is a dirty cannibal bastard who eats his fellow digits.国外的人都认为是8吃了9,(seven eight nine)8的英文单词eight和aet的发音相同,正好aet有是吃(eat )的过去式,所以(seven,eight,nine)听起来就像是7.吃9.!因此6肯定怕7拉,!4.即语法一致原则(principle of grammatical ...

C语言程序求助!
答:程序开始:w=3进入最外层while循环,j=6,k=2,b=1;在进入内层循环k<=6/2也就是2<=3为真,逻辑与上b也就是1,结果为真。k自增为3,b=j%k也就是b=6%3 =0 在进入内层while循环,结果为假,跳过内层循环,进入判断语句。由于b=0为假,所以执行else,数组list[]={9,7,8,6}. w=2....