c语言练习题Word格式文档下载.docx
《c语言练习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言练习题Word格式文档下载.docx(45页珍藏版)》请在冰点文库上搜索。
m=5.0+2.0*(x-3.0);
if(m<
=40)
%6.2f\n"
else
停车费用40元\n"
2计算细菌数量
一种细菌的繁殖速度是每天成倍增长。
例如:
第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。
现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。
3计算邮资计算邮资:
用户输入:
邮件的重量,以及是否加快
计算规则:
重量在1克以内(包括1克),基本费0.8元。
超过1克的部分,按照0.5元/克的比例加收超重费。
如果用户选择加快,多收2元。
iostream>
usingnamespacestd;
{doublex,sum;
charexp;
while(cin>
>
x>
exp)
{
=1&
&
exp=='
n'
)
sum=0.8;
y'
sum=2.8;
1&
)
sum=0.8+(x-1)*0.5;
sum=0.8+(x-1)*0.5+2;
cout<
<
sum<
endl;
}
}
#include<
usingnamespacestd;
intmain()
intx,y;
//变量定义,此处假设需要定义两个变量,均定义为整型
while(cin>
y)
你对一组输入的一次处理过程代码
C:
#include<
while(scanf(%x%y"
x,&
y)!
=EOF)
注意:
考虑以下几点,然后直接套用模版就行了:
i)变量定义。
ii)有几个变量需要输入,在while中cin相应的变量。
iii)开始考虑主程序代码,在“{}”中写一次处理过程的代码即可。
4学分绩点计算
北京大学对本科生的成绩施行平均学分绩点制(GPA)。
既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
公式如下:
实际成绩绩点
90——1004.0
85——893.7
82——843.3
78——813.0
75——772.7
72——742.3
68——712.0
64——671.5
60——631.0
60以下0
1.一门课程的学分绩点=该课绩点*该课学分
2.总评绩点=所有学科绩点之和/所有课程学分之和
现要求你编写程序求出某人A的总评绩点(GPA)
。
intstr1[10],str2[10],n,i;
//定义两个数组分别表示每门课的学分,所得绩点
doubleh,GPA,sum=0,s=0;
//定义双精度变量h表示学分,GPA总评绩点,sum表示所有学科绩点之和,s表示所有课程学分之和。
%d"
n);
for(i=0;
i<
n;
i++)
scanf("
str1[i]);
s=s+str1[i];
str2[i]);
if(str2[i]<
=100&
str2[i]>
=90)
h=4.0;
elseif(str2[i]<
=89&
=85)
h=3.7;
=84&
=82)
h=3.3;
=81&
=78)
h=3.0;
=77&
=75)
h=2.7;
=74&
=72)
h=2.3;
=71&
=68)
h=2.0;
elseif(str2[i]<
=67&
=64)
h=1.5;
=63&
=60)
h=1.0;
h=0;
sum=sum+h*str1[i];
GPA=sum/s;
%.2f\n"
GPA);
5一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物
inta,min,max,s;
s);
while(s>
=1)
a);
if(a%2==1)
{
min=0;
max=0;
}
else
if(a%4==0)
{
min=a/4;
max=a/2;
}
min=(a-2)/4+1;
%d%d\n"
min,max);
s--;
5
通过指针变量访问整型变量
inta=100,b=10;
//定义整型变量a,b并初始化
int*pointer_1,*pointer_2;
//定义指向整型数据的指针变量pointer_1,pointer_2;
pointer_1=&
a;
//把变量a的地址赋给指针变量pointer_1
pointer_2=&
b;
//把变量b的地址赋给指针变量pointer_2
a=%d,b=%d\n"
a,b);
//输出变量a和b的值
*pointer_1=%d,*pointer_2=%d\n"
*pointer_1,*pointer_2);
//输出变量a和b的值
return0;
6输入a和b两个整数,按先大后小的顺序输出a和b
int*pointer_1,*pointer_2,*pointer_3,a,b;
//*pointer_1,*pointer_2的类型是指向整型的指针变量
pleaseentertwointegernumbers:
%d,%d"
a,&
b);
//输入两个整数
pointer_1=&
//使p1指向变量a
pointer_2=&
//使p2指向变量b
if(a<
b)//如果a<
b
{pointer_3=pointer_1;
//将p1,p2的值互换
pointer_1=pointer_2;
pointer_2=pointer_3;
//输出a,b
max=%d,min=%d\n"
//输出p1,p2所指向变量的值
7,函数嵌套调用
输入3个整数,要求由大到小输出,用函数调用。
voidexchange(int*q1,int*q2,int*q3);
inta,b,c,*p1,*p2,*p3;
pleaseenterthreenumbers:
%d,%d,%d"
b,&
c);
p1=&
p2=&
p3=&
c;
exchange(p1,p2,p3);
theolderis\n:
"
voidexchange(int*q1,int*q2,int*q3)
voidswap(int*pt1,int*pt2);
if(*q1<
*q2)swap(q1,q2);
*q3)swap(q1,q3);
if(*q2<
*q3)swap(q2,q3);
voidswap(int*pt1,int*pt2)
{inttemp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
8,改写大小写,要求从键盘输入大写字母,从显示器上输出小写字母
charc1,c2;
c1=getchar();
c2=c1+32;
putchar(c2);
putchar('
\n'
9输入三个数,a,b,c要求按由小到大顺序输出。
floata,b,c,t;
pleaseenterthreenumbers:
%f,%f,%f"
b)
{t=a;
按由小到大必须是‘a>
b’形式交换位置使小的在前,若按由大到小则是‘a<
b’形式
a=b;
b=t;
c)
a=c;
c=t;
if(b<
{t=b;
b=c;
%5.2f,%5.2f,%5.2f"
a,b,c);
return
10给定一个正整数k(1<
k<
10),求1到k的立方和m。
即m=1+2*2*2+…+k*k*k。
13#include<
intk,m=0,i=1;
k);
if(1<
k&
10)//这里进行修改,注意你的写法在c语言里是不成立的
while(i<
=k)
m=m+i*i*i;
i+=1;
else
error"
用一个字符串表示一段基因,例如:
“CTATGGGTTT”。
两段基因的相似度定义为它们所包含的最大公共子串的长度。
“CCTTGG”和“TGGGC”的最大公共子串为“TGG”,它的长度为3,则我们称“CCTTGG”和“TGGGC”的相似度为3。
现给定两段基因,要求计算它们的相似度。
1
11晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出OK;
如果不能则输出NO
stdlib.h>
voidmain()
intw,c,y,m,d;
//c世纪y年w星期d日m月;
%d%d%d"
y,&
m,&
d);
c=y/100;
y=y-c*100;
//分离世纪与年;
if(m==1)
m=13;
if(y==00)
y=99;
c--;
y--;
if(m==2)
m=14;
if(y==0)
w=y+y/4+c/4-2*c+26*(m+1)/10+d-1;
//蔡勒公式
switch(w%7)
case1:
case3:
case5:
NO\n"
break;
case2:
case4:
case6:
case0:
YES\n"
12求一个长度不大于100的字符串的长度,要求不使用strlen方法,并且使用到字符指针。
原文地址:
1023--求字符串长度作者:
小礼子地盘
求一个长度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的#include<
intlength(char*p);
intlen;
charstr[100];
gets(str);
len=length(str);
%d\n"
len);
intlength(char*p)
intn;
n=0;
while(*p!
='
\0'
n++;
p++;
return(n);
}函数实现字符串长度的计算。
函数定义为:
intGetStrLen(char*pStr)
Input
一行字符串,使用(gets(str)方法读取此行字符串)。
Output
输出只有一行,只包含一个整数,表示字符串的长度。
具体程序:
main(){chara[101];
intsum=0,i;
gets(a);
for(i=0;
a[i]!
'
;
i++)
sum++;
%dn"
sum);
描述
求前n(1<
n<
12)个整数的阶乘的和(即求1!
+2!
+3!
+...+n!
)。
#include<
intmain()
{
inti,n,r,temp;
r=0;
temp=1;
for(i=1;
=n;
i++)
{
temp=temp*i;
r+=temp;
}
r);
return0;
有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,....求这个分数序列的前n项之和
题目:
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
main()
{inti,x,y,a;
floatsum=0;
x=2;
y=1;
for(i=1;
20;
sum+=(float)(x)/y;
//printf("
%d/%d\n"
x,y);
a=x;
x=x+y;
y=a;
%7.5f\n"
12在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;
停车锁车的时间为23秒;
步行每秒行走1.2米,骑车每秒行走3.0米.请判断走不同的距离去办事,是骑车快还是走路快.
intn,i,s;
doublet1,t2;
while(n>
t1=s/1.2;
t2=s/3.0+50;
if(t1>
t2)
Bike\n"
if(t1<
Walk\n"
if(t1==t2)
All\n"
n--;
voidmain()
{intk,j;
floata[1]={0},t1[10],t2[10];
for(j=1;
j<
=k;
j++)
{scanf("
%f"
a[0]);
t1[j]=50+a[0]/3;
t2[j]=a[0]/1.2;
for(j=1;
{if(t1[j]<
t2[j])
elseif(t2[j]<
t1[j])
elseprintf("
13一张CT扫描的灰度图像可以用一个N*N(0<
N<
100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。
我们假设给定的图像中有且只有一个肿瘤。
在图上监测肿瘤的方法如下:
如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。
我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。
任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。
肿瘤的边界点的个数称为肿瘤的周长。
现在给定一个图像,要求计算其中的肿瘤的面积和周长
inta[100][100],i,j,n,mj=0,zc=0;
=n-1;
i=i+1)
for(j=0;
j=j+1)
scanf("
a[i][j]);
for(i=0;
for(j=0;
if(a[i][j]<
=50)
mj=mj+1;
if((i==0||j==0||i==n-1||j==n-1)&
a[i][j]<
zc=zc+1;
else
{
if(((a[i][j+1]>
50)||(a[i][j-1]>
50)||(a[i+1][j]>
50)||(a[i-1][j]>
50))&
(a[i][j]<
=50))
zc=zc+1;
}
mj,zc);
14给定一个正整数k(1<
inti,k,sum=0;
sum=sum+i*i*i;
intn,i,t,r;
r=0;
t=1;
t=t*i;
r=r+t;
15有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,....求这个分数序列的前n项之和。
inti,n;
doublesum=0,a=1,b=2,t;
sum=sum+b/a;
t=b;
b=a+b;
a=t;
%.4lf\n"
16一个数如果恰好等于它的因子之和,这个数就成为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序打印出1000之内(包括1000)所有的完数,并按如下格式输出其所有因子:
inti,j,sum=0;
=1000;
for(j=1;
=i/2;
j++)
if(i%j==0)
sum=sum+j;
if(sum==i)
printf("
%ditsfactorsare"
i);
for(j=1;
i/2;
if(i%j==0)
printf("
%d,"
j);
if(i%(i/2)==0)
i/2);
printf("
\n"
sum=0;
17将一个数组中的值按逆序重新存放。
例如,原来的顺序为8,6,5,4,1。
要求改为1,4,5,6,8。
inta[100],i,b[100],