C Primer Plus第四章编程题

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;
}

         

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值