C语言上机练习题.docx
- 文档编号:28682561
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:28.39KB
C语言上机练习题.docx
《C语言上机练习题.docx》由会员分享,可在线阅读,更多相关《C语言上机练习题.docx(18页珍藏版)》请在冰豆网上搜索。
C语言上机练习题
1。
阅读以下程序,说出其功能和运算结果。
#include〈stdio.h〉
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〈stdio.h〉 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 h> main() {inta,b,c,max; printf(”pleasescanthreenumbera,b,c: \n"); scanf(”%d,%d,%d”,&a,&b,&c); max=a; if(max if(max〈c)max=c; printf("maxis: %d”,max); } 5.运行以下程序时,从键盘键入China# #include h> 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〈stdio。 h> 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〈stdio。 h〉 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 h> voidmain() { intn[3],i,j,k; for(i=0;i〈3;i++)n[i]=0; k=2; for(i=0;i〈k;i++) for(j=0;j〈k;j++) n[j]=n[i]+1; printf(“%d\n",n[1]); } 9.阅读程序,写出程序运行结果. #include〈stdio.h〉 #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〈stdio。 h〉 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〈N;c[i]=getchar(),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〈k;j++) if(str[i]==str1[j]) flag=1; if(flag! =1)str1[k++]=str[i]; i++; } for(i=0;i〈k;i++) printf("%3c”,str1[i]); } 如运行时输入: abcbaccba 14。 若输入一个整数10,以下程序的运行结果是 . #include h> 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 h〉 #defineMAX10 inta[MAX],i; sub2() { inta[MAX],i,max; max=5; for(i=0;i〈max;i++)a[i]=i; } sub1() { for(i=0;i〈MAX;i++)a[i]=i+i; } sub3(inta[]) { inti; for(i=0;i〈MAX;i++)printf(“%d",a[i]); printf(“\n"); } voidmain() { printf(“\n”);sub1();sub3(a);sub2();sub3(a); } 16。 以下程序的正确运行结果是 。 #include h〉 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〈stdio.h〉 #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〈stdio。 h> #include〈string.h〉 voidmain() {char*p1,str1[20]=”xyz",str2[20]; p1="abcd”;p1++; strcat(str1+1,p1+1); strcpy(str2,str1); printf(”%s”,str2); } 22.下列程序的输出结果是 #include h〉 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 h〉 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: 退出 学生登记表如下: 学号 姓名 性别 籍贯 入学成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 练习题