C语言程序设计习题5Word文档格式.docx
《C语言程序设计习题5Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题5Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言程序设计习题5Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/30/4dea7d8b-b785-42fd-b626-c4cbdf5e6406/4dea7d8b-b785-42fd-b626-c4cbdf5e64061.gif)
{
inta[10],max;
intx;
for(x=0;
x<
10;
x++)
a[x]=random(100);
max=a[0];
{
if(a[x]>
max)
max=a[x];
printf("
%4d"
a[x]);
}
printf("
\nmax=%d\n"
max);
return0;
}
程序运行结果如下:
4167340692478586264
max=78
6.输入10个整数,要求按照从小到大的顺序输出。
voidmain()
inti,j,min,t,a[10];
请输入10个数:
\n"
);
for(i=0;
i<
i++)
scanf("
%d"
&
a[i]);
10-1;
min=i;
for(j=i;
j<
j++)
if(a[min]>
a[j])min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
\n排序结果如下:
%5d"
a[i]);
程序运行情况如下:
6904556115447858101
排序结果如下:
1615444556587890101
7.输入10个字符,并将它们的顺序颠倒后输出。
#defineN10
chara[N],t;
inti;
/*输入10个字符并输出*/
请输入10个字符:
%c"
/*顺序颠倒*/
N/2;
a[i]=a[N-i-1];
a[N-i-1]=t;
顺序颠倒后的字符:
N;
0123456789↙
9876543210
8.写出下列程序的运行结果。
(1)#include<
voidfun(intb[])
inti=0;
while(b[i]<
=10)
b[i]+=2;
i++;
intmain()
inti,a[]={1,5,7,9,11,13,15};
fun(a+2);
7;
15911111315
(2)#include<
intmain()
{
inta[3][3],i,j;
for(i=0;
3;
for(j=0;
a[i][j]=i;
printf("
a[1][i]);
111
(3)#include<
intmain()
intk;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;
k<
k++)
%d"
a[k][2-k]);
357
(4)#include<
#include<
string.h>
charp[20]={'
a'
'
b'
c'
d'
},q[]="
abc"
r[]="
abcde"
;
strcpy(p+strlen(q),r);
strcat(p,q);
%d\n%d\n"
sizeof(p),strlen(p));
20
11
(5)#include<
#include<
voidf(charp[][10],intn)/*字符串从小到大排序*/
{
chart[10];
inti,j;
for(i=0;
n-1;
for(j=i+1;
n;
if(strcmp(p[i],p[j])>
0)
{strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[i],t);
{
charp[5][10]={"
"
aabdfg"
abbd"
dcdbe"
cd"
};
f(p,5);
%d\n"
strlen(p[0]));
3
9.求一个3×
3矩阵对角线元素之和。
main()
floata[3][3],sum=0;
请输入矩阵元素:
for(i=0;
for(j=0;
%f"
a[i][j]);
i++)
sum=sum+a[i][i];
对角线元素之和=%.2f\n"
sum);
程序运行情况如下:
请输入矩阵元素:
123456789↙
对角线元素之和=15.00
10.找出一个二维数组中的鞍点,所谓鞍点是指该位置上的数在该行最大,在该列最小。
需要注意的是,并不是所有的二维数组都有鞍点。
#defineM10
inti,j,k,m,n,flag1,flag2,a[N][M],max,maxj;
\n输入行数n:
"
scanf("
n);
\n输入列数m:
m);
n;
第%d行?
i);
for(j=0;
m;
j++)
scanf("
printf("
a[i][j]);
printf("
flag2=0;
max=a[i][0];
maxj=0;
for(j=0;
j<
m;
if(a[i][j]>
max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;
n&
&
flag1;
k++)
if(max>
a[k][maxj])
flag1=0;
if(flag1)
\n第%d行,第%d列的%d是鞍点\n"
i,maxj,max);
flag2=1;
if(!
flag2)
\n矩阵中无鞍点!
矩阵中有鞍点,运行情况如下:
输入行数n:
2↙
输入列数m:
第0行?
4↙
5↙
第1行?
6↙
45
46
第0行,第1列的5是鞍点
矩阵中无鞍点,运行情况如下:
90↙
7↙
8↙
907
58
矩阵中无鞍点!
11.某班有30个学生,每个学生参加了5门课程的考试,请编程显示该班的期末成绩单,并求出每个学生的所有课程的总分。
intscore[31][7];
for(i=1;
=30;
score[i][0]=i;
请依次输入30个学生的五门课的成绩\n"
请依次输入第%d个学生的五门课的成绩\n"
for(j=1;
=5;
score[i][j]);
score[i][6]=0;
score[i][6]+=score[i][j];
期末成绩单\n"
%10s%10s%10s%10s%10s%10s%10s\n"
学号"
课程1"
课程2"
课程3"
课程4"
课程5"
总分"
for(j=0;
=6;
%10d"
score[i][j]);
请依次输入30个学生的五门课的成绩
请依次输入第1个学生的五门课的成绩
7889989698↙
请依次输入第2个学生的五门课的成绩
8995989796↙
请依次输入第3个学生的五门课的成绩
7879747875↙
按照上面示例自行输入27个学生的五门课的成绩。
期末成绩单
学号课程1课程2课程3课程4课程5总分
17889989698459
28995989796475
37879747875384
程序将在此处依次打印出另外27个学生的成绩。
12.打印出如下方阵:
13141516
9101112
5678
1234
intarray[4][4];
=3;
array[i][j]=(3-i)*4+(j+1);
array[i][j]);
}
13.打印出以下的杨辉三角形(要求打印出10行):
#defineN11
inti,j,a[N][N];
a[i][i]=1;
a[i][1]=1;
for(i=3;
for(j=2;
=i-1;
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(j=1;
=i;
%6d"
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
193684126126843691
14.输入5个字符串,按照ASCII码值由小到大顺序输出。
inti,j,min;
chart[20],str[5][20];
请输入5个字符串:
5;
gets(str[i]);
5-1;
if(strcmp(str[min],str[j])>
0)min=j;
strcpy(t,str[i]);
strcpy(str[i],str[min]);
strcpy(str[min],t);
puts(str[i]);
flash↙
action↙
photo↙
dream↙
weaver↙
action
dream
flash
photo
weaver
15.有一篇文章,共有5行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
inti,j,uppn,lown,dign,span,othn;
chartext[5][80];
uppn=lown=dign=span=othn=0;
\n请输入第%d行:
gets(text[i]);
80&
text[i][j]!
='
{
if(text[i][j]>
A'
text[i][j]<
Z'
)
uppn+=1;
elseif(text[i][j]>
&
text[i][j]<
z'
lown+=1;
0'
9'
dign+=1;
elseif(text[i][j]=='
'
span+=1;
else
othn+=1;
}
5;
%s\n"
text[i]);
大写字母的个数:
uppn);
小写字母的个数:
lown);
数字的个数:
dign);
空格的个数:
span);
其他字符的个数:
othn);
请输入第0行:
abc
请输入第1行:
+++
请输入第2行:
ABC
请输入第3行:
123
请输入第4行:
***
6
16.有一行电文,已按下面规律译成密码:
A→Za→z
B→Yb→y
C→Xc→x
……
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。
非字母字符不变。
要求编写程序将密码译回原文,并打印出密码和原文。
inti,n;
charch[80],tran[80];
请输入字符:
gets(ch);
\n密码是:
%s"
ch);
i=0;
while(ch[i]!
if((ch[i]>
)&
(ch[i]<
))
tran[i]=26+64-ch[i]+1+64;
elseif((ch[i]>
tran[i]=26+96-ch[i]+1+96;
else
tran[i]=ch[i];
i++;
n=i;
printf("
\n原文是:
putchar(tran[i]);
ZYXzyx↙
密码是:
ZYXzyx
原文是:
ABCabc
17.编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。
要求不使用strcpy函数。
复制时,'
也要复制过去。
'
后面的字符不复制。
charfrom[80],to[80];
inti;
请输入字符串:
from);
for(i=0;
i<
=strlen(from);
to[i]=from[i];
复制字符串为:
to);
return0;
请输入字符串:
hello↙
复制字符串为:
hello
(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)