哈尔滨工程大学c语言.docx
- 文档编号:7238483
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:49
- 大小:29.86KB
哈尔滨工程大学c语言.docx
《哈尔滨工程大学c语言.docx》由会员分享,可在线阅读,更多相关《哈尔滨工程大学c语言.docx(49页珍藏版)》请在冰豆网上搜索。
哈尔滨工程大学c语言
一、选择题
1.对一维数组a的正确说明是D。
A)inta(10);B)intn=10,a[n];C)intn;D)#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n];
2.能对二维数组a进行正确初始化的语句是B。
A)inta[2][]={{1,0,1},{5,3,2}};B)inta[][3]={{1,2,3},{4,5,6}};
C)inta[2][4]={{1,2,3},{4,5},{6}};D)inta[][3]={{1,0,1},{1,2,3,4},{1,1}};
3.对两个数组a和b进行如下初始化
chara[]="ABCDEF";
charb[]={'A','B','C','D','E','F'};
则以下叙述正确的是D。
A)a与b数组完全相同B)a与b长度相同
C)a和b中都存放字符串D)a数组比b数组长度长
4.以下数组定义中不正确的是D。
A)inta[2][3];B)intb[][3]={0,1,2,3,4,5};
C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
5.以下选项中,不能正确赋值的是A。
A)chars1[10];s1="Ctest";B)chars2[]={'C','t','e','s','t'};
C)chars3[20]="Ctest";D)chars4[]="Ctest\n"
二、阅读程序写出结果
1.
#include
voidmain()
{charch[7]={"12ab56"};
inti,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
答案:
1
2.
#include
voidmain()
{inta[10]={1,2,2,3,4,3,4,5,1,5};
intn=0,i,j,c,k;
for(i=0;i<10-n;i++)
{c=a[i];
for(j=i+1;j<10-n;j++)
if(a[j]==c)
{n++;
for(k=j;k<10-n;k++)
a[k]=a[k+1];
}
}
for(i=0;i<(10-n);i++)
printf("%d",a[i]);
}
答案:
12345
3.
#include
voidmain()
{inti;
chara[]="Time",b[]="Tom";
for(i=0;a[i]!
='\0'&&b[i]!
='\0';i++)
if(a[i]==b[i])
if(a[i]>='a'&&a[i]<='z')
printf("%c",a[i]-32);
else
printf("%c",a[i]+32);
elseprintf("*");
}
答案:
t*M
4.
#include
#defineLEN4
voidmain()
{intj,c;
staticcharn[2][LEN+1]={"8980","9198"};
for(j=LEN-1;j>=0;j--)
{c=n[0][j]+n[1][j]-2*'0';
n[0][j]=c%10+'0';
}
for(j=0;j<=1;j++)puts(n[j]);
}
答案:
70789198
三、程序填空
1.
程序的功能是在a数组中查找与x值相同的元素的所在位置。
#include
voidmain()
{
inta[11],x,i;
printf("Enter10integers:
\n");
for(i=1;i<=10;i++)
scanf("%d",a[i]);
printf("Enterx:
");
scanf("%d",&x);
a[0]=x;
i=10;
while(x!
=a[i])
(1);
if(
(2))
printf("%5d'spositionis:
%4d\n",x,(3));
else
printf("%dNotbeenfound!
\n",x);
}
答案:
(1)i—
(2)i>=1
(3)i
2.
数组a包括10个整型元素,从数组a的第2个元素开始,分别将后项减前项之差存入数组b,并按每行3个元素的格式输出数组b。
例如b[0]=a[1]-a[0]。
#include
voidmain()
{inta[10],b[10],i;
for(i=0;
(1);i++)
scanf("%d",&a[i]);
for(i=1;
(2);i++)
b[i]=a[i]-a[i-1];
for(i=1;i<10;i++)
{printf("%3d",b[i]);
if((3))
printf("\n");
}
}
答案:
(1)i<=9
(2)i<=9
(3)i%3==0
四、程序改错
1.
程序的功能是:
计算数组各元素之和,并存入首元素中。
#include
voidmain()
{
inta[10]=[0];/****found****/
inti;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<=10;i++)a[0]=a[0]+a[i];/****found****/
printf("%d\n",a[0]);
}
答案:
(1)inta[3]={0};
(2)for(i=1;i<3;i++)a[0]=a[0]+a[i];
2.
函数fun的功能是:
将数组s中的字符串的反序和正序连接后形成的新字符串放在数组t中。
例如,当数组s所存的字符串为"ABCD"时,
数组t应为"DCBAABCD"。
#include
#include
#include
voidfun(chars[],chart[])
{
inti,d;
d=strlen(s);
for(i=1;i t[i]=s[d-1-i]; for(i=0;i t[d+i]=s[i]; t[2*d]='/0';/****found****/ } voidmain() { chars[100],t[100]; clrscr(); printf("\nPleaseenterstringS: "); scanf("%s",&s);/****found****/ fun(s,t); printf("\nTheresultis: %s\n",t); } 答案: (1)for(i=0;i (2)t[2*d]='\0’ (3)scanf(“%s”,s) 五、程序问答 1. #include voidmain() { inta[100],i,j,n,p; printf("输入数值的个数n和数列a\n"); scanf("%d",&n); scanf("%d",&a[0]); for(i=1;i<=n-1;i++) { scanf("%d",&a[i]); p=a[i]; j=i-1; while(p=0) { a[j+1]=a[j]; j--; } a[j+1]=p; } for(i=0;i printf("%d",a[i]); printf("\n"); } 问题1: 该程序的功能是什么? 问题2: 如果先输入一个10,再输入下面的10个数: 1928374655 则该程序输出什么? 答案: (1).升序 (2).1234556789 2. #include voidmain() {inta[]={11,33,27,33,-1,22,-8,12}; inti,t,j; for(i=0;i<8-1;i++) for(j=8-1;j>i;j--) if(a[j-1] {t=a[j-1]; a[j-1]=a[j]; a[j]=t;} for(i=0;i<8;i++)printf(“%4d”,a[i]); } 问题1: 此程序的运行结果是什么? 问题2: 若将函数中的语句: if(a[j-1] 改成: if(a[j-1]>a[j]) 则程序的运行结果是什么? 答案: (1).333327221211-1-8 (2).-8-1111222273333 六、编程 1.在一组数中找出最大与最小值之差。 #include voidmain() { inta[10],i,x,y; printf("pleaseinputthenumber: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); x=a[0]; y=a[0]; for(i=1;i<10;i++) {if(a[i]>x) x=a[i]; if(a[i] y=a[i]; } printf("theansweris%d",x-y); } 2.用选择法将一组整数按降序排序。 #include voidmain() { inta[10],i,j,k,t; printf("pleaseinputthenumbers: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++) { k=i; for(j=i+1;j<=9;j++) if(a[j]>a[k]) k=j; t=a[k]; a[k]=a[i]; a[i]=t; } for(i=0;i<=9;i++) printf("%d",a[i]); } 3.在一个按升序排列的数组中插入一个数,使数组仍有序。 #include voidmain() { inta[7]={3,5,7,9,11,23}; intb,i,k; scanf("%d",&b); a[6]=b; i=5; while(b=0) { a[i+1]=a[i]; a[i]=b; i--; } printf("charuhoudeshuzu\n"); for(i=0;i<7;i++) printf("%d",a[i]); } 4.用“顺序”查找法,在一组数中查找一个值为K的元素。 若有,输出YES;若无,输出NO。 #include voidmain() { inta[10],i,j,k; printf("pleaseinputthenumbers: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("pleaseinputtheaimnumber: \n"); scanf("%d",&k); for(i=0;i<=9;i++) if(a[i]==k) break; if(i>9) printf("NO\n"); else printf("YES\n"); } 5.输出以下形式的图案: ******* ***** *** * #include voidmain() { inti,j; for(i=1;i<=4;i++) { for(j=1;j<=i-1;j++) printf(""); for(j=1;j<=9-2*i;j++) printf("*"); printf("\n"); } } 6.将一个数组按逆序重新存放在该数组中。 #include voidmain() { inta[10],i,t; printf("pleaseinputthenumbers: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10/2;i++) { t=a[i]; a[i]=a[10-1-i]; a[10-1-i]=t; } for(i=0;i<10;i++) printf("%d",a[i]); } 7.打印一个5行的杨辉三角形。 #include voidmain() { inta[5][5]={0},i,j; for(i=0;i<=4;i++) a[i][0]=a[i][i]=1; for(i=2;i<=4;i++) for(j=1;j a[i][j]=a[i-1][j]+a[i-1][j-1]; for(i=0;i<=4;i++) { for(j=0;j<=i;j++) printf("%3d",a[i][j]); printf("\n"); } } 8.用二维字符数组存储下列图形并输出。 ***** **** *** ** * #include voidmain() { charc[5][5]={'\0'}; inti,j; for(i=0;i<5;i++) for(j=i;j<5;j++) c[i][j]='*'; for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%c",c[i][j]); printf("\n"); } } 9.计算二维数组主对角线元素之和。 #include voidmain() { inta[3][3],i,j,x; printf("pleaseinputthenumbers: \n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); x=0; for(i=0;i<3;i++) x=x+a[i][i]; printf("theansweris%d\n",x); } 10.用“折半”查找法,在一组按降序排列的数中查找一个值为K的元素。 若有,输出YES;若无,输出NO。 #include voidmain() { inta[10]={10,9,8,7,6,5,4,3,2,1},l,r,m,k; printf("pleaseinputthenumbers: \n"); scanf("%d",&k); l=0; r=9; m=(1+r)/2; while(l<=r) if(a[m]==k) break; else { if(k>a[m]) r=m-1; else l=m+1; m=(l+r)/2; } if(l<=r) printf("\nYES"); else printf("\nNO"); } 11.编写一个程序计算一个字符串的长度。 (不使用库函数) #include #include voidmain() { chars[80]; intn=0; gets(s); while(s[n])n++; printf("length=%d",n); } 12.比较两个字符串S1、S2的大小。 (不使用库函数)若S1>S2,输出1;若S1=S2,输出0;若S1 #include #include voidmain() { chars1[80],s2[80]; inti,n; gets(s1); gets(s2); i=0; while(s1[i]&&s2[i]&&s1[i]==s2[i])i++; if(! s1[i]||s1[i] n=-1; if(! s2[i]||s1[i]>s2[i]) n=1; if(! s1[i]&&! s2[i]) n=0; printf("jieguoshi%d",n); } 13.用“冒泡”法将一组数按升序排序。 #include voidmain() { inta[10],i,j,x; for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { x=a[i]; a[i]=a[i+1]; a[i+1]=x; } for(i=0;i<10;i++) printf("%4d",a[i]); } 14.在一个二维数组中形成并输出如下矩阵 11111 21111 32111 43211 54321 #include voidmain() { inta[5][5]; inti,j; for(i=0;i<5;i++) for(j=0;j<5;j++) if(i<=j) a[i][j]=1; else a[i][j]=i-j+1; for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%2d",a[i][j]); printf("\n"); } } 15.有一个3╳4的矩阵,求其中的最大元素的值及位置。 #include voidmain() { inta[3][4],i,j,x,l,r; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); x=a[0][0]; l=r=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>x) { x=a[i][j]; l=i; r=j; } printf("Maxnumberis%d,positionis%d,%d\n",x,l,r); } 一、选择题 1.根据下面的定义,能打印出字母M的语句是(D)。 structperson{charname[9]; intage;}; structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16}; A.printf("%c\n",class[3].name); B.printf("%c\n",class[3].name[1]); C.printf("%c\n",class[2].name[1]); D.printf("%c\n",class[2].name[0]); 2.若有以下结构体定义: structexample {intx1; inty1; }; 则B是正确的使用方式。 A.structexample.x1=100;B.structexamplexy;xy.x1=100; C.structxy;xy.x1=100;D.structexamplexy={100}; 3.下面结构体数组的定义,错误的是(D)。 A.structstudent {intnum; charname[10]; floatscore; }; structstudentstu[30]; B.struct {intnum; charname[10]; floatscore; }stu[30]; C.structstudent {intnum; charname[10]; floatscore; }stu[30]; D.structstu[30] {intnum; charname[10]; floatscore; }; 二、写出以下程序的运行结果 (1) #include voidmain() {structcmplx{intx; inty; }cnum[2]={1,3,2,7}; printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); } 答案: 6 (2) #include voidmain() {structdate {intyear,month,dat; }today; printf("%d\n",sizeof(structdate)); } 答案: 6 (3) #include voidmain() {structMING {struct{intx; inty; }in; inta; intb; }e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); } 答案: 2,3 (4) #include voidmain() { structabc {inta,b,c;}; structabcs[2]={{1,2,3},{4,5,6}}; intt; t=s[0].a+s[1].b; printf("%d\n",t); } 答案: 6 (5) #include #include structstudent
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈尔滨工程 大学 语言