用C语言结构体解决 “从键盘输入五个用户的数据,包括姓名和电话号码,要求按姓名排序后,输出用户数据

作者&投稿:桓剂 (若有异议请与网页底部的电邮联系)
~
//希望我的回答对你的学习有帮助
#include <stdio.h>
#include <string.h>

struct Student
{
char Name[10]; //学生的姓名,使用字符数组存储,长度为 10
char PhoneNumber[15]; //学生的电话号,使用字符数组存储,长度为 15
}stu[5], temp; //结构体数组,长度为 5,用来存放 5 个学生的信息
//临时变量,用在冒泡排序的过程中交换数据

int main()
{
for (int i = 0; i < 5; i++) //输入 5 个学生的基本信息
{
scanf_s("%s %s", stu[i].Name, 10, &stu[i].PhoneNumber, 15); //输入字符串,使用 %s 标记。其中每个字符串使用“空格”分开
//如果输入的字符串包含“空格”,使用 gets 函数
}

for (int i = 0; i < 4; i++) //冒泡排序,外层循环只需要循环(长度 - 1)次
//因为剩下最后一个数据不需要比较
{
for (int j = 0; j < 4 - i; j++) //第一次循环,比较的次数为(长度 - 1)
//每次循环的次数都在缩小
//因为每次循环之后,最值已经放在了数组的尾部
//所以在下一次循环时,就可以排除这个最值,把比较的范围
{
if (strcmp(stu[j].Name, stu[j + 1].Name) > 0) //strcmp 由定义得到,它就是一个根据Ascii码,对字符串比较的函数
//如果strcmp 返回 0 ,证明两个字符串 相等
//如果strcmp 返回 - ,证明第一个字符串比第二个字符串小
//这个小,是指在两个字符串中第一个不相同的字符在 Ascii码表中的相对位置
//如果strcmp 返回 + ,证明第一个字符串比第二个字符串大
//这个大,是指在两个字符串中第一个不相同的字符在 Ascii码表中的相对位置
{
temp = stu[j];         //进行数据交换
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}

for (int i = 0; i < 5; i++) //输出 5 个学生的基本信息
{
printf("%s %s
", stu[i].Name,stu[i].PhoneNumber);
}

getchar(); getchar();

return 0;
}




黄山区18241733906: C语言问题:若执行下面的程序时从键盘上输入5,则输出是 -
衷坚胆舒: 应该选择B,过程如下 1. x++>5,因为++ 在后,所以是先赋值后自增,故x++的值是5,但是x的值因为自增所以是6 2. 因为x++>5,不满足条件,所以执行else语句,x--这个也是--在后,所以也是一个先赋值后自减,因此x--的值是6

黄山区18241733906: C语言 ,从键盘上输入5个数,求出这5个数中最大与最小 -
衷坚胆舒: #include<stdio.h> void main() {int max,min,data[5],i;for(i=0;i<5;i++)scanf("%d", &a[i]); /*输入5个数*/max=data[0];min=data[0]; /*假定data[0]既是最大值也是最小值*/for(i=1;i<5;i++) /*从data[1]开始判断*/{if(data[i]<min) /*若有比min更...

黄山区18241733906: 怎么用C语言编写一个程序,它从键盘上输入5个整数,然后输出它们的积? -
衷坚胆舒: #include "stdio.h" void main() {int i,sum=1,num;for(i=0;i<5;i++){scanf("%d",&num);sum*=num;}printf("%d",sum); }

黄山区18241733906: 用c语言编写一个程序,从键盘输入5个整数,并将这5个数存入一个长度为5的一维数组中 -
衷坚胆舒: #include<stdio.h> int main() { int i, b[5],j; printf("输入5个数:"); for (i = 0; i < 5; i++) scanf("%d",&b[i]); printf("5个数是:"); for (i = 0; i < 5; i++) printf("%5d",b[i]); }这是第一个题 #include<stdio.h> void sort(int *a, int n) { int t; for (int i =...

黄山区18241733906: C语言,编写一个程序,从键盘输入5个数,算出总和及平均值!急!!! -
衷坚胆舒: #include int main() { int a,b,sum; float aver; scanf("%d%d",&a,&b);//输入的时候用空格隔开两个数 sum=a+b; aver=sum/2; printf("总和:%d,平均数:%f",sum,aver); getchar(); }

黄山区18241733906: 必采纳~C语言:功能:从键盘输入5个字符组成的单词,判断与所给定的单词是否相同. - ------- -
衷坚胆舒: 若有定义语句;char str[]="12",则字符串str在内存中实际占 '2' 个字节 设int X 经X=2&&3||4运算后,X的值为 1 设a b 都是整数型变量 a的值为3 b的值为2 则执行a=b++语句后,变量a的值是 3 程序段intk=1;while(k=0)k=k-1;循环图语句执行 1 次 若有定义语句;Int a=2;double b=3.6 则表达是a+b的值是 5.600000 设有int a[2][3]={{1,2},{2,1}},则a【1】【2】的值为 0,0 1,2 已知i=3,写出语句a={a=i+1,a+3},执行后整形变量a的值是 7

黄山区18241733906: 用C语言如何编写:“从键盘输入五个数字,中出其中的最大数.”的程序 -
衷坚胆舒: 1楼的程序max初始化有问题,更改如下#include <stdio.h> main() {int i,max,n; scanf("%d",&n); max=n; for(i=1;i<=4;i++) {scanf("%d",&n); if(n>max)max=n;} printf("%d",max);system("PAUSE"); }

黄山区18241733906: 使用C语言编程:从键盘输入一个5的正整数,判断它是不是回文数. -
衷坚胆舒: #include#define N 5 void main() { char num[N+1]; int i,j; printf("输入一个五位数"); scanf("%s",num); for(i=0,j=N-1;i

黄山区18241733906: c语言从键盘任意输入5个字符串,请按字典排序后,再输出. -
衷坚胆舒: 如果是这个isortSring(char **p,int n)可以写

黄山区18241733906: C语言要求通过键盘输入5字符串,再调用函数sort给字符串从小到大排列,再调用print函数完成字符串输出. -
衷坚胆舒: 看你代码原意,是想定义一个字符串数组strs.但是你写的char *strs[5];表示的是一个维度为5的指针数组.你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改.如果你不想改动其他函数,还继续使用指针数...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网