C Primer Plus 第六版 第11章 编程答案
1.第1题
#include <stdio.h>
#define SIZE 10
char * getnchar(char *, int);
int main(void)
{
char st[SIZE];
char * sts;
printf("请输入:");
sts = getnchar(st, SIZE - 1);
if (sts == NULL)
puts("输入失败");
else
puts(st);
return 0;
}
char * getnchar(char * st, int n)
{
int i;
int ch;
for (i = 0 ; i < n; i++)
{
ch = getchar();
if (ch == EOF)
break;
else
st[i] = ch;
}
if (ch == EOF)
return NULL;
else
{
st[i] = '\0';
return st;
}
}
2.第2题
#include <stdio.h>
#define SIZE 10
char * getnchar(char * st, int n);
int main(void)
{
char st[SIZE];
char * sts;
printf("请输入:");
sts = getnchar(st, SIZE-1);
if (sts == NULL)
puts("输入失败");
else
puts(st);
return 0;
}
char * getnchar(char * st, int n)
{
int i;
int ch;
for (i = 0; i < n; i++)
{
ch = getchar();
if (ch == EOF || ch == '\n' || ch == ' ' || ch ==' ')
break;
else
st[i] = ch;
}
if (ch == EOF)
return NULL;
else
{
st[i] = '\0';
return st;
}
}
3.第3题
#include <stdio.h>
#define SIZE 10
char * getnchar(char * st, int n);
int main(void)
{
char st[SIZE];
char * sts;
printf("请输入");
sts = getnchar(st, SIZE - 1);
if (sts == NULL)
puts("输入错误");
else
puts(sts);
return 0;
}
char * getnchar(char * st, int n)
{
int i;
int ch;
while ((ch = getchar()) == ' ' || ch == ' ' || ch == '\n')
continue;
for (i = 0; i < n; i++)
{
if (ch == EOF || ch == ' ' || ch == ' ' || ch == '\n')
break;
else
st[i] = ch;
ch = getchar();
}
if (ch == EOF)
return NULL;
else
{
st[i] = '\0';
return st;
}
}
4.第4题
#include <stdio.h>
#define SIZE 10
char * getnchar(char * st, int n);
int main(void)
{
char st[SIZE];
char * sts;
printf("请输入");
sts = getnchar(st, SIZE - 1);
if (sts == NULL)
puts("输入错误");
else
puts(sts);
return 0;
}
char * getnchar(char * st, int n)
{
int i;
int ch;
while ((ch = getchar()) == ' ' || ch == ' ' || ch == '\n')
continue;
for (i = 0; i < n; i++)
{
if (ch == EOF || ch == ' ' || ch == ' ' || ch == '\n')
break;
else
st[i] = ch;
ch = getchar();
}
if (ch == EOF)
return NULL;
else
{
st[i] = '\0';
return st;