C语言程序设计上机实习答案.docx
- 文档编号:7518062
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:50
- 大小:26.53KB
C语言程序设计上机实习答案.docx
《C语言程序设计上机实习答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计上机实习答案.docx(50页珍藏版)》请在冰豆网上搜索。
C语言程序设计上机实习答案
实验一
1.
标题:
1、编写程序,在屏幕输出HappyNewYear!
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编写程序,在屏幕输出“HappyNewYear!
”
输入:
无
输出:
HappyNewYear!
输入样例:
无
输出样例:
HappyNewYear!
提示:
1、可参考P35,例2.1完成;
2、输出语句用printf("HappyNewYear!
\n");实现,注意\n的使用;
3、代码中不能出现system("PAUSE");及getch();等语句。
#include
#include
intmain()
{
printf("HappyNewYear!
\n");
return0;
}
2.
标题:
2、比较两个整数的大小
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
输入两个整数,比较它们的大小并输出其中最大的一个整数。
输入:
两个整数。
输出:
最大值
输入样例:
59
输出样例:
9
提示:
1、需要两个整型变量来接收数据的输入,可用inta,b;语句实现;
2、用scanf("%d%d",&a,&b);语句接收用户输入的数据;
3、用intMax(intx,inty);自定义函数实现两个整数的比较,返回最大值
4、用printf("%d\n",c);语句输出结果。
5、可参考P36,例2.2实现。
#include
#include
intMax(int,int);
intmain()
{
inta,b;
int*P1,*P2;
P1=&a;
P2=&b;
scanf("%d%d",P1,P2);
printf("%d\n",Max(a,b));
return0;
}
intMax(intx,inty)
{
returnx>y?
x:
y;
}
3.
标题:
3、公式计算
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
请编程序完成y=x2+2x+1的变换,并输出x从0变化到10的变换结果。
输入:
无
输出:
输出x从0变化到10的变换结果
输入样例:
无
输出样例:
x y
0 1
1 4
2 9
3 16
4 25
5 36
6 49
7 64
8 81
9 100
10 121
提示:
1.可定义函数:
intConvert(intx)实现相应计算
/*下面的为用户自定义函数,完成数据转换功能*/
intConvert(intx)
{
intz; /*变量定义语句。
定义整型变量z*/
z=x*x+2*x+1; /*算术表达式,注意x2需要写成x*x,2x需要写为2*x等*/
return(z); /*函数返回语句,返回z的值即转换结果*/
}
2.输出语句所使用的格式符请设定为:
"%d\t%d\n";
#include
#include
intConvert(intx);
intmain()
{
intx;
inty;
inttop=0;
intbottom=10;
intstep=1;
x=top;
printf("x\ty\n");
while(x<=bottom)
{
y=Convert(x);
printf("%d\t%d\n",x,y);
x=x+step;
}
return0;
}
intConvert(intx)
{
intz;
z=x*x+2*x+1;
return(z);
}
4.
标题:
4、简单加密
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
假设将26个小写字母首尾链接起来,做成一个圈(a连接在z的后面),请编制程序将给定字符串的每一个字符沿顺时针方向移动10个字符组成一个新的字符串,并输出该字符串。
输入:
给定的长度小于80的字符串.
输出:
每一个字符沿顺时针方向移动10个字符组成一个新的字符串
输入样例:
ilikecprogramminglanguage!
输出样例:
svsuomzbyqbkwwsxqvkxqekqo!
提示:
可用如下函数实现字符变换:
voidStrShift(char*p)
{
//“*p+10”表示移动10个字符
//a的ASCII码值十进制为97,
}
#include
#include
intmain()
{
chara[80];
intch;
ch=0;
while((a[ch]=getchar())!
=EOF)
{
if(a[ch]>='a'&&a[ch]<='p')
{
a[ch]+=10;
}
elseif(a[ch]>='q'&&a[ch]<='z')
{
a[ch]-=16;
}
printf("%c",a[ch]);
}
return0;
}
5.
标题:
5、字符统计
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序,计算从键盘输入的空格键,Tab键,换行键的次数。
输入:
从键盘输入字符。
输出:
输入的空格键,Tab键,换行键的次数。
输入样例:
Helloworld!
clanguage!
输出样例:
211
提示:
1、可用转义字符或ASCII值进行判断;
2、输出格式字符串用“%d%d%d\n”;
3、用EOF(ASCII码为-1,键盘对应输入为Ctrl+Z)终止输入。
#include
#include
#defineWORD1
#defineNON_WORD0
intmain()
{
intch;
intiCountSP;/*定义变量iCountSP,用于存放输入的空格键数*/
intiCountTab;/*定义变量iCountTab,用于存放输入的Tab键数*/
intiCountLF;/*定义变量iCountLF,用于存放输入的换行键数*/
iCountSP=0;
iCountLF=0;
iCountTab=0;
while((ch=getchar())!
=EOF)
{
if(ch=='')
{
++iCountSP;
}
elseif(ch=='\t')
{
++iCountTab;
}
elseif(ch=='\n')
{
++iCountLF;
}
}
printf("%d%d%d\n",iCountSP,iCountTab,iCountLF);
return0;
}
6.
标题:
6、字符串复制
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序将键盘输入的字符存入数组a[80]中,并将该数组中的所有字符复制到数组b[80]中,同时去掉所有的空格。
输入:
键盘输入的字符串。
输出:
去掉所有的空格后,复制到的字符串。
输入样例:
Helloworld!
输出样例:
Helloworld!
提示:
1、字符串结束符为“\0”。
#include
#include
intmain()
{
intch;
ch=getchar();
while(ch!
=EOF)
{
if(ch!
='')
{
putchar(ch);
}
ch=getchar();
}
return0;
}
7.
标题:
7、字符串的反转
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制函数voidReverse(charch[]),用于完成字符串的反转。
输入:
任意一个字符串(长度小于100)。
输出:
反转后的字符串。
输入样例:
Hello
输出样例:
olleH
#include
#include
voidReverse(charch[]);
charch[100];
charp;
inta;
intmain()
{
while((p=getchar())!
='\n')
{
ch[a]=p;
a++;
}
Reverse(ch);
return0;
}
voidReverse(charch[])
{
inti;
if(a<100)
{
for(i=a-1;i>=0;i--)
{
printf("%c",ch[i]);
}
}
printf("\n");
}
8.
标题:
8、求阶乘
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制函数Factorial(unsignedintn),用于计算n!
。
其中n≤13。
输入:
整数n。
输出:
n!
输入样例:
5
输出样例:
120
提示:
考虑n>13时的结果。
#include
#include
unsignedintFactorial(unsignedintn);
intmain()
{
unsignedintn;
scanf("%u",&n);
printf("%u\n",Factorial(n));
return0;
}
unsignedintFactorial(unsignedintn)
{
unsignedintresult,i;
result=1;
for(i=1;i<=n;++i)
{
result=result*i;
}
returnresult;
}
实验二
1.
标题:
1、二进制数操作
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序计算一个unsignedlong型整数的二进制表示中1的个数。
要求用函数实现。
函数名为intBitCount(longl)
输入:
一个unsignedlong型整数。
输出:
一个unsignedlong型整数的二进制表示中1的个数。
输入样例:
45L
输出样例:
4
#include
#include
intBitCount(longl);
intmain()
{
unsignedinta;
scanf("%u",&a);
printf("%d\n",BitCount(a));
return0;
}
intBitCount(longl)
{
inti=0;
inta=0;
while(l!
=0)
{
a=l%2;
l/=2;
if(a==1)i++;
}
returni;
}
2.
标题:
2、变量交换
(一)
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序实现两个整型变量的互换。
输入:
两个整型量。
输出:
交换后的两个整型量。
输入样例:
59
输出样例:
95
提示:
可以利用第三个变量作为临时变量实现交换。
#include
#include
intmain()
{
inta,b,temp;
int*p1,*p2;
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
temp=*p1;
*p1=*p2;
*p2=temp;
printf("%d%d\n",a,b);
return0;
}
3.
标题:
3、变量交换
(二)
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序实现两个char型变量的互换。
输入:
两个char型变量。
输出:
交换后的两个char型变量。
输入样例:
ab
输出样例:
ba
提示:
要求不使用第三个变量作为临时变量,可利用异或(^)运算或用如下算法实现:
a=a-b;
b=a+b;
a=b-a;
#include
#include
intmain()
{
chara;
charb;
scanf("%c%c",&a,&b);
a=a-b;
b=a+b;
a=b-a;
printf("%c%c\n",a,b);
return0;
}
4.
标题:
4、数据类型
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编写一个程序计算你所使用的编译系统和计算机系统的char,int,long,float,double类型所占用的字节数,并分别输出显示。
输入:
无
输出:
char,int,long,float,double类型所占用的字节数。
输入样例:
无
输出样例:
1
4
4
4
8
提示:
用sizeof运算符求字节数,比如sizeof(char)就是char型变量在内存中所占数据的字节数。
#include
#include
intmain()
{
intc,i,l,f,d;
c=sizeof(char);
i=sizeof(int);
l=sizeof(long);
f=sizeof(float);
d=sizeof(double);
printf("%d\n%d\n%d\n%d\n%d\n",c,i,l,f,d);
return0;
}
5.
标题:
5、进制转换
(一)
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序,将十六进制数转换为十进制数。
如转换不成功,则输出0。
输入:
一个十六进制数。
输出:
对应的十进制整数。
输入样例:
0x4E
输出样例:
78
提示:
提示:
十六进制以0x或0X开头,十六进制允许的符号有0~9,A~F,a~f。
#include
#include
intmain()
{
inta;
scanf("%x",&a);
printf("%u\n",a);
return0;
}
6.
标题:
6、菜单程序设计
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制一个菜单程序Menu(),利用switch语句完成菜单的选择,当输入'A'时,输出“FunA”,当输入'B'时,输出“FunB”,当输入C时,输出“FunC”,当输入其他字符时返回-1,输出“-1”,结束程序。
输入:
菜单选择字符。
输出:
相应函数的输出内容。
输入样例:
A
输出样例:
FunA
#include
#include
intMenu();
intmain()
{
intc;
while((c=getchar())!
=EOF)
{
switch(c)
{
case'A':
printf("FunA\n");
break;
case'B':
printf("FunB\n");
break;
case'C':
printf("FunC\n");
break;
default:
printf("-1\n");
break;
}
return0;
}
}
7.
标题:
7、字符串转化为整数程序
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序实现将一个数字字符串转化为整数。
输入:
一个数字字符串。
输出:
对应整数。
输入样例:
1234
输出样例:
1234
提示:
要求用函数intAtoi(charstr[])实现。
#include
#include
intAtoi(charstr[]);
intmain()
{
charstr[80];
inti=0;
for(i=0;i<80;i++)
{
str[i]=0;
}
scanf("%d",&i);
printf("%d\n",i);
return0;
}
8.
标题:
8、进制转换
(二)
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制程序实现voidItob(intn,chars[],intb),将整数n转换为b进制的表示形式,并存入字符数组s中。
比如:
Itob(n,s,16),s就是n的十六进制编码字符串。
输入:
整数n和要转换为进制。
输出:
b进制编码字符串。
输入样例:
4516
输出样例:
2D
#include
#include
voidReverse(intn,chars[],intb);
charch[100];
intmain()
{
chars[100];
intn,b;
scanf("%d%d",&n,&b);
Reverse(n,s,b);
printf("%s\n",ch);
return0;
}
voidReverse(intn,chars[],intb)
{
inti;
intj=0;
intk=0;
for(i=0;n>0;i++)
{
j=n%b;
if(j>9)
{
s[i]=j+'A'-10;
}
else
{
s[i]=j+'0';
}
n=n/b;
}
i=i-1;
while(i>=0)
{
ch[k]=s[i];
k++;
i--;
}
ch[k]='\0';
}
试验三
标题:
1、查找字符串中的字符
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
编制函数intStrchr(chars[],charch),用于返回字符串s中从左边开始第一次出现字符ch的位置,如果字符串s中没有字符ch则返回-1。
序号从0开始计.
输入:
一个字符串和一个字符。
输出:
字符串s中从左边开始第一次出现字符ch的位置,如果字符串s中没有字符ch则返回-1。
输入样例:
HelloClanguage.
C
输出样例:
6
#include
#include
#include
intStrchr(chars[],charch);
intmain()
{
chars[100];
inti;
charch;
gets(s);
scanf("%c",&ch);
i=Strchr(s,ch);
printf("%d\n",i);
return0;
}
intStrchr(chars[],charch)
{
intj,k=0;
inta=0;
j=strlen(s);
while(a<=j)
{
if(s[a]==ch)
{
k++;
returna;
}
a++;
}
if(k==0)
{
return-1;
}
return0;
}
2.
标题:
2、字符统计
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
设计一个函数,统计任意一串字符中数字字符的个数,并在主函数中调用此函数。
输入:
任意一串字符
输出:
字符串中数字字符的个数
输入样例:
abs1234ajbkc
输出样例:
4
#include
#include
intReverse(charch[]);
intmain()
{
charch[100];
inti;
scanf("%s",ch);
i=Reverse(ch);
printf("%d\n",i);
return0;
}
intReverse(charch[])
{
inta,b=0;
for(a=0;ch[a]!
='\0';a++)
{
if(ch[a]>='0'&&ch[a]<='9')
{
++b;
}
}
returnb;
}
3.
标题:
3、整数排序
时 限:
1000 ms
内存限制:
10000 K
总时限:
3000 ms
描述:
设计一个函数,对任意n个整数排序(从大到小),并在主函数中输入数据个数n和n个整数,调用此函数实现排序。
输入:
第一行:
所要输入的整数个数
第二行:
依次输入n个整数,中间用空格符隔开
输出:
依次输出排序后的n个整数,中间用一个空格符隔开
输入样例:
10<----数据个数
0123456789
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 上机 实习 答案