基础10题
1、判断三角形(是否是三角形,等边,等腰,直角)
//判断三角形
#include<stdio.h>
int main(){
double a,b,c;
printf("请输入三角形的三边:\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a>0&&b>0&&c>0){
if(a+b>c&&b+c>a&&a+c>b){
if(a==b&&b==c){
printf("该三角形为等边三角形");
}
else if (a==b||a==c||b==c){
printf("该三角形是等腰三角形");
}
else if (a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b){
printf("该三角形为直角三角形");
}
else printf("该三角形为普通三角形");
}
else printf("不能构成三角形");
}
else printf("输入有误");
return 0;
}
2、计算1000以内的完数
计算1-1000内的完数
#include <stdio.h>
int main()
{
int num, sum, i;
for(num = 1; num <= 1000; num ++)
{
sum = 0; //每次判断一个数都要将 sum 初始化为 0
//要记住因子不能为本身 (因子包括1不包括本身。)
for (i = 1; i < num; i++)
{
if (num % i == 0) //num 能被 i 整除,说明 i 是 num 的因子
{
sum += i; //累加因子
}
}
if(sum == num)
{
printf("%d\n", num);
}
}
return 0;
}
3、计算最小公倍数
计算最小公倍数
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int k=(a>b?a:b);
while(1)
{
if(k%a==0&&k%b==0)
{
break;
}
k++;
}
printf("%d\n",k);
}
4、调用函数fun,分别计算数组中的奇数成员和偶数成员的和,用指针实现值传递
#include<stdio.h>
#define N 5
void fun(int *p,int n);
int main(){
int arr[N],*p1;
int i;
for(i=0;i<N;i++) scanf("%d",&arr[i]);
p1=arr;
fun(p1,N);
return 0;
}
void fun(int *p,int n){
int i;
int sum1=0,sum2=0;
for(i=0;i<n;i++){
//注意这里i要加1
if((i+1)%2!=0){
sum1+=*(p+i);
}
else {
sum2+=*(p+i);
}
}
printf("奇数成员和:%d\n偶数成员和:%d",sum1,sum2);
}
5、用结构体实现录入学生信息(学号,姓名,三科目成绩)求平均分并输入平均分最高的学生信息
#include<stdio.h>
struct Student {
int num;
char name[20];
float chinese;
float math;
float english;
float averge;
};
int main() {
int i;
struct Student stu[3];
float averg1,averg2,averg3;
for(i=0; i<3; i++) {
printf("请输入第%d个同学的信息:\n",i+1);
scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].chinese,&stu[i].math,&stu[i].english);
stu[i].averge=(stu[i].chinese+stu[i].math+stu[i].english)/3;
}
int k=stu[0].averge,k2=0;
for(i=1; i<3; i++) {
if(stu[i].averge>k) {
k2=i;
k=stu[i].averge;
}
}
printf("学号:%d\n姓名:%s\n语文:%f\n数学:%f\n英语:%f\n平均分:%f",stu[k2].num,stu[k2].name,stu[k2].chinese,stu[k2].math,stu[k2].english,stu[k2].averge);
return 0;
}
6、冒泡排序
//冒泡排序 (小到大,大到小只需要把下面的if语句里面的大于改成小于)
#include<stdio.h>
int main() {
int a[10];
int i,j,t;
printf("请输入10个数:\n");
for(i=0; i<10; i++)
scanf("%d",&a[i]);
for(i=0; i<9; i++) {
for(j=0; j<9-i; j++) {
if(a[j]>a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("排序后:\n");
for(i=0; i<10; i++)
printf("%d ",a[i]);
}
7、选择排序
//选择排序
#include<stdio.h>
int main() {
int arr[5],i,j,t,min;
printf("请输入五个数:\n");
for(i=0; i<5; i++)
scanf("%d",&arr[i]);
for(i=0; i<4; i++) {
min=i;
for(j=i+1; j<5; j++) {
if(arr[j]<arr[min]) min=j;
}
t=arr[i];
arr[i]=arr[min];
arr[min]=t;
}
printf("排序后:\n");
for(i=0; i<5; i++) {
printf("%d ",arr[i]);
}
return 0;
}
8、用指针与数组 实现字符串反转
#include<stdio.h>
#include<string.h>
void fun(char *p1,char *p2);
int main() {
int i;
char arr[100],*p=arr;
scanf("%s",arr);
fun(p,p+strlen(arr)-1);
for(p=arr; *p!='\0'; p++)
printf("%c",*p);
return 0;
}
void fun(char *p1,char *p2) {
char t;
for(; p1<p2; p1++,p2--) {
t=*p1;
*p1=*p2;
*p2=t;
}
}
9、有一个3X4 的矩阵,要求编程序求出其中值最大的那个元素值,以及其所在的行号和列号
#include<stdio.h>
int main() {
int a[3][4];
int i,j,max,row=0,colum=0;
for(i=0; i<3; i++) {
for(j=0; j<4; j++) {
scanf("%d",&a[i][j]);
}
}
max=a[0][0];
for(i=0; i<3; i++) {
for(j=0; j<4; j++) {
if(a[i][j]>max) {
max=a[i][j];
row=i;
colum=j;
}
}
}
printf("最大的值为:%d\n行号为:%d\n列号为:%d",max,row,colum);
return 0;
}
10、输入一个字符串,并输入一个需要删除的字符,得到删除字符后的字符串
#include<stdio.h>
#define N 100
int main() {
char arr[N],arr1[N];
int i,j=0;
int ch;
printf("请输入一个字符串:\n");
scanf("%s",arr);
printf("请输入一个需要删除的字符:\n");
//这里不放一个getchar()的话字符会被回车吃掉
getchar();
scanf("%c",&ch);
for(i=0; arr[i]!='\0'; i++)
if(arr[i]!=ch)
arr1[j++]=arr[i];
//这里加不加无所谓,因为是重新定义的另外一个数组
arr1[j]='\0';
printf("%s",arr1);
return 0;
}
11、输入两个数,求最小公倍数和最大公约数
//求最小公倍数,最大公约数
#include<stdio.h>
int main() {
int n,m,i,j;
scanf("%d%d",&n,&m);
i=n>m?n:m;
for(i;; i++) {
if(i%n==0&&i%m==0)break;
}
j=n>m?m:n;
for(j; j>0; j--) {
if(n%j==0&&m%j==0)break;
}
printf("最小公倍数为:%d\n最大公约数为:%d",i,j);
}
持续更新中。。。。。