Experiment1 Vlog1(Final Edition)

2018-03-19  本文已影响0人  TianWuJun

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


    }
}

这个程序的运行结果非常不符合题目描述,可是不知道应该要怎么修改,主要问题在用循环做输入,在打印输入数的环节时,不知道应该如何将输入的数字依次输出。

上一篇下一篇

猜你喜欢

热点阅读