C程序设计-清览题库

Posted on 2022-11-24 21:21  梦中千秋  阅读(144)  评论(0编辑  收藏  举报

清览题库

官方地址

题号:20241

在这里插入图片描述

#include <stdio.h>
  
  int main()
{
  double areaT(double r,double h);//对areaT函数进行声明 
  double r,h,v;
  printf("请输入半径和高:"); 
  scanf("%lf%lf",&r,&h);//输入double类型数据,必须使用%lf,不可以%f 
  v=areaT(r,h);
  printf("r=%f\n",r);
  printf("h=%f\n",h);
  printf("v=%.2f\n",v);//输出结果保留两位小数 
  return 0;
}
 double areaT(double r,double h)
{
  double z;
  z=h*3.14*r*r/3;
  return(z);//返回结果语法 
}  

20242

在这里插入图片描述

#include <stdio.h> 

int main()
{
	double areaT(double a,double b,double h);
	double a,b,h,s;
	scanf("%lf%lf%lf",&a,&b,&h);//带上取地址符&!!!!!!
	s=areaT(a,b,h);//后面有分号
	printf("%.2f",s);
	return 0;
}
double areaT(double a,double b,double h)
{
	double z;
	z=(a+b)*h/2;
	return(z);
}

20251----待修改

在这里插入图片描述

#include <stdio.h>
int main()
{
	int arr[3],i,j;
	for(i=0;i<=2;i++)
	 scanf("%d",&arr[i]);
	for(i=0;i<2;i++)
	{
		for(j=0;j<2-i;j++){
		 if(arr[i]>arr[i+1])
		{
			int t;
			t=arr[i+1];
			arr[i+1]=arr[i];
			arr[i]=t;
		}	
		}
		
	}
	for(i=0;i<=2;i++)
	 printf("%d\t",arr[i]);
	return 0;
}

答案

#include <stdio.h>
int main()
{
	void	swap( int *p1, int *p2 );
	int	n1, n2, n3;
	int	*p1, *p2, *p3;
	scanf( "%d %d %d", &n1, &n2, &n3 );
	p1	= &n1;
	p2	= &n2;
	p3	= &n3;
	if ( n1 > n2 )
		swap( p1, p2 );
	if ( n1 > n3 )
		swap( p1, p3 );
	if ( n2 > n3 )
		swap( p2, p3 );
	printf( "%d %d %d\n", n1, n2, n3 );
	return(0);
}




void swap( int *p1, int *p2 )
{
	int p;
	p	= *p1;
	*p1	= *p2;
	*p2	= p;
}

20229

在这里插入图片描述

#include <stdio.h>
int main()
{
	double sum(double a,double b);
	double a,b,s;
	scanf("%lf%lf",&a,&b);
	s=sum(a,b);
	printf("%.2f",s);
	return 0;
	
 } 
 double sum(double a,double b)
 {
 	double z;
 	z=a+b;
 	return(z);
 } 

20133

在这里插入图片描述

#include <stdio.h>
int main()
{
	int x;
	for(x=0;x<3000;x++)
	if(x%5==1&&x%6==5&&x%7==4&&x%11==10){
		printf("%d",x);
	}
	return 0;
}

20275

在这里插入图片描述

#include <stdio.h>
int main()
{
    void nav(int *q1,int *q2);
    int a,b,*p1,*p2;
    printf("请输入a和b:");
    scanf("%d%d",&a,&b);
    p1=&a;
    p2=&b;
    nav(p1,p2);
    printf("max=%d,min=%d",*p1,*p2);
    return 0;
}
void nav(int *q1,int *q2)
{
    if(*q1<*q2)
    {
        int temp;
        temp=*q1;
        *q1=*q2;
        *q2=temp;
    }
}

20276

在这里插入图片描述方法一

#include <stdio.h>
int a, b, c;
int main()
{
    void nav(int q1, int q2, int q3);
    scanf("%d%d%d", &a, &b, &c);
    nav(a, b, c);
    printf("%d %d %d", a, b, c);
    return 0;
}
void nav(int q1, int q2, int q3)
{
    void rev(int x, int y);
    if (q1 < q2)
    {
        int temp;
        temp = a;
        a = b;
        b = temp;
    }
    if (q1 < q3)
    {
        int temp;
        temp = a;
        a = c;
        c = temp;
    }
    if (q2 < q3)
    {
        int temp;
        temp = c;
        c = b;
        b = temp;
    }
}

方法二

#include <stdio.h>
int main()
{
    void exchange(int *q1,int *q2,int *q3);
    int a,b,c,*p1,*p2,*p3;
    printf("请输入a,b,c的值:");
    scanf("%d%d%d",&a,&b,&c);
    p1=&a;
    p2=&b;
    p3=&c;
    exchange(p1,p2,p3);
    printf("由小到大的排序为%d,%d,%d",a,b,c);
    printf("%d,%d,%d",*p1,*p2,*p3);//指针指向并没有改变,改变的为a,b,c的值
    return 0;
}
void exchange(int *q1,int *q2,int *q3)//排序
{
    void swap(int *j1,int *j2);
    if (*q1>*q2)//不可使用if……else if……else if……只执行一个语句
    {
        /* code */
        swap(q1,q2);
    }
    if (*q1>*q3)
    {
        /* code */
        swap(q1,q3);
    }
    if (*q2>*q3)
    {
        /* code */
        swap(q2,q3);
    }
}
void swap(int *j1,int *j2)//交换值
{
    int temp;
    temp=*j1;
    *j1=*j2;
    *j2=temp;
}

20277

在这里插入图片描述

#include <stdio.h>
int main()
{
    void exchange(int *p, int *q);
    int a[10], n = 10, *p;
    for (int i = 0; i < 10; i++)
    {
        /* code */
        scanf("%d", &a[i]);
    }
    p = a;
    for (int i = 0; i < n / 2; i++)
    {
        exchange((p+i), (p+9-i));
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", a[i]);
    }
    return 0;
}
void exchange(int *p, int *q) //排序
{  
        /* code */
        int temp;
        temp = *p;
        *p=*q;
        *q=temp;
}

20308

在这里插入图片描述

#include <stdio.h>
//声明一个名字为Student的数据类型
// your code
#define M 5
int main()
{
    //your code begin
    struct Student
    {
        int num;
        char *name;
        float score;
    } stu[M] = {{10101, "Zhang", 78}, {10103, "Wang", 98.5}, {10106, "Li", 86}, {10108, "Ling", 73.5}, {10110, "Fun", 100}};
    for (int j = 0; j < M; j++)
    {
        for (int i = 0; i < M - j; i++)
        {
            if (stu[i].score < stu[i + 1].score)
            {
                int num1;
                char *name1;
                float score1;
                num1 = stu[i].num;
                stu[i].num = stu[i + 1].num;
                stu[i + 1].num = num1;

                name1 = stu[i].name;
                stu[i].name = stu[i + 1].name;
                stu[i + 1].name = name1;

                score1 = stu[i].score;
                stu[i].score = stu[i + 1].score;
                stu[i + 1].score = score1;
            }
        }
    }
    for (int i = 0; i < M; i++)
    {
        /* code */
        printf("%d %s %.2f\n", stu[i].num, stu[i].name, stu[i].score);
    }
    //your code end
    return 0;
}
#include <stdio.h>
//声明一个名字为Student的数据类型
// your code
#define M 5
int main()
{
    //your code begin
    struct Student
    {
        int num;
        char *name;
        float score;
    } stu[M] = {{10101, "Zhang", 78}, {10103, "Wang", 98.5}, {10106, "Li", 86}, {10108, "Ling", 73.5}, {10110, "Fun", 100}};
    for (int j = 0; j < M; j++)
    {
        for (int i = 0; i < M - j; i++)
        {
            if (stu[i].score < stu[i + 1].score)
            {
                struct Student temp;
                temp=stu[i];
                stu[i]=stu[i+1];
                stu[i+1]=temp;
            }
        }
    }
    for (int i = 0; i < M; i++)
    {
        /* code */
        printf("%d %s %.2f\n", stu[i].num, stu[i].name, stu[i].score);
    }
    //your code end
    return 0;
}

20309

#include <stdio.h>
int main()
{
    struct student
    {
        int num;
        char* name;
        char sex;
        int age;
    }stu[]={{10101,"Li Lin",'M',18},{10102,"Zhang Fun",'M',19},{10104,"Wang Min",'F',20}};
    printf("No.Name sex age ");
    for (int i = 0; i < 3; i++)
    {
        printf("%d %s %c %d",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
    }  
}
#include <stdio.h>
struct student {
	int num;
	char name[20];
	char sex;
	int age;
};
struct student stu[3]= {{10101,"Li Lin",'M',18},{10102,"Zhang Fun",'M',19},{10104,"Wang Min",'F',20}};

int main() {
	struct student *p;
	printf("No. Name sex age\n");
	for (p=stu; p<stu+3;p++)
    printf("%d %s %c %d\n",p->num, p->name, p->sex, p->age);
	return 0;
}

问题

无法输出

#include <stdio.h>
struct student {
	int num;
	char* name;
	char sex;
	char* address;
}stu;

int main() {
    printf("xuehao1:");
    scanf("%d%s%c%s",&stu.num,&stu.name,&stu.sex,&stu.address);
    printf("%d %s %c %s",stu.num,stu.name,stu.sex,stu.address);
	return 0;
}

在这里插入图片描述
能正确输出,两次回车键

#include <stdio.h>
struct student {
	int num;
	char name[20];
    char sex;
}stu;

int main() {
    printf("开始输入:");
    scanf("%d",&stu.num);
    gets(stu.name);
    stu.sex=getchar();
    printf("输出%d %s %c",stu.num,stu.name,stu.sex);
	return 0;
}