收藏 分销(赏)

海南大学C语言程序设计考试试题及答案.doc

上传人:精**** 文档编号:4020790 上传时间:2024-07-25 格式:DOC 页数:7 大小:27.04KB 下载积分:6 金币
下载 相关 举报
海南大学C语言程序设计考试试题及答案.doc_第1页
第1页 / 共7页
海南大学C语言程序设计考试试题及答案.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
以下程序是求矩阵a,b的乘积,结果存放在矩阵C中并按矩阵形式输出,请填(3)空使程序完整。 main ( ) { int a[2][2]={—1,-2,-3,-4}, b[2][3]={2,10,9,4,5,119}; int i,j,k,s=0,c[2][3main ( ) { int a[2][2]={—1,—2,—3,—4}, b[2][3]={2,10,9,4,5,119}; int i,j,k,s=0,c[2][3]={0}; for (i=0; i<2; i++) for (j=0; j<3; j++) { s=0; for (k=0; k<2; k++) {s+=a[i][k]*b[k][j]; printf("%d %d %d\n”,a[i][k],b[k][j],s);} c[i][j]=s; } for (i=0; i<2; i++) {for (j=0; j〈3; j++) printf("%6d",c[i][j]); printf(”\n"); } system("pause”); } ]={0}; for (i=0; i<2; i++) for (j=0; j<3; j++) { s=0; for (k=0; k<2; k++) {s+=a[i][k]*b[k][j]; printf("%d %d %d\n",a[i][k],b[k][j],s);} c[i][j]=s; } for (i=0; i<2; i++) {for (j=0; j<3; j++) printf(”%6d”,c[i][j]); printf(”\n"); } system("pause”); } 以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填(2)空使程序完整。 main ( ) { char a[40]=”Great ", b[ ]=”Wall”; int i=0,j=0 ; while (a[i]!='\0’) i++ ; while (b[j]!=’\0') { a[i]=b[j] ; i++ ; j++ ; } //【2 】; printf(”%s\n”,a); system("pause"); } del函数的作用是删除有序数组a中的指定元素x,n为数组a的元素个数,函数返回删除后的数组a元素个数,请填(2)空使程序完整。 int del (int a[10],int n,int x) { int p=0,i ;    while (x>=a[p]&&p<n) p++;    for (i=p—1; i〈n; i++) a[i]=a[i+1];    return (n-1) ; }//只能删除升序序列 以下程序的功能是计算函数f=x/y+y/z ,请填(3)空使程序完整. # include <stdio。h> #include “math。h”; main ( ) { float x,y,z,f ;    scanf(“%f,%f,%f",&x,&y,&z);    f = fun (x,y);    f += fun (y,z);    printf(“f=%f”,f); } float fun(float a,float b) { return (a/b) ; } avg函数的作用是计算数组array的平均值返回,请填(3)空使程序完整。 float avg(float array[10]) { int i; float avgr,sum=0; for (i=0;i〈10;i++) sum+=array[i]; avgr=sum/10 ; return(avgr); 下列程序的输出结果是16。00,请填(1)空使程序完整. main ( ) { int a=9,b=2;    float x=6。6,y=1.1,z;    z=a/2+b*x/y+1/2;    printf(“%5.2f\n”,z); } 以下程序输出x,y,z三个数中的最小值,请填(2)空使程序完整。 main ( ) { int x=4,y=5,z=8 ;    int u,v;    u = x<y ? x:y;    v = u〈z ? u:z ;    printf (“%d”,v); } 下述程序用“碾转相除法”计算两个整数m和n的最大公约数.该方法的基本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整. main ( ) { int m,n,w;    scanf(“%d,%d”,&m,&n);    while (n) {       w=m%n;       m=n;        n=w;    }    printf(“%d",m); } 下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。 main ( ) { int n,k=1,s=0,m ;   for (n=1 ; n〈=100 ; n++) {       k=1 ; s=0 ;       m=n;       while (m〉1) {           k*=m%10;           s+=m%10;           m=m/10;       }       if (k〉s) printf(“%4d”,n);   } } 下面程序段的功能是计算1000!的末尾有多少个零,请填(1)空使程序完整. main ( ) {      int i,k,m;      for (k=0,i=5; i<=1000; i+=5)      { m = i ;         while (m%5) { k++; m=m/5 ; }      }printf(“%d”,k); } 下面程序接受键盘上的输入,直到按↙键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填(3)空使程序完整. main ( ) {     char cx , front=’\0’ ; while (cx!=’\n’) {        if (cx!=' ’) putchar(cx) ;        if (cx==’ ’)           if (cx!=’’)              putchar(‘’);        front=cx ; } 下面程序可求出矩阵a的主对角线上的元素之和,请填(2)空使程序完整。 main ( ) { Int a[3][3]={1,3,5,7,9,11,13,15,17} , sum=0,i,j; for (i=0;i〈3;i++) for (j=0;j<3;j++) if (i==j) sum=sum+a[i][j]; printf(”sum=%d",sum); } 下面程序将十进制整数base转换成n进制,请填(3)空使程序完整。 main ( ) { int i=0,base,n,j,num[20]={0}; scanf(”%d",&n); scanf("%d",&base); do { i++; num[i]=base%n; base=base/n; } while (base!=0); for (j=i;j〉0;j--) printf(”%d",num[j]);} 下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。 main ( ) { int a[10],max,min,i,j,k=0; for (i=0; i〈10; i++) scanf(”%d”,&a[i]); max=min=a[0]; for (i=0; i<10; i++) { if (a[i]<min) { min=a[i]; k=i; } if (a[i]>max) { max=a[i]; j=i; } } a[k]=max; a[j]=min; for (i=0; i<10; i++) printf(”%d”,a[i]); } 下面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整. 经典算法提示: 简单插入排序算法的基本思想使将数组处理n—1次,第k次处理是将第k个元素插入到目前的位置.第k次的元素是这样插入的:在第k次处理时,前面的元素a[0],a[1],…,a[k—1]必定已排成了升序,将a[k]与a[k-1],a[k—2],…a[0]逐个比较(由后向前),若有a[j]〈a[k],则a[k]插入到a[j]之后,否则a[k]维持原位不变。 main ( ) { int a[10]={191,3,6,4,11,7,25,13,89,10} ; int i,j,k ; for (i=1; i<10; i++) { k = a[i]; //a[5] j = i-1; //a[4] while (j>=0 && k<a[j]) //a[4]〉a[5] a[3]>a[5] { a[j+1]=a[j]; //a[5]=a[4]? a[4]=a[3] j——;//a[3] a[2] } a[j+1]=k; //a[3]=a[5]最小的放后面 } for (i=0; i<10; i++) printf(”%d”,a[i]); } 下面程序用“两路合并法”把两个已按升序(由小到大)排列的数组合并成一个新的升序数组,请填(3)空使程序完整。 main ( ) { int a[3]={5,9,10} ; int b[5]={12,24,26,37,48} ; int c[10],i=0,j=0,k=0 ; while (i<3 && j〈5) if (a[i]>b[j]) {c[k]=b[j] ; k++ ; j++ ;} else {c[k]=a[i] ; k++ ; i++ ;} while (i==3 && j〈5) { c[k]=a[i] ; i++ ; k++ ; } while (i〉3 && j〈5) { c[k]=b[j] ; j++ ; k++ ; } for (i=0; i<k; i++) printf("%d ",c[i]); system("pause”); } 下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的结果保存到b数组中,并按矩阵形式输出a和b,请填(3)空使程序完整。 main ( ) { int a[2][3]={{4,5,6},{1,2,3}}, b[2][3]={0}, i,j; for (i=0; i<2 ; i++) { for (j=0; j〈3 ; j++ ) { printf(”%5d”,a[i][j]); b[i][j+1]=a[i][j]; } printf("\n"); } for (i=0;i〈2;i++) b[i][0]=a[i][2]; for(i=0;i<2;i++) { for (j=0; j〈3 ; j++) { printf("%5d”,b[i][j]); // 3 】; 下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填(2)空使程序完整。 main ( ) { char c='a' ; /* 需要查找的字符*/ char t[50] ; int i,j,k; gets(t) ; i = strlen(t); for (k=0; k〈i; k++) if (t[k—1]==c) { j = k ; break ;} else j=-1; printf("%d”,j); system("pause"); } 下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填(2)空使程序完整. main ( ) { int a[10]={25,57,48,371,123,291,18,22,44}; int i=0,x ; scanf("%d",&x); while (a[i]!=x &&i 〈10) i++ ; if (i〈10) printf(”found=%d\n",i); else printf("can’t found!\n”); system(”pause”); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服