第七章 指 针 ·13·
3. 以下程序的运行结果是(2)2 2 6 (1)1 2 6。
#include \stdio.h\ #include \string.h\
int *p; main() {
int x=1, y=2, z=3; p=&y;
fun(x+z, &y);
printf(\(1) %d %d %d\\n\, x, y, *p); }
fun( int x, int *y) {
int z=4; *p=*y+z;
x=*p-z;
printf(\(2) %d %d %d\\n\, x, *y, *p);
} 4. 下面程序段是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。 #include \stdio.h\ #include \string.h\ main() {
int m;
char s[80], *t;
for (m=0; m<79; m++) {
s[m]=getchar();
if (s[m]=='\\n') break; }
s[m]= 【?\\0?】; t=【s】; while (*t)
putchar(*t++);
}
????5. 下面程序段的运行结果是EXAMLE。 char s[80], *t=\EXAMPLE\; t=strcpy(s, t); s[0]='e';
puts(t);
6. 函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串相等时,返回值为0;
当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
第七章 指 针 ·14·
#include \stdio.h\
int sstrcmp( char *s, char *t) {
while (*s && *t && *s==【*t】) {
s++;
t++; }
return 【*s-*t】;
}
7. 下面程序的运行结果是3 5。
void swap(int *a, int *b) {
int *t; t=a; a=b; b=t; }
main() {
int x=3, y=5, *p=&x, *q=&y; swap(p,q);
printf(\%d %d\\n\, *p, *q); }
????8. 以下程序的输出结果是_ e。
#include \stdio.h\
main() {
char *p=\abcdefgh\, *r; long *q; q=(long *) p; q++;
r=(char *) q;
printf(\%s\\n\, r);
}
9. 下面程序的功能是将字符串中的数字字符删除后输出。请填空。 #include \stdio.h\ #include \malloc.h\ void delnum( char *t)
{
int m, n;
for (m=0,n=0; t[m]!='\\0';m++)
if (t[m]<'0' 【||】t[m]>'9')
{ t[n]=t[m]; n++;}
第七章 指 针 ·15·
【t[n]=?\\0?】;
}
main()
{
char *s;
s=(char *) malloc (sizeof(char)); /*给s分配一个地址*/
printf(\\\n input the original string:\);
gets(s); delnum(s); puts(【s】);
}
10.下面程序的功能是比较两个字符串是否相等,若相等则返回1,否则返回0。请填空。 #include \stdio.h\ #include \string.h\
fun (char *s, char *t) {
int m=0;
while (*(s+m)==*(t+m) && 【*s!=?0?&&*t!=?0?】) m++; return (【*(s+m)==*(t+m)】);
}
11.下面程序用来计算一个英文句子中最长单词的长度(字母个数)max。假设该英文句子中只含有字母和空格,在空格之间连续的字母串称为单词,句子以'.'为结束。请填空。 #include \stdio.h\ main()
{
static char s[]={\ you make me happy when days are grey.\}, *t; int max=0, length=0; t=s;
while (*t!='.') {
while (((*t<='Z')&&(*t>='A'))||((*t<='z')&&(*t>='a')))
{
length++;
???? 【 t++】; }
if (max t++; } printf(\max=%d\, max); } 12.下面程序是判断输入的字符串是否是“回文”,(顺读和倒读都一样的字符串称为“回文”, 如level)。请填空。 #include \stdio.h\ 第七章 指 针 ·16· #include \string.h\ main() { char s[80], *t1, *t2; int m; gets(s); m=strlen(s); t1=s; t2=【s+m-1】; while(t1 { if (*t1!=*t2) break; else { t1++; 【t2--】;} } if (t1 } 13.当运行以下程序时,从键盘输入:apple↙ tample↙ ???? 则下面程序的运行结果是__aptample______。 #include \stdio.h\ main() { char s[80], *t; t=s; gets(t); while (*(++t)!='\\0') if (*t=='a') break; else { t++; gets(t); } puts(t); } 14.当运行以下程序时,从键盘输入6↙,则下面程序的运行结果是__????___97671___。 #include \stdio.h\ #include \string.h\ main() { char s[]=\97531\, c; c=getchar(); f(s,c); puts(s); } f(char *t, char ch) { while (*(t++)!='\\0');