C语言编程作业,急!!!!

当前编程题:结构课堂作业---电话簿排序

2.
【问题描述】编写一个程序,输入N个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码。
【输入形式】用户首先在第一行输入一个正整数,该正整数表示待排序的用户数目,然后在下面多行输入多个用户的信息,每行的输入格式为:姓名 电话。以回车结束每个用户的输入。
【输出形式】程序输出排序后的结果。每行的输出结果格式也是: 姓名 电话。姓名和电话字段中间没有空格,要求用户姓名不能超过10个字符,超出10个字符时候只取前10个字符作为姓名。电话号码不能超过10位,超过10位时只按10位处理。输出姓名、电话字段各占12个字符宽,输出格式采用默认对齐方式。另外,用户的数量要求不超过50个。
【样例输入】
3
amethystic 1234567
amethyst 654321
wangwei 7645434
【样例输出】
####amethyst######654321
##amethystic#####1234567
#####wangwei#####7645434
【样例说明】程序根据用户姓名的词典顺序排序,最后按照姓名#电话的格式输出。另外,由于规定姓名和电话之间用空格分割,所以输入姓名时请将姓和名一起输入,中间不要有空格。另外输出时候程序将自动补齐12字符宽。程序输出结尾有个回车符。
【评分标准】完全正确为20分,每个测试点4分。提交程序文件名为telsort.c

#include "stdio.h"
#include <string.h>
struct tel{
char name[11],num[11];
};
int main(int argc,char *argv[]){
struct tel s[50];
int n,i;
char t[]="############";
printf("Please enter n(int 0<n<51)...\n");
if(scanf("%d",&n)!=1 || n<1 || n>50){
printf("Input error, exit...\n");
return 0;
}
printf("Enter some name and tel-number(by ' ','Enter' end)...\n");
for(i=0;i<n;i++)
scanf("%10s%*[^0-9]%10s",s[i].name,s[i].num);
printf("------------------------\n");
for(i=0;i<n;i++)
printf("%.*s%s%.*s%s\n",12-strlen(s[i].name),t,s[i].name,12-strlen(s[i].num),t,s[i].num);
return 0;
}

运行样例:

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-19
#include<stdio.h>
#include<string.h>

struct
{
char name[32],tel[32];
}t,bks[50];

int main()
{
int i,j,len,n;

scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s %s",bks[i].name,bks[i].tel);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(bks[j].name,bks[j+1].name)>0)
{
t=bks[j];
bks[j]=bks[j+1];
bks[j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
len=strlen(bks[i].name);
len=(len<=10 ? len : 10);
bks[i].name[len]='\0';
len=strlen(bks[i].tel);
len=(len<=10 ? len : 10);
bks[i].tel[len]='\0';
printf("%12s%12s\n",bks[i].name,bks[i].tel);
}
return 0;
}追答

//如果需要在左边填充#,而不是空格,改成这样就行了:
#include
#include

struct
{
char name[32],tel[32];
}t,bks[50];

int main()
{
int i,j,len,n;
const char fill[10]="##########";

scanf("%d",&n);
for(i=0;i0)
{
t=bks[j];
bks[j]=bks[j+1];
bks[j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
len=strlen(bks[i].name);
len=(len<=10 ? len : 10);
bks[i].name[len]='\0';
printf("%.*s%.*s",
10-len,fill,len,bks[i].name);
len=strlen(bks[i].tel);
len=(len<=10 ? len : 10);
bks[i].tel[len]='\0';
printf("%.*s%.*s\n",
10-len,fill,len,bks[i].tel);
}
return 0;
}

急!急!简单c语言编程题,求编写代码
\/\/第一题#include<stdio.h>void fun(int n){ int i,j,k,t;for(k=0;k<n;k++)\/\/控制总行数{ for(i=0;i<n-k-1;i++)\/\/控制输出空格,因为空格不好看见,就用*代替 printf("%c",'*'); for(j=0;j<2*k+1;j++)\/\/控制输出字母 { printf("%c",65+j)...

C语言编程作业,求解答
作业1:result(int)= c (char) * i (int) + f (float) \/ d (double) -(f + i);第一步:f+i, 一个float和int相加,按精度高的float进行计算,结果为float result = char * int + float\/double - float;第二步:char * int, 他们都是整数相加为int result =int + float\/double...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

C语言编程作业
为完成C语言编程作业,需解决以下两个问题:问题一:从键盘输入三个整型数a、b和c,输出它们求和运算的结果,即a+3b+5c的值。要求求和运算通过调用函数实现。解决方案如下:主函数main()的代码段,用于输入整数并调用求和函数sum()输出结果:输入整数a、b、c调用sum()函数计算a+3b+5c输出结果等待用户...

C语言编程题2道!急!!!
1:include<stdio.h> int main(){ int a[10];int i;int max = 0;int min = 100;int maxi=0;int mini =0;for(i=0;i<10;i++){ scanf("%d",&a[i]);if(a[i]<min){ min = a[i];mini = i;} if(a[i]>max){ max = a[i];maxi = i;} } int sum =0;for(i=0...

c语言编程题,用for循环!急急急
include<stdio.h>int main(){int hg,bhg;for(hg=1;hg<2000;hg++)for(bhg=0;bhg<2000;bhg++)if(hg*5-bhg*18==9931){printf("%d",hg);}return 0;}

c语言编程急急急
C语言程序:include <stdio.h>void main() {double weight;\/* 包裹重量 *\/double distance;\/* 邮寄距离 *\/double fee;\/* 邮资 *\/printf("包裹重量(克):");scanf("%lf", &weight);printf("邮寄距离(公里):");scanf("%lf", &distance);if(weight < 15){fee = 5;}else if(weight ...

C语言编程,有谁可以帮我编出来啊~~~救命啊~
{ int sex;int tal;printf("请键入性别,1表示男,2表示女:\\n");scanf("%d",&sex);printf("请键入身高(cm):\\n");scanf("%d",&tal);if(sex==1){ if(tal==105) printf("体重正常!");else if(tal>105) printf("体重偏轻!");else if(tal<105) printf("体重偏重!");} el...

c语言作业,非常急,问题如下:设计一个用"*"表示的字母c,屏幕显示输出
printf("*\\n");printf("*\\n");printf("*\\n");printf("*\\n");printf("*\\n");printf("***\\n");return 0;} 或者 include<stdio.h> int main(void){ printf("* * * * * * * * * * * *\\n");printf("*\\n");printf("*\\n");printf("*\\n");printf("*\\n");printf...

C语言编程题,急,请大家帮忙啊,不会的也试试啊,急
1.include"stdio.h"defineL100 defineU200 defineFACTOR5 voidmain(){inti;printf("%5d之间%5d不能被%5d蒸出的数如下:\\n",L,U,FACTOR);for(i=L;i<=U;i++)if(i%FACTOR)printf("%-4d",i);} 2.include"stdio.h"voidmain(){ intx[12]={2,45,67,12,3,9,76,45,23,42,6,5}...

相似回答