1.有一个函数如下:
输入 x 的值,计算出相应的 y 值。
#include<stdio.h>
int main(){
int x,y;
printf("x=");
scanf("%d",&x);
if(x<5) y=x;
else if(x>=5&&x<15) y=x+6;
else y=x-6;
printf("y=%d",y);
return 0;
}
2.输入一个小写字母,将其转换为大写字母。
#include<stdio.h>
#include<ctype.h>
int main(){
char x;
scanf("%c",&x);
if(islower(x)==0) printf("error");
else printf("%c is upper",x-32);
return 0;
}
3.求一个 3×3 矩阵主对角线元素之和。
#include<stdio.h>
int main(){
int a[3][3];
for(int i=0;i<3;i++){
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
}
for(int i=0;i<3;i++){
printf("%-3d %-3d %-3d\n",a[i][0],a[i][1],a[i][2]);
}
printf("%d",a[0][0]+a[1][1]+a[2][2]);
return 0;
}
4.求 100~999 之间的水仙花数。所谓水仙花数,是指一个 3 位数,它的每位数 字的立方之和等于该数。例如,因为 153=1+5+3,所以 153 为水仙花数。
#include<stdio.h>
int main(){
for(int i=100,j,k,sum;i<1000;i++){
j=i;
sum=0;
while(j){
k=j%10;
sum+=k*k*k;
j/=10;
}
if(sum==i) printf("%d ",i);
}
return 0;
}
5.输入百分制成绩,并把它转换成五级分制,转换公式为:
#include<stdio.h>
int main(){
int i;
scanf("%d",&i);
if(i>=90) printf("A");
else if(i>=80) printf("B");
else if(i>=70) printf("C");
else if(i>=60) printf("D");
else printf("E");
return 0;
}
6. 斐波拉契数列递归实现的方法如下:
int Funct( int n )
{
if(n==0) return 1;
if(n==1) return 1;
return Funct(n-1) + Funct(n-2);
}
请问,如何不使用递归,来实现上述函数?
#include<stdio.h>
int main(){
int a[20];//计算数列前二十个
a[0]=1,a[1]=1;
printf("1 1 ");
for(int i=2;i<20;i++){
a[i]=a[i-1]+a[i-2];
printf("%d ",a[i]);
}
return 0;
}
7.编写一个程序,将一个数组中的值按逆序重新存放。例如,原来顺序为 8,6,5,4,1。要求改为 1,4,5,6,8
#include<stdio.h>
int main(){
int a[10]={8,6,10,4,7,11,22,2,77,13};
//每次找到剩下的最小的,把它放到最前面
for(int i=0,k;i<9;i++){
int min=a[i],pos=i;
for(int j=i+1;j<10;j++){
if(min>a[j]) min=a[j],pos=j;
}
k=a[i],a[i]=min,a[pos]=k;
for(int i=0;i<10;i++){
printf("%-4d",a[i]);
}
printf("\n");
}
return 0;
}
8.编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以 则输出它的面积和三角形类型(等边、等腰、直角三角形)。
#include<stdio.h>
#include<math.h>
int main(){
int a,b,c,i;
scanf("%d%d%d",&a,&b,&c);
//先把三条边从小到大排序,可以减少后面条件选择
if(a>b) {i=a,a=b,b=i;}
if(a>c) {i=a,a=c,c=i;}
if(b>c) {i=c,c=b,b=i;}
//验证三边关系
if(a+b<=c|c-a>=b|c-b>=a) printf("error\n");
double p=(a+b+c+0.0)/2,s;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("s=%.2f\n",s);
if(a==b&&a==c) printf("等边");
if(a==b) printf("等腰");
int A,B,C;
A=a*a,B=b*b,C=c*c;
if(A+B==C) printf("直角");
return 0;
}
9.. 从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数 时结束输入。
#include<stdio.h>
int main(){
int grade,min,max;
scanf("%d",&grade);
min=max=grade;
while(grade>=0){
if(grade>max) max=grade;
if(grade<min) min=grade;
scanf("%d",&grade);
}
printf("min=%d,max=%d",min,max);
return 0;
}
10.编写函数将化氏温度转换为摄氏温度,公式为 C=(F-32)*5/9;并在主函 数中调用。
#include<stdio.h>
double fun(double x){
double y;
y=(x-32)*5/9;
return y;
}
int main(){
double f,c;
scanf("%lf",&f);
c=fun(f);
printf("f=%.2f,c=%.2f",f,c);
return 0;
}