C语言上机练习题.docx

上传人:b****7 文档编号:10385942 上传时间:2023-02-10 格式:DOCX 页数:17 大小:27.37KB
下载 相关 举报
C语言上机练习题.docx_第1页
第1页 / 共17页
C语言上机练习题.docx_第2页
第2页 / 共17页
C语言上机练习题.docx_第3页
第3页 / 共17页
C语言上机练习题.docx_第4页
第4页 / 共17页
C语言上机练习题.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言上机练习题.docx

《C语言上机练习题.docx》由会员分享,可在线阅读,更多相关《C语言上机练习题.docx(17页珍藏版)》请在冰豆网上搜索。

C语言上机练习题.docx

C语言上机练习题

1.阅读以下程序,说出其功能和运算结果。

#include

intmain()

{

intn;

intfactorial(intn);

scanf("%d",&n);

printf("%d\n",factorial(n));

return0;

}

intfactorial(intn)

{

inti,fact=1;

for(i=1;i<=n;i++)

fact=fact*i;

returnfact;

}

若输入5↙

2.改正下列程序中的错误,在屏幕上显示“WelcometoYou!

”。

#include

intmian()

{

printf("WelcometoYou!

\n")

return0;

}

3.若输入4,程序运行结果为【1】,若输入-4,运行结果为【2】,若输入10,运行结果为【3】。

#include

main()

{intx,y;

scanf("%d",&x);

if(x<1)

{y=x;

printf("x=%d,y=x=%d\n",x,y);

}

elseif(x<10)

{y=2*x-1;

printf("x=%d,y=2*x-1=%d\n",x,y);

}

else

{y=3*x-11;

printf("x=%d,y=3*x-11=%d\n",x,y);

}

}

4.当输入19,2,21时下列程序运行的结果是( )。

#include

main()

{inta,b,c,max;

printf("pleasescanthreenumbera,b,c:

\n");

scanf("%d,%d,%d",&a,&b,&c);

max=a;

if(max

if(max

printf("maxis:

%d",max);

}

5.运行以下程序时,从键盘键入China#代表回车),则下面程序的运行结果是    。

#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.下面程序的运行结果是    。

#include

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.下列程序的输出为    。

#include

voidmain()

{inti,j,k=0,m=0;

for(i=0;i<2;i++)

{for(j=0;j<3;j++)k++;k-=j;}

m=i+j;

printf("k=%d,m=%d\n",k,m);

}

8.下面程序的运行结果是    。

#include

voidmain()

{

intn[3],i,j,k;

for(i=0;i<3;i++)n[i]=0;

k=2;

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

printf(“%d\n”,n[1]);

}

9.阅读程序,写出程序运行结果。

#include

#define?

MAX?

100

voidmain()

?

?

{?

int?

f[MAX],i,j,k=2,m=5;

for(i=0;i<=m;i++)?

?

?

f[i]=1;?

?

f[k-1]=2;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)?

?

f[i]+=f[j];

?

printf("%d%5d%5d\n",k,m,f[m]);

}

10.下面程序可求出矩阵a的两条对角线上的元素之和。

请填空。

#include

voidmain()

{

inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(i==j)sum1=sum1+a[i][j];

for(i=0;i<3;i++)

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的值。

请填空。

#include

voidmain()

{

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;

for(i=0;i<4;i++)

{

y[i]=0;

for(j=0;j<4;j++)

【1】

}

for(k=0;k<4;k++)

printf(“\nY[%d]=%-6.2f”,k+1,【2】);

}

12.运行以下程序时,如果从键盘上输入:

ab<回车>

c<回车>

def<回车>

则输出结果为()。

#include"stdio.h"

#defineN6

voidmain()

{charc[N];

inti=0;

for(;i

for(i=0;i

A.aB.aC.abD.abcdef

bbc

ccd

dd

e

f

13.给出下列程序的运行结果:

#include"string.h"

#include"stdio.h"

voidmain()

{charstr[81],str1[81];

intk=1,i=1,j;

intflag=0;

gets(str);

str1[0]=str[0];

while(str[i]!

='\0')

{for(j=0;j

if(str[i]==str1[j])

flag=1;

if(flag!

=1)str1[k++]=str[i];

i++;

}

for(i=0;i

printf("%3c",str1[i]);

}

如运行时输入:

abcbaccba

14.若输入一个整数10,以下程序的运行结果是    。

#include

sub(inta)

{intc;

c=a%2;

returnc;}

voidmain()

{inta,e[10],c,i=0;

printf(“输入一整数\n”);

scanf(“%d”,&a);

while(a!

=0)

{c=sub(a);

a=a/2;

e[i]=c;

i++;}

for(;i>0;i--)printf(“%d”,e[i-1]);

}

15.以下程序的正确运行结果是    。

#include

#defineMAX10

inta[MAX],i;

sub2()

{

inta[MAX],i,max;

max=5;

for(i=0;i

}

sub1()

{

for(i=0;i

}

sub3(inta[])

{

inti;

for(i=0;i

printf(“\n”);

}

voidmain()

{

printf(“\n”);sub1();sub3(a);sub2();sub3(a);

}

16.以下程序的正确运行结果是    。

#include

func(inta,intb)

{

staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);}

voidmain()

{

intk=4,m=1,p;

p=func(k,m);printf(“%d,”,p);

p=func(k,m);printf(“%d\n”,p);

}

17.阅读程序,说出程序的运行结果()。

#include

#defineADD(x)x+x

voidmain()

{

intm=1,n=2,k=3;

intsum=ADD(m+n)*k;

printf("sum=%d",sum);

}

18.以下程序的正确运行结果是    。

intfun(intx,inty,int*cp,int*dp)

{*cp=x+y;

*dp=x-y;

}

#include

voidmain()

{inta,b,c,d;

a=4;b=3;

fun(a,b,&c,&d);

printf("%d%d%d%d\n",a,b,c,d);

}

19.以下程序的正确运行结果是    。

#include

voidmain()

{inta[]={2,3,4,5};

ints,i,*p;

s=1;p=a;

for(i=0;i<=3;i++)s+=*p++;

printf("s=%d\n",s);

}

20.以下程序的正确运行结果是    。

#include

voidmain()

{

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);

printf("\n");

p1=*a;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)printf("%3d",*(p1+i*3+j));

printf("\n");

}

p=a;

move(p);

for(i=0;i<3;i++)

printf("%3d%3d%3d\n",a[i][0],a[i][1],a[i][2]);

}

voidmove(int*pointer)

{inti,j,t;

for(i=0;i<2;i++)

for(j=i+1;j<3;j++)

{t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

21.以下程序的正确运行结果是    。

#include

#include

voidmain()

{char*p1,str1[20]="xyz",str2[20];

p1="abcd";p1++;

strcat(str1+1,p1+1);

strcpy(str2,str1);

printf("%s",str2);

}

22.下列程序的输出结果是

#include

structabc

{inta,b,c;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};

intt;

t=s[0].a+s[1].b;

printf("%d\n",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)

{}

#include

voidmain()

{

floatexp=1.0;

intn,x;

printf(“Inputanumber:

”);

scanf(“%d”,&x);

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:

退出

学生登记表如下:

学号

姓名

性别

籍贯

入学成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1