c语言练习题.docx
《c语言练习题.docx》由会员分享,可在线阅读,更多相关《c语言练习题.docx(8页珍藏版)》请在冰点文库上搜索。
c语言练习题
c语言练习题
1停车场收费问题 一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:
如果输入为小时,则费用为5+()*2=元。
最高收费为40元。
假设任何车辆的停车时间都不超过24小时。
编写程序,计算每辆车的停车费。
(注意输出结果小数点后保留两位)输入 #include intmain(){ doublem,x; printf(\输入停车时间x:
\scanf(\if(x){m=+*();if(m 2.#include intmain() {doublex,m; printf(\输入停车时间(x):
\scanf(\if(x printf(\停车费用5元\\n\ if(x>3) m=+*(); if(m printf(\ else printf(\停车费用40元\\n\}} 2计算细菌数量 一种细菌的繁殖速度是每天成倍增长。
例如:
第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。
现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。
3计算邮资计算邮资:
用户输入:
邮件的重量,以及是否加快计算规则:
重量在1克以内(包括1克),基本费元。
超过1克的部分,按照元/克的比例加收超重费。
如果用户选择加快,多收2元。
#include?
?
usingnamespacestd;?
?
intmain() ?
?
{?
?
doublex,sum;?
?
charexp;?
?
while(cin>>x>>exp)?
?
{?
?
if(x1&&exp==‘n’) ?
?
sum=+(x-1)*;?
?
if(x>1&&exp==‘y’)?
?
sum=+(x-1)*+2;?
?
cout return0;?
?
}?
?
#includeusingnamespacestd; intmain() { intx,y;//变量定义,此处假设需要定义两个变量,均定义为整型 while(cin>>x>>y) { 你对一组输入的一次处理过程代码 } return0; } C:
#include usingnamespacestd; intmain(){ intx,y;//变量定义,此处假设需要定义两个变量,均定义为整型 while(scanf(%x%y\ { 你对一组输入的一次处理过程代码 } return0; } 注意:
考虑以下几点,然后直接套用模版就行了:
i)变量定义。
ii)有几个变量需要输入,在while中cin相应的变量。
iii) 开始考虑主程序代码,在“{}”中写一次处理过程的代码即可。
4学分绩点计算 北京大学对本科生的成绩施行平均学分绩点制。
既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
公式如下:
实际成绩绩点90——10085——8982——8478——8175——7772——7468——7164——6760——6360以下0 1.一门课程的学分绩点=该课绩点*该课学分 2.总评绩点=所有学科绩点之和/所有课程学分之和现要求你编写程序求出某人A的总评绩点。
#include intmain(){intstr1[10],str2[10],n,i;//定义两个数组分别表示每门课的学分,所得绩点 doubleh,GPA,sum=0,s=0;//定义双精度变量h表示学分,GPA总评绩点,sum表示所有学科绩点之和,s表示所有课程学分之和。
scanf(\for(i=0;i=90) h=; elseif(str2[i]=85) h=; elseif(str2[i]=82) h=; elseif(str2[i]=78) h=; elseif(str2[i]=75) h=; elseif(str2[i]=72) h=; elseif(str2[i]=68) h=; elseif(str2[i]=64) h=; elseif(str2[i]=60) h=; else h=0;sum=sum+h*str1[i]; GPA=sum/s;}printf(\return0; } 5一个笼子里面关了鸡和兔子。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物 #includeintmain(){inta,min,max,s;scanf(\while(s>=1){ scanf(\if(a%2==1){ min=0; max=0;}else if(a%4==0) { min=a/4; max=a/2; } else { min=(a-2)/4+1; max=a/2; } printf(\s--;}return0;} 5 通过指针变量访问整型变量#includeintmain(){ inta=100,b=10; //定义整型变量a,b并初始化 int*pointer_1,*pointer_2; //定义指向整型数据的指针变量pointer_1,pointer_2; pointer_1=&a; //把变量a的地址赋给指针变量pointer_1pointer_2=&b; //把变量b的地址赋给指针变量
pointer_2 printf(\ //输出变量a和b的值 printf(\输出变量a和b的值return0;} 6输入a和b两个整数,按先大后小的顺序输出a和b#includeintmain(){ int*pointer_1,*pointer_2,*pointer_3,a,b;//*pointer_1,*pointer_2的类型是指向整型的指针变量 printf(\scanf(\输入两个整数pointer_1=&a;//使p1指向变量apointer_2=&b;//使p2指向变量bif(a {pointer_3=pointer_1;//将p1,p2的值互换pointer_1=pointer_2;pointer_2=pointer_3;} printf(\输出a,b printf(\输出p1,p2所指向变量的值 return0;} 7,函数嵌套调用 输入3个整数,要求大到小输出,用函数调用。
#includeintmain(){ voidexchange(int*q1,int*q2,int*q3);inta,b,c,*p1,*p2,*p3; printf(\scanf(\p1=&a;p2=&b;p3=&c; exchange(p1,p2,p3);printf(\return0;} voidexchange(int*q1,int*q2,int*q3){ voidswap(int*pt1,int*pt2);if(*q1 voidswap(int*pt1,int*pt2){inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;} 8,改写大小写,要求从键盘输入大写字母,从显示器上输出小写字母#includeintmain(){ charc1,c2;c1=getchar();c2=c1+32;putchar(c2);putchar(‘\\n’);return0;} 9输入三个数,a,b,c要求按小到大顺序输出。
#includeintmain(){ floata,b,c,t; printf(\scanf(\if(ab’形式交换位置使小的在前,若按 大到小则是‘a if(a if(b } printf(\return 10给定一个正整数k,求1到k的立方和m。
即m=1+2*2*2+…+k*k*k。
输入 13#includeintmain(){ intk,m=0,i=1; scanf(\ if(1 while(i m=m+i*i*i;i+=1;} printf(\} else printf(\return0;} 用一个字符串表示一段基因,例如:
“CTATGGGTTT”。
两段基因的相似度定义为它们所包含的最大公共子串的长度。
例如:
“CCTTGG”和“TGGGC”的最大公共子串为“TGG”,它的长度为3,则我们称“CCTTGG”和“TGGGC”的相似度为3。
现给定两段基因,要求计算它们的相似度。
1 11晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出OK;如果不能则输出NO #include#includevoidmain(){ intw,c,y,m,d;//c世纪y年w星期d日m月;scanf(\ 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){ y=99; c--;} y--;} w=y+y/4+c/4-2*c+26*(m+1)/10+d-1;//蔡勒公式switch(w%7){ case1:
case3:
case5:
printf(\ case2:
case4:
case6:
case0:
printf(\}} 12求一个长度不大于100的字符串的长度,要求不使用strlen方法,并且使用到字符指针。
原文地址:
1023--求字符串长度作者:
小礼子地盘 求一个长度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的#includeintmain(){intlength(char*p);intlen;charstr[100];gets(str);len=length(str);printf(\return0;} intlength(char*p){intn;n=0;while(*p!
=‘\\0’){n++;p++;}return(n);}函数实现字符串长度的计算。
函数定义为:
intGetStrLen(char*pStr)Input 一行字符串,使用。
Output 输出只有一行,只包含一个整数,表示字符串的长度。
具体程序:
#includemain(){chara[101];intsum=0,i;gets(a);for(i=0;a[i]!
=‘‘;i++)sum++; printf(\}描述 求前n个整数的阶乘的和。
w++;if(s[k]==‘i’) r++;if(s[k]==‘o’) t++;if(s[k]==‘u’) y++;}printf(\return0;} 19把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。
#includeintmain(){inti;chars[80];gets(s);for(i=0;s[i]!
=‘\\0’;i++){if(s[i]>=65&&s[i]=97&&s[i] 20在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。
#includevoidmain(){intm,n,a[100][100],i,j;scanf(\for(i=0;i }for(i=0;ia[i][j+1])||(a[i][j]!
=a[i][j-1]&&a[i][j+1]==‘\\0’)||(a[i][j]!
=a[i][j+1]&&j==0)) printf(\printf(\} } 21给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:
数对中一个数是另一个数的两倍。
#includevoidmain(){ intt,i,a[1000][16],j,row,col[1000],k;for(i=0;i scanf(\if(a[i][0]==-1) break; for(j=1;j scanf(\if(a[i][j]==0) { col[i]=j; break; }}} row=i; for(i=0;i t++; }printf(\}} 22陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。
苹果成熟的时候,陶陶就会跑去摘苹果。
陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。
假设她碰到苹果,苹果就会掉下来。
#includeintmain(){ints[10],i,h,j=0,g;for(i=0;i=s[i]) j++;printf(\return0;} 23描述 一张CT扫描的灰度图像可以用一个N*N的矩阵描述,矩阵上的每个点对应一个灰度值,其取值范围是0-255。
我们假设给定的图像中有且只有一个肿瘤。
在图上监测肿瘤的方法如下:
如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。
我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。
任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。
肿瘤的边界点的个数称为肿瘤的周长。
现在给定一个图像,要求计算其中的肿瘤的面积和周长。
#includeintmain(){inta[100][100],i,j,n,mj=0,zc=0;scanf(\for(i=0;i { for(j=0;j50)||(a[i][j-1]>50)||(a[i+1][j]>50)||(a[i-1][j]>50))&&(a[i][j] 24a的立方=b的立方+c的立方+d的立方为完美立方等式。
例如12的立方=6的立方+8的立方+10的立方。
编写一个程序,对任给的正整数N(N≤100),寻找所有的四元组(a,b,c,d),使得a的立方=b的立方+c的立方+d的立方,其中a,b,c,d大于1,小于等于N。
#includeintmain(){inta,b,c,d,k;scanf(\for(a=1;a 25一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.现求所有小于等于n(n #includeintmain() {inti,n,t=0;scanf(\for(i=1;i 26给定一组整数,要求利用数组把这组数保存起来,再利用指针实现对数组中的数循环移动。
假定共有n个整数,则要使前面各数顺序向后移m个位置,并使最后m各数变为最前面的m各数。
注意,不要用先输出后m个数,再输出前n-m个数的方法实现,也不要用两个数组的方式实现。
要求只用一个数组的方式实现,一定要保证在输出结果时,输出的顺序和数组中数的顺序是一致的。
#includeintmain(){voidmove(int[20],int,int);intnumber[20],n,m,i;scanf(\for(i=0;i voidmove(intarray[20],intn,intm){int*p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p--)*p=*(p-1);*array=array_end;m--;if(m>0)move(array,n,m);}
27对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自整除数.例如21,21%(2+1)==0,所以21是自整除数.现求出从10到n(n #includeintmain(){intn,i,m;scanf(\for(i=10;i 28利用公式e=1+1/1!
+1/2!
+1/3!
+...+1/n!
求e#includeintmain(){intn;doublei,k=,sum=,e;scanf(\for(i=;i 29一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。
问大象至少要喝多少桶水才会解渴。
(设PAI=) #include#definePAIintmain(){intn,h,r;doubleV1,V2;scanf(\ V1=20000;V2=PAI*h*r*r;if(V1>V2) n=V1/V2+1;elsen=1;printf(\return0;} 30晶晶赴约会#includeintmain(){intn;scanf(\if((n==1)||(n==3)||(n==5))printf(\elseprintf(\return0;} 31班上有学生若干名,给出每名学生的年龄,求班上所有学生的平均年龄,保留到小数点后两位。
输入 #includeintmain(){inti,n,k;doubleaverage,sum=0;scanf(\for(i=0;i 32给定一个正整数a,以及另外的5个正整数,问题是:
这5个整数中,小于a的整数的和是多少?
}#includeintmain(){inta[6],i,sum=0;for(i=0;i }for(i=1;ia[i]) sum=sum+a[i];}printf(\return0;} 33输入一个非负整数n,求从0到n之间所有能被3除尽的数之和。
#includeintmain(){intn,sum,i;while(scanf(\{sum=0;for(i=1;i } 34输入一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除;2、能被其中两个数整除3、能被其中一个数整除 4、不能被任何数整除;(输出小写字符’n’,不包括单引号)输入 #includeintmain(){intm;while(scanf(\{if(m%3==0&&m%5==0&&m%7==0) printf(\ elseif(m%3==0&&m%5==0&&m%7!
=0) printf(\ elseif(m%3==0&&m%5!
=0&&m%7==0) printf(\ elseif(m%3!
=0&&m%5==0&&m%7==0) printf(\ elseif(m%3==0&&m%5!
=0&&m%7!
=0) printf(\ elseif(m%3!
=0&&m%5==0&&m%7!
=0) printf(\ elseif(m%3!
=0&&m%5!
=0&&m%7==0) printf(\else printf(\}return0;} 35PROBLEMI 输入整数a和b,如果a能被b整除,就输出算式的商,否则输出整数商和余数,如果b=0,输出error#includeintmain(){inta,b;while(scanf(\{if(b==0) printf(\else if(a%b==0) printf(\else printf(\}return0;} 36输入两个数n和m,求n和m的最大公约数和最小公倍数。
输入 #includeintmain(){intk,p,r,n,m,temp;scanf(\while(k>=1){scanf(\if(n {temp=n; n=m;m=temp;}p=m*n;while(m!
=0){ r=n%m; n=m; m=r;} printf(\k--;}return0;} 37根据输入的运算符对输入的整数进行简单的整数运算。
运算符只会是加+、减-、乘*、除/、求余%、阶乘!
六个运算符之一。
输出运算的结果,如果出现除数为零,则输出“error”,如果求余运算的第二个运算数为0,也输出“error”。
#includeintmain(){intk,p,r,n,m,temp;scanf(\while(k>=1){scanf(\if(n printf(\输入3个整#includeintmain(){
} inta,b,c,t; scanf(\if(a if(a if(b printf(\return0; 38求Sn=a+aa+aaa+…+aa…a的值,其中a是一个1~9的数字,例如:
2+22+222+2222+22222 #includeintmain(){inta,n,s,i,Sn=0,tn=0;scanf(\for(i=1;i 自动饮料机 #includeintmain() { inta; printf(\scanf(\switch(a){ case1:
printf(\橙汁\\n\case2:
printf(\可乐\\n\case3:
printf(\奶茶\case4:
printf(\啤酒\ case5:
printf(\威士忌\case6:
printf(\冰糖雪梨\case7:
printf(\咖啡\case8:
printf(\康师傅\default:
printf(\} return0;} 奖学金问题 信息科学技术学院年终评定讲学金,需要对整个年级的学生按照平均分数进行排名.要求:
根据输入的学号和平均成绩,按照平均成绩降序输出学号如果平均成绩相同,按照输入的顺序输出。
输入 算算你心目中的偶像 从一到9选一个你喜欢的数字,先乘三,在加三,再乘三,最后把个位与十位相加,所得结果请看下表。
*注意:
一定要先算了,再看结果#includeintmain(){ inta,b,f,g,h; printf(\scanf(\b=((a*3)+3)*3; f=d/10;g=d;h=f+g; switch(h){ case1:
printf(\比尔盖茨);break;case2:
printf(\王力宏\case3:
printf(