C语言上机练习题Word格式文档下载.docx
- 文档编号:6438272
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:17
- 大小:27.37KB
C语言上机练习题Word格式文档下载.docx
《C语言上机练习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言上机练习题Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
x=%d,y=x=%d\n"
x,y);
elseif(x<
10)
{y=2*x-1;
x=%d,y=2*x-1=%d\n"
else
{y=3*x-11;
x=%d,y=3*x-11=%d\n"
4.当输入19,2,21时下列程序运行的结果是( )。
{inta,b,c,max;
pleasescanthreenumbera,b,c:
);
%d,%d,%d"
a,&
b,&
c);
max=a;
if(max<
b)max=b;
c)max=c;
maxis:
max);
5.运行以下程序时,从键盘键入China#<
CR>
(<
代表回车),则下面程序的运行结果是 。
#include<
voidmain()
{
intv1=0,v2=0;
charch;
for(;
(ch=getchar())!
=‘#’;
)
switch(ch)
{
case‘a’:
case‘h’:
default:
v1++;
case‘o’:
v2++;
}
printf(“%d,%d\n”,v1,v2);
}
6.下面程序的运行结果是 。
voidmain()
{inti,j,k=19;
while(i=k-1)
{k-=3;
if(k%5==0){i++;
continue;
elseif(k<
5)break;
i++;
printf(“i=%d,k=%d\n”,i,k);
7.下列程序的输出为 。
{inti,j,k=0,m=0;
for(i=0;
2;
{for(j=0;
j<
3;
j++)k++;
k-=j;
m=i+j;
printf("
k=%d,m=%d\n"
k,m);
8.下面程序的运行结果是 。
intn[3],i,j,k;
for(i=0;
i++)n[i]=0;
k=2;
k;
for(j=0;
j++)
n[j]=n[i]+1;
printf(“%d\n”,n[1]);
9.阅读程序,写出程序运行结果。
#define?
MAX?
100
?
{?
int?
f[MAX],i,j,k=2,m=5;
=m;
i++)?
f[i]=1;
f[k-1]=2;
for(i=k;
for(j=i-k;
=i-1;
j++)?
f[i]+=f[j];
%d%5d%5d\n"
k,m,f[m]);
10.下面程序可求出矩阵a的两条对角线上的元素之和。
请填空。
#include<
inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;
for(i=0;
for(j=0;
if(i==j)sum1=sum1+a[i][j];
for(【1】;
【2】;
j--)
if((i+j)==2)sum2=sum2+a[i][j];
printf(“sum1=%d,sum2=%d\n”,sum1,sum2);
11.已知以下矩阵:
=
×
下面程序的功能是求出Y1,Y2,Y3,Y4的值。
floata[4][4]={{1,-0.2,0,0},{-0.8,1,-0.2,-0.2},
{0,-0.8,1,-0.2},{0,-0.8,-0.8,1}};
floatx[4]={1,1,1,1},y[4];
inti,j,k;
4;
y[i]=0;
【1】
for(k=0;
k<
k++)
printf(“\nY[%d]=%-6.2f”,k+1,【2】);
12.运行以下程序时,如果从键盘上输入:
ab<
回车>
c<
def<
则输出结果为()。
#include"
stdio.h"
#defineN6
{charc[N];
inti=0;
for(;
N;
c[i]=getchar(),i++);
i++)putchar(c[i]);
A.aB.aC.abD.abcdef
bbc
ccd
dd
e
f
13.给出下列程序的运行结果:
#include"
string.h"
{charstr[81],str1[81];
intk=1,i=1,j;
intflag=0;
gets(str);
str1[0]=str[0];
while(str[i]!
='
\0'
)
{for(j=0;
if(str[i]==str1[j])
flag=1;
if(flag!
=1)str1[k++]=str[i];
i++;
%3c"
str1[i]);
如运行时输入:
abcbaccba
14.若输入一个整数10,以下程序的运行结果是 。
sub(inta)
{intc;
c=a%2;
returnc;
{inta,e[10],c,i=0;
printf(“输入一整数\n”);
scanf(“%d”,&
a);
while(a!
=0)
{c=sub(a);
a=a/2;
e[i]=c;
i++;
i>
0;
i--)printf(“%d”,e[i-1]);
15.以下程序的正确运行结果是 。
#include<
#defineMAX10
inta[MAX],i;
sub2()
{
inta[MAX],i,max;
max=5;
max;
i++)a[i]=i;
sub1()
{
MAX;
i++)a[i]=i+i;
sub3(inta[])
inti;
i++)printf(“%d”,a[i]);
printf(“\n”);
voidmain()
printf(“\n”);
sub1();
sub3(a);
sub2();
16.以下程序的正确运行结果是 。
func(inta,intb)
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
intk=4,m=1,p;
p=func(k,m);
printf(“%d,”,p);
printf(“%d\n”,p);
17.阅读程序,说出程序的运行结果()。
#defineADD(x)x+x
intm=1,n=2,k=3;
intsum=ADD(m+n)*k;
sum=%d"
sum);
18.以下程序的正确运行结果是 。
intfun(intx,inty,int*cp,int*dp)
{*cp=x+y;
*dp=x-y;
{inta,b,c,d;
a=4;
b=3;
fun(a,b,&
c,&
d);
%d%d%d%d\n"
a,b,c,d);
19.以下程序的正确运行结果是 。
{inta[]={2,3,4,5};
ints,i,*p;
s=1;
p=a;
=3;
i++)s+=*p++;
s=%d\n"
s);
20.以下程序的正确运行结果是 。
voidmove(int*);
inta[3][3]={1,2,3,4,5,6,7,8,9},(*p)[3],*p1=*a,i,j;
for(;
p1<
*a+9;
p1++)printf("
%3d"
*p1);
p1=*a;
j++)printf("
*(p1+i*3+j));
move(p);
%3d%3d%3d\n"
a[i][0],a[i][1],a[i][2]);
voidmove(int*pointer)
{inti,j,t;
for(j=i+1;
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
21.以下程序的正确运行结果是 。
string.h>
{char*p1,str1[20]="
xyz"
str2[20];
p1="
abcd"
;
p1++;
strcat(str1+1,p1+1);
strcpy(str2,str1);
%s"
str2);
22.下列程序的输出结果是
structabc
{inta,b,c;
};
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
t);
1.摊论个卖西瓜,以西瓜的重量论价。
10斤以上的每斤0.3元,8斤以上的每斤0.4元,6斤以上的每斤0.5元,4斤以上的每斤0.7元,4斤以下的每斤0.8元,从键盘输入西瓜的重量和顾客所付钱数,输出应付款和应找钱数。
2.编写程序完成任意两个数的+,-,*,/运算,要求从键盘输入四个运算符之一和任意两个数,输出运算结果。
3.给定一个日期,输出这个日期是该年的第几天(输入的数据格式为YYYYMMDD,确保输入的数据有效)。
4.找出1~99之间满足以下条件的数:
该数的平方对于10的余数等于该数本身,或者该数的平方对于100的余数等于该数本身。
5.编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依此类推,第n行为2n-1个相应的字母,以后每行字母个数递减。
n由键盘输入。
6.从键盘输入若干整数(数据个数应少于50),其值在0至4的范围内,用-1作为输入结束的标志。
统计每个整数的个数。
试编程。
7.设计一个程序,将上学期本队学员高数课程的考试成绩排序,并给出每一个学员的名次。
(如果有并列第一,则取消第二名,以此类推)
8.编程求具有4行4列数据的二维数组每一列元素之和并将其放入该列的第五行上。
输出第五行元素。
9.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。
也可以没有鞍点。
(用常规算法做的时候,要求数据不能相同)
10.从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a中;
如果b的长度小于5,则把b中的所有元素都连接到a中。
11.通过键盘输入三行英文文字,编写程序将输入的三行文字输出,要求输出结果中不允许包含大写字母(输出时如遇到大写字母则将其转换为小写)。
12.以下程序的功能是应用下面的近似公式计算e的n次方。
函数f1用来计算每项分子的值,函数f2用来计算每项分母的值。
请编写f1和f2函数。
(前20项的和)
floatf2(intn)
{}
floatf1(intx,intn)
floatexp=1.0;
intn,x;
printf(“Inputanumber:
”);
scanf(“%d”,&
printf(“%d\n”,x);
exp=exp+x;
for(n=2;
n<
=19;
n++)
exp=exp+f1(x,n)/f2(n);
printf(“\nTheisexp(%d)=%8.4f\n”,x,exp);
运行结果:
Inputanumber:
3
Theisexp(3)=20.0855
13.函数del的作用是删除有序数组a中的指定元素x。
已有调用语句n=del(a,n,x);
其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。
14.从键盘输入一个整数(小于等于8位),将其转换成字符串后输出。
如:
输入1991,输出1□9□9□1。
要求输入和输出在主函数完成,功能的实现在子函数完成。
15.编写一个函数,对具有10个整数的数组进行如下操作:
从第n个元素开始到最后一个元素,依次向前移动一个位置,空出的最后一个位置放入第n-1个元素,输出移动后数组的全部元素值。
(n的取值1~10)
16.编写一程序,完成学生成绩的输入、查询、排序、插入功能,每个功能完成后都要输出结果。
要求:
1)在主函数中定义一个数组a[11],用以存放学生的成绩,分别调用下面的6个子函数,完成各自功能;
2)编写一个函数inputsc(inta[]),从键盘输入10个学生成绩;
3)编写一个函数outputsc(inta[],intn),输出n个学生成绩;
4)编写一个函数query(inta[],intn),查询第n个学生成绩并输出结果;
5)编写一个函数sort(inta[10]),在函数中进行10个学生成绩从高到低排序;
6)编写一个函数insert(inta[]),再输入一个学生的成绩,将此成绩插入到原已排好序的学生成绩数组中;
7)改进上一步的函数为sort1(inta[],intn,charstyle),将n个学生成绩排序,排序方式根据sort()函数的style参数进行,如style为'
a'
按升序排,style为'
d'
按降序排。
17.输入若干个整数,编写两个函数分别实现:
A.对它们按从大到小的顺序排列:
sort(int*x,intn)
B.对键盘输入的任一整数,能够按已排序好的规律将它插入到合适的位置:
insert(int*x,intn,inty)其中y为欲插入的整数
18.有一个长度为n的字符串,编写一函数strc(char*p1,char*p2,intm,intn),将此字符串中从第m个字符开始的全部字符复制到另外一个字符串。
在主函数输入和输出。
19.用结构体实现输入某年某月某日,计算出这一天是本年度的第几天。
20.请设计一个程序,完成以下功能:
请输入0-5之间的数字,实现相应的功能:
0:
原始数据的录入1:
查询某学生的信息
2:
插入一个学生3:
删除一个学生
4:
打印全体学生信息5:
退出
学生登记表如下:
学号
姓名
性别
籍贯
入学成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 练习题