《C语言程序设计习题与上机指南》答案(10)

2019-08-30 16:32

p_string2=p_string1;

while(*p_string2!='\\0')/*正序输出字符串*/ putchar(*p_string2++); putchar('\\n');

while(--p_string2>=p_string1)/*反序输出字符串*/ putchar(*p_string2); putchar('\\n'); }

9.使用指向指针的指针的方法,完成对n个整数(例如10个整数)排序后输出。要求从键盘输入n个整数并且把排序单独编写成函数。

#include

voidbubble_sort(int**p,intn); voidmain()

{inti,n,number[30]; int**pp,*pointer[30];

printf(\scanf(\for(i=0;i

pointer[i]=&number[i];/*指针数组p存放n个整数的地址*/ printf(\for(i=0;i

scanf(\

pp=pointer;/*二级指针pp指向指针数组p的首地址*/ bubble_sort(pp,n);

printf(\for(i=0;i

voidbubble_sort(int**p,intn)/*冒泡法排序*/ {int*temp; inti,j;

for(i=0;i**(p+j+1))

{temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp;}/*交换整数的地址*/ } }

10.使用指针数组编写程序,从键盘输入一个星期几(例如7),则程序输出对应星期几的英文名字(Sunday)。

#include #include

char*day_name(intn);/*英文星期几函数的原型声明*/ voidmain()

{intn;

char*pointer;

printf(\scanf(\

pointer=day_name(n);

printf(\}

char*day_name(intn)/*英文星期几函数的定义*/

{staticchar*english_name[]={\\if(n<1||n>7)

return(english_name[0]); else

return(english_name[n]); }

三.程序改错

1.有一个班级有n个学生,开设m门课程。使用指针的方法编写程序,查找有课程不及格的学生,并且打印他们的成绩。

#include #defineN4 #defineM5

voidsearch_fail(int(*p)[M]);/*函数的原型声明*/ voidmain()/*主函数*/ {inti,j;

intscore[N][M];

printf(\for(i=0;i

scanf(\

search_fail(score);/*找成绩差的学生*/ }

voidsearch_fail(int(*p)[M])/*float(*p)[4]可以写成float[][4]的形式*/ {inti,j;

for(i=0;i

{if(*(*(p+i)+j)<60)break;}/*p[i][j]用*(*(p+i)+j)表示的形式*/ if(j

{printf(\输出有关学生的信息*/ for(j=0;j

printf(\ printf(\ } } }

错误语句:if(j

正确语句:if(j

2.使用指针编写程序,从键盘输入的n个整数中找出其中最大值和最小值。 调用一个函数只能得到一个返回值,要得到多个返回值则用全局变量在函数之间来“传递”数据。

#include #defineN10

intmax,min;/*全局变量*/

voidmax_min_value(intarray[],intn); main()

{inti,number[N];

printf(\for(i=0;i

scanf(\max_min_value(number,N);

printf(\用max、min在函数之间传回数据*/ }

voidmax_min_value(intarray[],intn) {int*p,array_end; max=min=*array; array_end=array+n;

for(p=array+1;p

{if(*p>max)max=*p;/*为全局变量max赋值*/ elseif(*p

错误语句:int*p,array_end; 正确语句:int*p,*array_end;

3.使用指针编写程序,从键盘输入一个字符串,然后统计字符串中字符的个数。

#include main()

{charstring[30],*pointer;

printf(\scanf(\pointer=string;

while(*pointer!='\\0') pointer++;

printf(\错误语句:scanf(\正确语句:scanf(\

4.使用指针编写程序,在输入的字符串中查找是否存在字符?x?。 #include main()

{charstring[30],*p; inti;

p=string;

printf(\

scanf(\

for(i=0;p[i]!='\\0';i++)/*p[i]等价与*(p+i)*/

if(p[i]=='x'){printf(\if(p[i]!='\\0')

printf(\错误语句:if(p[i]!='\\0') 正确语句:if(p[i]='\\0')

5.使用指针数组编写程序,从键盘输入一个星期几(例如7),则程序输出对应星期几的英文名字(Sunday)。

#include #include voidmain() {intn;

char*day_name[]={\\while(1)/*无限循环,由break语句退出*/ {printf(\scanf(\if(n<1&&n>7)

{printf(\break; }

printf(\} }

错误语句:if(n<1&&n>7) 正确语句:if(n<1||n>7)

四.编程

1.从键盘输入3个整数,按照从小到大的顺序输出。使用指针的方法并且用3种不同方式实现。

#include main() {inta,b,c;

int*pointer_1,*pointer_2,*pointer_3,*p; printf(\scanf(\

pointer_1=&a;pointer_2=&b;pointer_3=&c;

if(a>b){p=pointer_1;pointer_1=pointer_2;pointer_2=p;}/*指针交换*/ if(a>c){p=pointer_1;pointer_1=pointer_3;pointer_3=p;}/*指针交换*/ if(b>c){p=pointer_2;pointer_2=pointer_3;pointer_3=p;}/*指针交换*/ printf(\、b、c之间未交换*/

printf(\} 2.将数组中n个整数按相反的顺序存放后输出。使用指针的方法并用2种不同方式实现。

#include #defineN10

voidinverted(int*x,intn); main()

{inti,array[N];

printf(\for(i=0;i

scanf(\

printf(\for(i=0;i

printf(\

inverted(array,N);/*实参array为数组名*/ printf(\for(i=0;i

printf(\}

voidinverted(int*x,intn)/*形参x为指针变量*/ {int*front,*rear,*p,m,temp; m=(n-1)/2;

front=x;rear=x+n-1;p=x+m; for(;front<=p;front++,rear--)

{temp=*front;*front=*rear;*rear=temp;} return;}

3.从键盘输入3个字符串,按照从小到大的顺序输出。使用指针的方法实现。 #include

charswap(char*p1,char*p2); voidmain()

{charstring1[30],string2[30],string3[30];

printf(\scanf(\scanf(\scanf(\

if(strcmp(string1,string2)>0)swap(string1,string2);/*若string1>string2,则交换*/ if(strcmp(string1,string3)>0)swap(string1,string3);/*若string1>string3,则交换*/ if(strcmp(string2,string3)>0)swap(string2,string3);/*若string2>string3,则交换*/ printf(\输出排序后的结果*/ printf(\printf(\printf(\}

charswap(char*p1,char*p2)/*交换字符串的函数,采用传地址的方法传递函数参数*/ {char*p[30];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); }

4.使用指针编写程序,完成字符串的复制。要求不能使用strcpy函数。


《C语言程序设计习题与上机指南》答案(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:矩阵练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: