学校的C语言题型

C语言题目

函数类

一、排列顺序的函数

1、单行顺序颠倒函数

#include <stdio.h>

#define N 10

void fun(int a[], int n)
{
	int i, j;
	int temp = 0;
	for (i = 0; i < n - 1; i++)
	{
		for (j = 0; j < n - 1 - i; j++)
		{
			if (a[j] < a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
}

int main(void)

法2

#include<stdio.h>

int main()

{

int num;

scanf("%d",&num);          

int a,i;

for(i = 0;num > 0;i++)

{

a = num % 10;

printf("%d",a);                        

num = num/10;

}

2、二维数组颠倒函数
void exchange(int a[3][3])

{

    int i,j,t;

    for(i=0;i<2;i++)

    {

        for(j=1;j<3;j++)

        {

            t=a[i][j];

            a[i][j]=a[j][i];

            a[j][i]=t;

        }

    }

}

3、数之间按照大到小顺序排列的函数
void sort(int a[], int n)
{
	int i, j;

	int temp = 0;

	for (i = 0; i < n - 1; i++)           //n-1的原因是数组从a[0]开始的
	{
		for (j = 0; j < n - 1 - i; j++)   //保证每个数之间都能进行比较
		{
			if (a[j] < a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
}

二、计算阶乘的函数

int fac(int n)

{

if (n == 1)

     return 1;
     
else

     return fac(n - 1)*n;     //这里返回的是fac(n-1),即会循环求底下的数

}

三、计算字符串长度的函数

int length(char *p)           //*p为指针,即指向等下输入的字符   

{

   int d=0;

   while(*p!='\0')

   {

     d++;

     p++;  

   }  

   return (d);

}        

非函数类

一、利用到数学符号


#include<math.h>  //在开头添加才可以利用以下数学符号
pow(x,y)          //表示x^y。
sqrt()            //表示根号

二、简单的数学题目


一、求下列表达式的值。
1/3+3/5+5/7+……+n/(n+2) //n为任意一个奇数

#include <stdio.h>

int main()
{
	float x, y, i, sum=0, n;       //分数要利用到float

	printf("请输入n的值:\n");

	scanf_s("%f", &n);
	
	for (i = 0; i < n; i++)
	{
		x = 1 + 2 * i;

		y = 3 + 2 * i;

		sum += x / y;
	}

	printf("值为:%.2f\t", sum);

	return 0;
}

二、求2-100间的所有素数
素数:一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。

#include<stdio.h>

int main()

{
	int i, j;

	for (i = 0; i <= 100; i++)

	{
		for (j = 2; j <= i; j++)
		{
			if (i % j == 0)       //利用了只能被自己整除这一性质。
			{
				break;
			}
		}
		if (i == j)
		{

			printf("%d ", i);

		}
	}
 
 	return 0;
} 

三、Fibonacci数列的输出,Fibonacci数列中的每项数据定义的规则如下:
即:1 1 2 3 5 8 13 21 …… 请输出前20项数据,并每行显示5个数

#include <stdio.h>
int main()
{
	int a[20], i;

	a[0] = a[1] = 1;                       //定义前两项

	for (i = 2; i < 20; i++)               //定义后面项的值
	{
		a[i] = a[i - 1] + a[i - 2];
	}
	for (i = 0; i < 20; i++) 
	{
		printf("%4d ", a[i]);              //%4d表示每个数字之间隔四个空

		if ((i + 1) % 5 == 0)              //表示每个五个数字就换行

			printf("\n");
	}
	return 0;
}

:是否使用数组?
①当题目中的数用自己定义的变量很棘手时,考虑数组。


三、生活问题

一、将一张100元钱,换成10元,20元,50元零钱,问有多少种不同的换法(假设三种零钱每种都可不出现)。(利用穷举法)

#include<stdio.h>

int main()
{

	int i1, i2, i3, n;
	n = 0;
	for (i1 = 0; i1 <= 2; i1++)                                           //++i的意思是i的值先+1再运算括号内。
	{
		for (i2 = 0; i2 <= 5; i2++)
		{
			for (i3 = 0; i3 <= 10; i3++)                                  //运用++i与i++作用相同   
			{
				if (100 == 50 * i1 + 20 * i2 + 10 * i3)
				{
					n++;
					printf("方案%d:50元:%d张 20元:%d张 10元:%d张\n",
						n, i1, i2, i3);
				}
			}
		}
	}

	printf("共有%d种方案。\n", n);

	return 0;
}

:此处的for叠加句型原理是:
最里面的for先循环,之后倒数第二个for的i+1后最后一个for在一个轮回,保证每个可能性都被计算到。


二、闰年问题

#include<stdio.h>
int main()
{
	int year;

	printf("请输入年份:");

	scanf_s("%d", &year);

	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{
		printf("该年是闰年\n");
	}

	else
	{
		printf("该年不是闰年,请重新输入年份");
	}

	return 0;
}

:判断是否为闰年的依据
①该年份可以被4整除但不能被100整除。
②该年份可以被400整除。
③整除的意思为可以一直除到0


四、数组问题

一维数组

二维数组

1、键盘输入一个数据,得到一个3*4矩阵,并找出矩阵里元素的最大值

#include<stdio.h>
int main()
{
	long  a[3][4], i, j, mi,mj, t;

	printf("请输入数据:");

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			scanf_s("%d", &a[i][j]);//得到数据
		}
	}   

	mi = mj = 0;                //利用中间变量来替换最大值输出

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (a[mi][mj] < a[i][j])
			{
				mi = i;
				mj = j;
			}
		}

	}

	printf("max=%d\n", a[mi][mj]);


	return 0;
}

最开始想法是用 t 换位,
但臃肿

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值