C与指针课后习题答案
一、编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面要加上行号。编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。
#include<stdio.h>
int main()
{
int ch,n=1;
while(1)
{
ch=getchar();
if(ch=='\n')
{
printf(":%d",n);
n++;
}
putchar(ch);
}
return 0;
}
二、编写一个程序,从标准输入读取一些字符,并把它们写到标准输出上。它同时应该计算checksum值,写在后面
#include <stdio.h>
int main()
{
char ch;
signed char checkNum = -1;
while((ch = getchar()) != EOF)
{
putchar(ch);
checkNum += ch;
if(ch == '\n')
{
printf("%d\n", checkNum);
checkNum = -1;
}
}
return 0;
}
三、题目:编写一个程序,一行行的读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来。为了简单起见,可以假定所有的输入行均不超过1000个字符。(在 UNIX中, EOF表示能从交互式 shell (终端) 送出 Ctrl+D (习惯性标准)。在微软的 DOS 与 Windows 中能送出 Ctrl+Z)
#include <string.h>
#define MAX 1000
int main(void)
{
unsigned int i;
char ch;
char temp[MAX],Len[MAX];
while( (ch = getchar()) != EOF )
{
for( i = 0;ch != '\n';i++ )
{
temp[i] = ch;
ch = getchar();
}
if( strlen(Len) < strlen(temp) )
strcpy( Len,temp );
}
printf("Is the longest string:%s\nlenth:%d\n",Len,strlen(Len));
return 0;
}