上海理工大学c语言复习卷以及答案.docx
《上海理工大学c语言复习卷以及答案.docx》由会员分享,可在线阅读,更多相关《上海理工大学c语言复习卷以及答案.docx(13页珍藏版)》请在冰豆网上搜索。
![上海理工大学c语言复习卷以及答案.docx](https://file1.bdocx.com/fileroot1/2023-2/28/8ba3ae13-40ef-458f-9328-3f2a22bd1c52/8ba3ae13-40ef-458f-9328-3f2a22bd1c521.gif)
上海理工大学c语言复习卷以及答案
上海理工大学c语言复习卷以及答案
参考解答一、单选题
1.以下C程序中预处理命令写法正确的是:
D。
[知识点:
编译预处理命令]
A.#include“studio.h”
B.#include[stdio.h]
C.#include{stdio.h}
D.#include“stdio.h”
2.执行下列语句序列后,不可能出现的运行结果是___C____。
[知识点:
开关语句]
intn;
scanf("%d",&n);
switch(n)
{
case1:
case2:
putchar('X');
case3:
case4:
putchar('Y');break;default:
putchar('Z');A.显示:
z
B.显示:
xy
C.显示:
x
D.显示:
y
3.设a,b为整型变量,且二者均不为0,以下关系表达式中恒成立的是___C___。
[知识点:
运算与数据类型]
A.a/b*b/a==1
B.a/b*b==a
C.a*b/a==b
D.a*b/a*b==1
4.设有定义:
intx=10,y=20,z=30;则执行下列语句后的结果是___B____。
[知
识点:
if语句]
if(x>y)z=x;
x=y;y=z;
printf("%d,%d,%d",x,y,z);A.20,30,20
B.20,30,30
C.20,30,10
D.10,20,30
5.下列程序的输出结果是__B____。
[知识点:
整型常量的表示和自增运算]main()
{
inta=011;
printf("%d\n",++a);}
A.9
B.10
C.11
D.12
6.设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是__B___。
[知识点:
关系、逻辑运算]
A.!
(xz||1
B.x==y&&y!
=z
C.x||y+z&&y-z
D.y&&’y’
7.以下所列的各函数声明中,正确的是___D___。
[知识点:
函数声明]A.subplay(aasinteger,basinteger)B.voidplay(vara:
Integer,varb:
Integer)C.voidplay(inta,b)
D.voidplay(inta,intb)
8.表达式!
x等价于__B____。
[知识点:
关系运算]
A.x==1
B.x==0
C.x!
=0
D.x!
=1
9.设有定义inta[10];则合法数组元素的下标范围为__B___。
[知识点:
数组定义]
A.1至10
B.0至9
C.1至9
D.0至10
10.若有数组定义语句:
inta[3][2];则t数组最后一个元素是:
D。
[知识点:
二维数组定义]
A.a[3][2]
B.a[2][3]
C.a[2]
D.a[2][1]
二、程序调试题
1.程序调试题1(D_2_1.C)
调试要求:
下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括D_2_1.c文件和D_2_1.exe文件)保存到指定目录中。
功能说明:
以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。
如输入:
-354
则输出:
sumx=18
例示说明:
-3为首项,5为公差,4为项数,前4项之和为18原程序(见素材\D_2_1.C):
#include
#include
intsumx(inta0,d,n)
{
inti,k,s=0;
k=a0;
for(i=0;is+=k;
k+=d;(return要放在花括号的后面)
returns;
}
voidmain()
{
inta0,d,n;
scanf("%d%d%d",&a0,&d,&n);
printf("sumx=%d\n",sumx(a0,d,n));}
答案:
#include
#include
intsumx(inta0,intd,intn)
{
inti,k,s=0;
k=a0;
for(i=0;i{s+=k;
k+=d;}
returns;
}
voidmain()
{
inta0,d,n;
scanf("%d%d%d",&a0,&d,&n);
printf("sumx=%d\n",sumx(a0,d,n));
system("pause");
}
2.程序调试题2(D_2_2.C)
调试要求:
下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括D_2_2.c
文件和D_2_2.exe文件)保存到指定目录中。
功能说明:
以下函数length返回字符串中字母A到字母Z所包含字符的长度。
主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
如输入:
Z2009-AShanghaiZ
则输出:
Length=8
例示说明:
从A到Z的子串为Shanghai,其长度为8原程序(见素材\D_2_2.C):
#include#includeintlength(charp[]){
charq[100],r[100];
inti,j,k;
for(i=0;p[i]='A';i++)
;
for(j=i+1;p[j]!
='\0'&&p[j]!
='Z';j++)
;
returnj-i;
}
voidmain()
{
charstr[81];
intn;
gets(str[0]);
n=length(str);
printf("Length=%d\n",n);
system("pause");
}
答案:
#include#includeintlength(charp[]){
inti,j;
for(i=0;p[i]!
='A';i++);
for(j=i+1;p[j]!
='\0'&&p[j]!
='Z';j++);
returnj-i-1;
}
voidmain()
{
charstr[81];
intn;
gets(str);
n=length(str);
printf("Length=%d\n",n);
system("pause");
}
三、程序填空题
1.以下程序输入一个10进制整数,转换为16进制,计算16进制的各个位数,
并从高位到低位依次输出。
如输入:
687
则输出:
2AF
例示说明:
10进制687等于16进制2AF,输出时2、A、F中间包含空格
源程序(见素材\T_3_1.C):
#include
#includevoidmain()
{
inta[10],i,n;
scanf("%d",&n);
for(i=0;n>0;i++)
{
a[i]=____1____;
n/=16;
}
for(i--;____2____;____3____)
printf("%X",a[i]);}
答案:
#include
#include
voidmain()
{
inta[10],i,n;
scanf("%d",&n);
for(i=0;n>0;i++)
{
a[i]=n%16;
n/=16;
}
for(i--;i>=0;i--)
printf("%X",a[i]);
system("pause");
}
2.以下程序输入n和n个大于1的正整数,输出其中素数。
如输入:
51993113715
则输出:
191137
例示说明:
先输入n为5,再输入5个正整数,输出5个整数中的素数
源程序(见素材\T_3_2.C):
#include
#includevoidmain()
{
intn,a,i,j,ct;
scanf("%d",&n);
for(i=0;____1____;i++)
{
______2______;
scanf("%d",&a);
for(j=2;jif(____3____)
ct++;
if(ct==0)
printf("%d",a);
}
printf("\n");
}
答案:
#include
#includevoidmain()
{
intn,a,i,j,ct;
scanf("%d",&n);
for(i=0;i{
ct=0;
scanf("%d",&a);
for(j=2;jif(a%j==0)
ct++;
if(ct==0)
printf("%d",a);
}
printf("\n");
system("pause");
}
四、编程题
1(编程题1(B_4_1.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括
B_4_1.C文件和B_4_1.exe文件)保存到“\实验结果”文件夹中。
功能说明:
键盘输入5个整数,按由小到大的顺序排序后输出。
如输入:
10020,531
则输出:
50102031
答案:
#include"stdio.h"
#include
voidSelectSort(intv[],intn){inti,j,k,temp;
for(i=0;i{intk=i;//k存放最小记录位置
for(j=i+1;j{if(v[j]if(k!
=i)//交换第i和第k个位置记录
{temp=v[i];v[i]=v[k];v[k]=temp;
}
}
}
voidmain()
{
inta[10],i,n;
printf("inputnumberofdata\n");
scanf("%d",&n);
for(i=0;i{
printf("input%ddata\n",i+1);
scanf("%d",&a[i]);
}
SelectSort(a,n);
for(i=0;iprintf("%5d",a[i]);
printf("\n");
system("pause");
}
2(编程题2(B_4_2.C)
编程要求:
请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括
B_4_2.C文件和B_4_2.exe文件)保存到“\实验结果”文件夹中。
111n,1,,,,,11,,n23功能说明:
键盘输入正整数n,计算并输出的值,输出结l
则输出:
0.645635
答案:
#include<.stdio.h>Mian()
Floats;
For(i=1;i<=n,i++){If(i/2==0)
S+=-1.0/n;
Else
S+=1.0/n
}
Printf("%1f",s);}
#include#includevoidmain()
{
inti=1,n;
doublef=1.0,s=0;
printf("inputitemnumber:
\n");
scanf("%d",&n);
do
{
s+=f/i++;//或:
s=s+f/i;i++;
f=-f;
}while(i<=n);
printf("1-1/2+1/3-...+1/%d=%lf\n",n,s);
system("pause");
}