题目来自练习册和牛客网的一些编程题目整理
函数都有返回值 且只有一个返回值
声明类型为void 可以返回空值
若调用一个函数中没有return语句 返回一个不确定的值
形参是动态变量 实参和形参之间的数据传递方式为 实参到形参的单向值传递
形参的值发生改变 不会影响主调函数中的实参的值
存储类别:
static 静态存储 调用结束后不释放 下一次继续使用
extern 可以在一个文件中引用另一个文件中定义的变量或者函数
auto 自动变量 调用结束后自动释放
register 变量存储在寄存器中 而非内存中
嵌套调用:调用一个函数的过程调用另一个函数
递归调用:调用一个函数的过程直接或间接调用函数本身
每一个变量和函数两个属性:数据类型和数据的存储类别
函数两部分组成:函数首部和函数体
全局变量采用静态存储方式
汉诺塔 递归函数
规律就是:f(n)=2*f(n-1)+1
#include<stdio.h>
int Han(int x){
if(x==1){
return 1;
} else{
return 2*Han(x-1)+1;
}
}
int main(){
//汉诺塔
//规律f(n)=2*f(n-1)+1
int n,num;
scanf("%d",&n);
num=Han(n);
printf("%d个圆盘需要移动%d次",n,num);
}
不死神兔问题 斐波那契数列 递归函数
有一对兔子,从出生后第 3 个月起每个月都生一对兔子
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?
#include<stdio.h>
int fun(int n) {
if(n<=2){
return 1;
} else{
return fun(n - 1) + fun(n - 2);
}
}
int main() {
//有一对兔子,从出生后第 3 个月起每个月都生一对兔子
// 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?
//斐波那契数列
int n;
scanf("%d", &n);
printf("总共 %d 对", fun(n));
}
#include<stdio.h>
void fun(int x) {
if (x / 3 > 0)
fun(x / 3);
printf("%d", x);
}
int main() {
fun(6);
printf("\n");
}
#include<stdio.h>
#include<string.h>
int main(){
//键盘输入两个字符串,将这两个字符串进行拼接后输出
char arr1[10];
char arr2[10];
gets(arr1);
gets(arr2);
puts(strcat(arr1,arr2));
#include<stdio.h>
void swap(int *x,int *y){
int tem=0;
tem= *x;
*x=*y;
*y=tem;
}
int main(){
// 编写一个函数,实现两个整数的交换,要求采用指针的方式实现
int n,m;
scanf("%d\n",&n);
scanf("%d",&m);
swap(&n,&m);
printf("%d %d",n,m);
}
#include<stdio.h>
long long factorial(int n){
long long sum=1;
for (int i = 1; i < n+1; ++i) {
sum*=i;
}
return sum;
}
int main(){
// 编写一个函数 long long factorial(int n),用于计算 n 的阶乘。(要求使用递归实现)
int n;
scanf("%d",&n);
printf("%lld",factorial(n));
}
#include<stdio.h>
//输入一个只包含'a','b','c'的字符串,问'a','b','c'分别出现了多少次。
int main() {
int a = 0, b = 0, c = 0;
char d;
while ((d = getchar()) != '\n') {
if (d == 'a')
a++;
else if (d == 'b')
b++;
else if (d == 'c')
c++;
}
printf("%d %d %d", a, b, c);
return 0;
}
#include<stdio.h>
int my_pow(int x,int n){
int fang=1;
for (int i = 1; i < n+1; ++i) {
fang*=x;
}
return fang;
}
int main(){
//函数的方式实现pow()求x的n次方
int x,n;
scanf("%d",&x);
scanf("%d",&n);
printf("%d",my_pow(x,n));
}
#include<stdio.h>
int a = 0, b = 0;
void fun() {
int a = 5;
printf("%d,%d;", a, b);
}
void main() {
b = 5;
fun();
printf("%d,%d\n", a, b);
}
静态局部变量默认值为0
#include<stdio.h>
void fun(){
static int m;
m+=5;
printf("%d ",m);
}
void main() {
int n;
for (int n = 1; n < 5; ++n)
fun();
printf("\n");
}
#include<stdio.h>
int a = 1;
int f(int n) {
static int a = 2;
int t = 0;
if (n % 2) {
static int a = 3;
t += a++;
} else {
static int a = 4;
t += a++;
}
return t + a++;
}
void main() {
int s = a, i;
for (i = 0; i < 2; i++)
s += f(i);
printf("%d\n", s);
}
#include<stdio.h>
f2()局部数组 修改值对全局数组无影响
f1()为全局数组赋值
f3()打印值
#define M 5
int a[M];
void f2() {
int a[M], i, n;
n = 3;
for (int i = 0; i < n; ++i)
a[i] = i;
}
void f1() {
for (int i = 0; i < M; ++i)
a[i] = i + i;
}
void f3(int a[]) {
int i;
for (int i = 0; i < M; ++i)
printf("%d,", a[i]);
}
void main() {
f1();
f3(a);
f2();
f3(a);
printf("\n");
}
#include<stdio.h>
//转为大写
void fun(char c[]) {
int i = 0;
while (c[i]) {
if (c[i] >= 'a' && c[i] <= 'z')
c[i] -= ('a' - 'A');
i++;
}
}
void main() {
char s[81];
gets(s);
fun(s);
puts(s);
}
下标为奇数的字符右移到下一个奇数位置 最右边被移出字符串的字符放到第一个奇数位置
下标为偶数的字符不动 例如:abcdefgh 结果ahcbedgf
#include<stdio.h>
void f(char s[]) {
int i, n, k;
char c;
n = 0;
for (i = 0; s[i] != '\0'; i++)
n++;
if (n % 2 == 0)
k = n - 1;
else
k = n - 2;
c = s[k];
for (i = k - 2; i >= 1; i -= 2)
s[i + 2] = s[i];
s[1] = c;
}
void main() {
char s[20] = "abcdefgh";
f(s);
printf("%s", s);
}
#include <stdio.h>
// s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+4+....+n) 计算结果
// 函数来计算前n个自然数的和
double sum_of_n(int n) {
return (double) n * (n + 1) / 2;
}
// 函数来计算给定的序列s
double calculate_s(int n) {
double s = 0.0;
for (int i = 1; i <= n; i++) {
s += 1.0 / sum_of_n(i);
}
return s;
}
int main() {
int n;
scanf("%d", &n);
double result = calculate_s(n);
printf("%f\n", result);
return 0;
}
求输入数包含整数的位数:
#include <stdio.h>
int countDigits(int number) {
int count = 0;
while (number != 0) {
number /= 10;
count++;
}
return count;
}
int main() {
int number;
scanf("%d", &number);
int digitCount = countDigits(number);
printf("该整数包含 %d 位\n", digitCount);
return 0;
}
标签:练习题,main,int,47,void,C语言,++,printf,include
From: https://www.cnblogs.com/gaodiyuanjin/p/18209844