1. 设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入
#include<stdio.h>
void main()
{
int x,y;
scanf("%d%*c%d",&x,&y);
printf("x=%d,y=%d\n",x,y);
}
就目前而言我的想法而言,我想我的程序不只是可以进行整数的输入,而是可以让用户可以通过选择任意一个字符(ASCII值在0-127之间),然后在输入的任意字符中寻找用户选定的任意字符进行分割输出
**故将程序做一下修改:
QAQ发现好像写不出来,想把整本C Primer Plus再重新看一遍**
2. 编写一个程序, 接收用户录入的日期信息并且将其显示出来. 其中, 输入日期的形式为月/日/年(mm/dd/yy), 输出日期的形式为年月日(yymmdd)
#include<stdio.h>
void main()
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("您录入的是%d年%d月%d日\n",z,x,y);
}
3. 有3个字符串,要求找出其中最大者
头文件:#include <string.h>
strcoll() 函数根据环境变量LC_COLLATE来比较字符串,其原型为:
int strcoll( const char * str1, const char * str2 );
【参数说明】str1、str2 是要进行比较的两个字符串。
函数说明:strcoll() 会依环境变量 LC_COLLATE 所指定的文字排列次序来比较 s1 和 s2 字符串。
默认情况下,LC_COLLATE 为"POSIX"或"C",strcoll() 和 strcmp() 一样根据ASCII比较字符串大小。
对于设置了 LC_COLLATE 语言环境的情况下,则根据 LC_COLLATE 设置的语言排序方式进行比较。例如,汉字会根据拼音进行比较。
【返回值】==若字符串 str1 和 str2 相同则返回0。若 str1 大于 str2 则返回大于 0 的值,否则返回小于 0 的值。==
#include<stdio.h>
#include<string.h>
void main()
{
char x1[40],x2[40],x3[40],MAX[40];
scanf("%s",x1);
printf("%s\n",x1);
scanf("%s",x2);
printf("%s\n",x2);
scanf("%s",x3);
printf("%s\n",x3);
strcpy(MAX,x1);
if(strcmp(MAX,x2)<0)
strcpy(MAX,x2);
else if(strcmp(MAX,x3)<0)
strcpy(MAX,x3);
printf("%s",MAX);
}
在学习getchar()和putchar()时的一个疑问:
#include<stdio.h>
void main()
{
char ch;
while(ch=getchar()!=EOF) //while((ch=getchar())!=EOF)
putchar(ch);
}
在上述语句中ch=getchar()和EOF之间缺少一个括号,导致了输出的巨大差异,需要请教老师这之间的运算顺序.
4. 编写一个程序, 对用户录入的产品信息进行格式化, 程序运行后需要有以下会话:
Enter item number: 583
Enter unit price: 13.5
Enter purchase date(mm/dd/yy): 10/24/95
Item Unit Price Purchase Date
583 $ 13.50 10/24/95
其中, 数字项和日期项左对齐, 单位价格右对齐, 美元数量最大取值为9999.99
#include<stdio.h>
#define Maxium 9999.99
void main()
{
int Num,UP;
char PD[10];
printf("Please enter the item number:");
scanf("%d",&Num);
printf("Please enter unit price:");
scanf("%d",&UP);
if(UP>=Maxium)
{
printf("Oops,data was overflow,please try it again!\n");
while(UP>=Maxium)
{
printf("Please enter unit price:");
scanf("%d",&UP);
if(UP<Maxium)
break;
else printf("Oops,data was overflow,please try it again!\n");
}
} /*处理当UP大于Maxium的情况*/
printf("Please enter purchase date(mm/dd/yy):");
scanf("%s",PD);
printf("Item\tUnit Price\tPurchase Date\n");
printf("%-d\t%d\t\t%-s\n",Num,UP,PD);
}
5. 计算若干整数的值,要求输入有若干行,每行第一个整数n,代表后面还有n个数据,如果n=0代表输入结束。输出:要求对于每一行都要在相应的行输出和。
#include<stdio.h>
void main()
{
int i,k,l,SUM;
char ch;
while(1)
{
printf("Please enter i for define how many number in this line:i=");
scanf("%d",&i);
if(i==0) break;
SUM=i;
printf("%d\t",i);
for(k=0;k<i;k++)
{
scanf("%d",&l);
SUM+=l;
}
printf("sum=%d\n",SUM);
}
}
这个程序的运行结果非常不符合题目描述,可是不知道应该要怎么修改,主要问题在用循环做输入,在打印输入数的环节时,不知道应该如何将输入的数字依次输出。