1、编写一个程序,输入a、b、c三个值,输出其中最大值。(8分)
(基础题)
#include <stdio.h>
int max(int *a,int *b,int *c,int *imax);
int main()
{
int a,b,c,imax;
printf("请输入三个值:\n");
scanf("%d %d %d",&a,&b,&c);
imax=a;
max(&a,&b,&c,&imax);
printf("max:%d",imax);
}
int max(int *a,int *b,int *c,int *imax)
{
if(*b>*imax)
*imax=*b;
else if(*c>*imax)
*imax=*c;
return *imax;
}
运行结果:
2、输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。(10 分)
(基础题)
#include <stdio.h>
#include <string.h>
int main()
{
int num,gw,count=0;//定义正整数,该数个位,已经计数器count
int str[100];//定义数组用来存放该数
printf("请输入一个正整数:\n");
scanf("%d",&num);
for(int i=0;num!=0;i++)//将该数个位取出,依次存放至数组
{
gw=num%10;//取个位
num=num/10;//去除个位后的数
str[i]=gw;
count++;//计数
}
for(int j=0;j<count;j++)
{
printf("%d",str[j]);//直接输出即可
}
}
运行结果:
3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。(14 分)
(入门题)
#include <stdio.h>
#define PI 3.14
int main(){
double r,h;
double c,m,v;//周长,面积,体积
printf(" 请输入半径和高:\n");
scanf("%lf%lf",&r,&h);
c=PI*2*r;
m=PI*r*r;
v=m*h;
printf("圆周长:%.2lf\t圆面积: %.2lf\t圆柱体积:%.2lf\t",c,m,v);
}
运行结果:
4、编写一个函数实现将字符串stl 和字符串st2合并,合并后的字符串按其ASCI码值从小到大进行排序,相同的字符在新字符串中只出现一次。(18 分)
(中等题,删除重复字符处注意细节)
#include <stdio.h>
#include <string.h>
char cat(char *,char *);
int main()
{
char st1[60],st2[30];
printf("输入字符串st1:\n");
gets(st1);
printf("输入字符串st2:\n");
gets(st2);
cat(st1,st2);
//printf("\n简化后:%s",st1);
}
char cat(char st1[],char st2[])
{
int i,j,a,b;
char cyt[100];
a=strlen(st1);
b=strlen(st2);
for(i=a,j=0;i<a+b;i++,j++)//合并
{
st1[i]=st2[j];
}
st1[a+b]='\0';
printf("合并后:\n%s",st1);
for(i=0;i<strlen(st1)-1;i++)//冒泡排序
{
for(j=0;j<strlen(st1)-i-1;j++)
{
if(st1[j]>st1[j+1])
{
char t=st1[j];
st1[j]=st1[j+1];
st1[j+1]=t;
}
}
}
printf("\n排序后:\n%s",st1);
for(i=0;i<strlen(st1);i++)//去除相同字符,先双重循环对比
{
for(j=i+1;j<strlen(st1);j++)
{
if(st1[i]==st1[j])//如果出现相同字符,将后一个字符向前移动,实现删除
{
for(int k=i;k<strlen(st1);k++)
{
st1[k]=st1[k+1];
}
j--;//此处避免连续相同字符(重点)
}
}
}
printf("\n去除相同字符:\n%s",st1);
}
运行结果:
5、输入5*5的数组,编写程序实现: (20分)
(1)求出对角线上各元素的和;
(2)求出对角线上行、列下标均为偶数的各元素的积:
(3)找出对角线上其值最大的元素和它在数组中的位置。
(按照主对角线求解)
#include <stdio.h>
int main()
{
int a[5][5];
int str[5];
int i,j,c,d;
int he=0,ji=1;
printf("输入小矩阵:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d\t",a[i][j]);
}
puts("\n");
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==j)
{
he+=a[i][j];
}
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==j&&(i%2==0)&&(j%2==0))
{
ji*=a[i][j];
}
}
}
int max=a[0][0];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==j&&a[i][j]>max)
{
max=a[i][j];
c=i,d=j;
}
}
}
printf("\n对角线最大值:%d\t下标a[%d][%d]",max,c,d);
printf("\n矩阵对角线和:%d\n",he);
printf("\n矩阵偶对角线积:%d\n",ji);
}
运行结果: