1.编写程序,提示用户一个输入名和姓,并执行一下操作:
a.打印名和姓,包括双引号;(层层递进,这个没什么看头)
#include <stdio.h>
int main(void)
{
char surname[30], name[30];
printf("请输入名和姓:\n");
scanf("%s %s", name, surname);
printf("\"%s,%s\"\n", name, surname);
getchar();/*方便看运行结果*/
getchar();
return 0;
}
b.在宽度为20的字段右端打印名和姓,包括双引号;(主要是写这个)
#include <stdio.h>
#include<string.h>/*提供strlen()函数*/
int main(void)
{
char name[30], surname[30];
int name_wid, surname_wid,width,temp;
width = 20;/*字段宽度*/
printf("请输入名和姓:\n");
scanf("%s %s", name, surname);
name_wid = strlen(name);/*strlen()函数计算字符串中字符个数不包括\0*/
surname_wid = strlen(surname);
temp = width - surname_wid - 1 - 2;/*temp为name字段宽度,1表示逗号,2表示双引号*/
printf("012345678901234567890123456789\n");/*方便查看输出结果位数*/
printf("\"%*s,%s\"\n",temp,name,surname);/*'*'修饰符可以控制输出字段宽度和精度,在此用来代替temp中的数据*/
getchar();/*方便看运行结果*/
getchar();
return 0;
}
c.在宽度为20的字段左端打印名和姓,包括双引号;(写完b这个就晒晒水啦)
#include <stdio.h>
#include<string.h>/*提供strlen()函数*/
int main(void)
{
char name[30], surname[30];
int name_wid, surname_wid,width,temp;
width = 20;/*字段宽度*/
printf("请输入名和姓:\n");
scanf("%s %s", name, surname);
name_wid = strlen(name);/*strlen()函数计算字符串中字符个数不包括\0*/
surname_wid = strlen(surname);
temp = width - name_wid - 1 - 2;/*temp为surname字段宽度,1表示逗号,2表示双引号*/
printf("012345678901234567890123456789\n");/*方便查看输出结果位数*/
printf("\"%-s,%-*s\"\n",name, temp, surname);/*'*'修饰符可以控制输出字段宽度和精度,在此用来代替temp中的数据*/
getchar();/*方便看运行结果*/
getchar();
return 0;
}
d.在比姓名宽度宽3的字段中打印名和姓。(因为双引号和逗号占了三个字段,所以可以直接打印)
#include <stdio.h>
int main(void)
{
char name[30], surname[30];
printf("请输入名和姓:\n");
scanf("%s %s", name, surname);
printf("012345678901234567890123456789\n");/*方便查看输出结果位数*/
printf("\"%s,%s\"\n",name,surname);/*双引号和逗号可以用空格代替*/
getchar();/*方便看运行结果*/
getchar();
return 0;
}
2.编写一个程序,先提示用户输入名,然后提示用户输入姓。在一行打印用户输入的名和姓,下一行分别打印名和姓的字母数。字母数要与相应名和姓的结尾对齐,如下所示:
#include <stdio.h>
#include<string.h>/*提供strlen()函数*/
int main(void)
{
char name[30], surname[30];
int name_wid, surname_wid;
printf("请输入名:\n");
scanf("%s",name);
printf("请输入姓:\n");
scanf("%s",surname);
name_wid = strlen(name);/*strlen()函数计算字符串中字符个数不包括\0*/
surname_wid = strlen(surname);
printf("%s %s\n",name,surname);/*'*'修饰符可以控制输出字段宽度和精度*/
printf("%*d %*d\n", name_wid, name_wid, surname_wid, surname_wid);/*结尾对齐*/
printf("%s %s\n", name, surname);
printf("%-*d %-*d\n", name_wid, name_wid, surname_wid, surname_wid);/*开头对齐*/
getchar();/*方便看运行结果*/
getchar();
return 0;
}