C语言程序设计习题6Word文档下载推荐.docx
- 文档编号:17493218
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:12
- 大小:17.87KB
C语言程序设计习题6Word文档下载推荐.docx
《C语言程序设计习题6Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题6Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
3.判断下面两个程序的正误,若错误指出原因。
(1)#include<
stdio.h>
intmain()
{
char*p;
p="
DATA"
;
printf("
%s\n"
*p);
return0;
}
该程序错。
应为:
p);
(2)#include<
int*p;
*p=25;
%d"
指针变量没有赋初值。
4.输入3个整数,输出其中最大数。
要求用指针变量实现。
#include"
stdio.h"
{
inta=0,b=0,c=0;
int*aa=NULL,*bb=NULL,*cc=NULL,*p=NULL;
aa=&
a,bb=&
b,cc=&
c;
input3number:
"
);
scanf("
%d%d%d"
&
a,&
b,&
c);
a=%db=%dc=%d\n"
a,b,c);
p=aa;
if(*p<
*bb)p=bb;
*cc)p=cc;
%d\n"
程序运行情况如下:
459↙
a=4b=5c=9
9
5.有3个整型变量i,j,k。
请编写一个程序,设置3个指针变量p1,p2,p3,分别指向i,j,k,然后通过指针变量使i,j,k3个变量的值顺序交换,即原来i的值赋给j,把j的原值赋给k,把k的原值赋给i。
i,j,k的原值由键盘输入,要求输出i,j,k的原值和新值。
#include<
inti,j,k,tmp;
int*p1,*p2,*p3;
scanf("
%d%d%d"
i,&
j,&
k);
printf("
Beforechange:
%d\t%d\t%d\n"
i,j,k);
p1=&
i;
p2=&
j;
p3=&
k;
tmp=*p3;
*p3=*p2;
*p2=*p1;
*p1=tmp;
Afterchange:
return0;
123↙
123
312
6.输入一个10个元素的一维数组,在主函数中用scanf函数输入。
用指针方式编程找出最大和最小数,并指出最大数和最小数的位置。
inty_max(int*p,intn)
intmax=*p,i,k=0;
for(i=0;
i<
n;
i++)/*这里判断到i<
n,而不是i<
=n*/
if(max<
*(p+i))
k=i;
max=*(p+i);
/*记得要在这里更新一下max的记录*/
}
returnk;
#defineN10
intmain()
inta[N];
inti,m,max;
N;
i++)
a[i]);
%d"
a[i]);
m=y_max(a,N);
\nmax=a[%d]=%d"
m,a[m]);
15678964723↙
15678964723
max=a[3]=78
7.输入一段文字,统计其中所包含的数字字符和字母字符个数。
math.h>
string.h>
#defineN80
intcnum=0,dnum=0;
/*全局变量用于在两个函数之间传递数据*/
charch[N];
voidcount(charc);
inti,n;
gets(ch);
n=strlen(ch);
i++)
count(ch[i]);
/*数组元素作为函数的实参*/
%d,%d\n"
cnum,dnum);
voidcount(charc)
if(c>
='
0'
&
c<
9'
)
dnum++;
if((c>
A'
Z'
)||(c>
a'
z'
))
cnum++;
hello12345↙
5,5
8.请写出下列程序段的输出结果。
(1)#include<
inta[]={1,2,3,4,5,6},*p;
p=a;
*(p+3)+=2;
%d,%d"
*p,*(p+3));
解:
1,6
intmain()
inta[]={1,2,3,4,5,6};
int*p;
p=a;
%5d%5d%5d%5d\n"
*p,*(++p),*++p,*(p--));
%5d%5d\n"
*p,*(a+2));
3321
23
(3)#include<
#include<
char*s1="
AbDeG"
char*s2="
AbdEg"
s1+=2;
s2+=2;
strcmp(s1,s2));
}
-1
(4)#include<
#include<
fun(char*w,intn)
{
chart,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<
s2)
t=*s1;
*s1=*s2;
*s2=t;
s1++;
s2--;
}
charp[]="
1234567"
fun(p,strlen(p));
puts(p);
7654321
(5)#include<
char*a[]={"
Pascal"
"
Clanguage"
dBase"
Coble"
};
char(**p)[];
intj;
p=a+3;
for(j=3;
j>
=0;
j--)
*(p--));
Coble
dBase
Clanguage
Pascal
9.用一个函数实现两个字符串的比较,即自己写一个strcmp函数:
strcmp(s1,s2)
如果s1==s2,则函数返回值为0;
如果s1!
=s2,返回它们两者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字符不同,“O”与“A”之差为79-65=14);
如果s1>
s2,则输出正值,如果s1<
s2,则输出负值。
两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数中输出。
intstrcmp(char*s1,char*s2)
for(;
*s1==*s2&
*s1&
*s2;
s1++,s2++);
/*找不同的字符*/
return(*s1-*s2);
voidmain()
chara[10],b[10];
gets(a);
gets(b);
strcmp(a,b));
程序运行结果如下:
hello↙
world↙
-15
10.设计一个程序,管理一个班的计算机成绩,要求采用一维数组来存储学生的成绩。
#include<
intmain(void)
floata[10];
inti=0;
doublesum=0.0;
floatavg=0.0;
for(i=0;
10;
请输入第%d个同学的成绩:
i+1);
%f"
\n"
sum+=a[i];
avg=sum/10.0;
printf("
%f\n"
avg);
请输入第1个同学的成绩:
85↙
请输入第2个同学的成绩:
89↙
请输入第3个同学的成绩:
90↙
请输入第4个同学的成绩:
78↙
请输入第5个同学的成绩:
69↙
请输入第6个同学的成绩:
58↙
请输入第7个同学的成绩:
请输入第8个同学的成绩:
95↙
请输入第9个同学的成绩:
100↙
请输入第10个同学的成绩:
83.100000
11.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,用指针来实现。
#include<
voidaa(int*array)
inti;
scanf("
%d,"
array[i]);
voidbb(int*array)
int*max,*min,t;
max=min=array;
for(p=array;
p<
=array+9;
p++)
if(*max<
*p)max=p;
if(*min>
*p)min=p;
t=*max;
*max=array[9];
array[9]=t;
t=*min;
*min=array[0];
array[0]=t;
voidcc(int*array)
intnumber[10];
aa(number);
bb(number);
cc(number);
0-91020304050607066↙
-9,0,10,20,30,40,50,60,66,70
12.分析下列程序的运行结果。
intf1(intx)
returnx+1;
intf2(intx)
returnx-1;
intsum_square(int(*f)(),intm,intn)
intk,sum=0;
for(k=m;
k<
=n;
k++)
sum+=(*f)(k)*(*f)(k);
returnsum;
result=%d\n"
sum_square(f1,1,2)+sum_square(f2,1,2));
result=14
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题